有没有一个脚本可以在家用路由器上添加端口转发规则?

有没有一个脚本可以在家用路由器上添加端口转发规则?

总结:我正在寻找一个脚本或一个 cron 作业,它将定期在 Linux 主机(Raspberry Pi 上的 Fedora)上运行,它将检查路由器中是否仍然存在端口转发规则,如果不存在则添加它。目的是始终能够通过 SSH、VNC 和传输 Web 界面从家庭网络之外的互联网上的任何机器访问 Raspberry Pi Linux 主机。设置如下:

路由器

Beetel 440Tx1 ADSL2 路由器+调制解调器+wifi。

设置

路由器已连接到互联网(ISP 宽带)并具有动态外部 IP。它为我的计算机提供了一个私人家庭网络,内部 IP 192.168.xy 也充当 DHCP。

主持人

带有 Fedora Linux 的 raspberry pi ARM 主机,始终运行 ssh、vnc,传输守护程序服务器在启动时启动。它还具有 no-ip.com dyndns 免费 DUC(动态更新客户端),可定期检查外部 IP 并将其绑定到主机字符串。因此,我总是可以通过解析 dyndns 字符串(如 myrouter.no-ip.org)来找到路由器的外部 IP。pi 有一个静态内部 IP,如 192.168.1.z。

转发端口

只有通过以太网电缆或受密码保护的 Wi-Fi 连接到该网络时,才必须使用带有出厂凭据的 GUI/浏览器登录路由器

http://192.168.1.1/html/index1.html

我通过登录设置规则,将外部 IP 上端口 22、5900、9091 的任何流量转发到 192.168.1.z 上的 pi 上的相应监听程序(sshd、vncserver、transmission-daemon)。

问题

此路由器在重新启动时会丢失上述端口转发规则,或者即使出现电力峰值且 UPS 必须暂时介入,也会通常会从我的 ISP 动态获取不同的外部 IP。

要求

可以在我的 fedora linux pi 上运行的脚本或 cron 作业可以登录到我的路由器并定期轮询该端口转发规则是否存在,如果不存在则创建它。非常感谢您的帮助。

答案1

迷你UPnP是一个命令行 UPnP 客户端,允许您启用端口转发。源代码可用,因此您应该能够将其编译到 Pi 中。

我认为这是您需要的语法,但我没有机器可以测试它。您只需将以下内容放入脚本中,该脚本将为您设置 uPnP 端口

upnpc -a `ifconfig wlan0 | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1` 22 22 TCP
upnpc -a `ifconfig wlan0 | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1` 5900 5900 TCP
upnpc -a `ifconfig wlan0 | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1` 9091 9091 TCP

相关内容