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