接口 IP 在公共范围内,错误 IP 发送到 noip

接口 IP 在公共范围内,错误 IP 发送到 noip

RPi3 通过 3G 加密狗连接到互联网。wwan0接口 IP 处于公共范围内,可从外部访问,并且自从我获得 SIM 卡以来就没有改变过。到目前为止一切顺利,对吧?

让我担心的是,可能经过 NAT 的 IP 被发送到 noip,而不是接口 IP,除非知道 IP,否则 RPi 提供的站点无法访问。有没有办法将“正确的”wwan0接口 IP 发送到 noip?

第二个担心是,当 RPi 被移出现场(测量室内温度)时,加密狗将使用不同的移动信号塔,并且 iface 的 IP 可能wwan0会发生变化。我担心的是,当 IP 发生变化时,我将不得不编写一个自定义脚本来通知 noip 有关接口 IP 的信息,或者发送某种其他通知。

欢迎任何反馈!

答案1

根据您的描述,我猜您的运营商设置了代理以优化移动数据速度(例如,可以减小图像大小)。这意味着您的 HTTP 流量将通过运营商端的代理,该代理很可能经过 NAT。

避免这种情况的一种方法是向 noip 发送一个明确的 IP(从他们的文档):

curl http://username:[email protected]/nic/update?hostname=mytest.example.com&myip=1.2.3.4

这可以很容易地集成到 shell 脚本中:

#!/bin/bash

IP=$(/sbin/ip -4 a l wwan0 | grep 'inet ' | grep -oP '(?<=inet\s)\d+(\.\d+){3}')

curl "http://username:[email protected]/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

相关内容