是否有脚本在家用路由器中添加端口转发规则?


15

TL; DR:我正在寻找脚本或cron作业,它们将定期在linux主机(树莓派上的fedora)上运行,这将检查路由器中是否仍然存在端口转发规则,如果不存在则将其添加。目的是始终通过SSH,VNC和传输Web界面从家庭网络之外的Internet上的任何计算机访问raspberry pi linux主机。设置如下:

路由器

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

设置

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

主持人

带有Fedora Linux的raspberry pi ARM主机,始终在启动时与ssh,vnc,传输守护程序服务器一起运行。它还具有no-ip.com dyndns免费DUC(动态更新客户端),该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,传输守护程序)来设置规则。

问题

当该路由器(路由器)重新启动时,或者即使电源出现尖峰,并且UPS必须立即介入,并且通常会动态从我的ISP获取一个不同的外部IP时,它也会失去上述端口转发规则。

要求

可以在我的fedora linux pi上运行的脚本或cron作业,该脚本或cron作业可以登录到我的路由器,并定期轮询该端口转发规则的存在并在缺少该规则时创建它。帮助表示赞赏。


1
路由器是否支持通过UPnP设置端口转发?(在Windows / mac / linux中运行的程序当前可以自己自动设置端口转发规则吗?)
Scott Chamberlain

我认为是因为pcwintech.com/showimage?file=files/screenshots/beetel-440txi/… 除了维基百科页面之外,我对UPnP的了解并不多。搜寻该路由器类型(有问题)导致我进入该页面。
PKM

Answers:


18

MiniUPnP是一个命令行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

可以,但是添加它的正确位置是什么,以便命令在启动时运行?
Ciasto piekarz '16

1
您可以@reboot <cmd>在crontab中使用
Martin

1
miniupnpc应提供与raspbian用apt
斯科特

并且upnpc(如果从运行该服务的计算机上运行)将使用本地地址,因此不需要ifconfig / grep
Scott

ifconfig ...部分对我不起作用,所以我ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'按照这个答案使用
Helder S Ribeiro
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.