Интерфейсный IP в публичном диапазоне, неверный IP отправлен на noip
RPi3 подключен к интернету через 3G ключ. wwan0
IP-адрес интерфейса находится в открытом доступе, доступен снаружи и не изменился с тех пор, как я получил SIM-карту. Пока все хорошо, правда?
Что меня беспокоит, так это то, что на noip отправляется, вероятно, IP-адрес NAT, а не интерфейсный, что делает сайт, обслуживаемый RPi, недоступным, если IP не известен. Есть ли способ отправить "правильно", wwan0
IP-интерфейс для noip?
Второе беспокойство заключается в том, что когда RPi будет перемещен за пределы площадки (для измерения температуры в помещении), ключ будет использовать другую мобильную мачту и, вероятно, IP-адрес wwan0
iface изменится. Я боюсь, что мне придется сделать собственный сценарий, чтобы уведомить noip об IP-адресе интерфейса при изменении IP-адреса или каком-либо другом уведомлении.
Любые отзывы приветствуются!
1 ответ
Исходя из вашей истории, я предполагаю, что у вашего оператора есть прокси-сервер для оптимизации скорости мобильных данных (например, что уменьшает размеры изображения). Это означает, что ваш HTTP-трафик будет проходить через прокси на стороне оператора, который вполне может быть преобразован в NAT.
Одним из способов избежать этого является отправка явного IP-адреса на noip (из их документации):
curl http://username:password@dynupdate.no-ip.com/nic/update?hostname=mytest.example.com&myip=1.2.3.4
Это может быть легко интегрировано в скрипт оболочки:
#!/bin/bash
IP=$(/sbin/ip -4 a l wwan0 | grep 'inet ' | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
curl "http://username:password@dynupdate.no-ip.com/nic/update?hostname=mytest.example.com&myip=${IP}"
Сделайте этот скрипт исполняемым и запустите его из cron
каждые 10 минут или около того:
chmod 755 /home/user/update_noip.sh
crontab -e
# Add:
*/10 * * * * /home/user/update_noip.sh >/dev/null 2>&1