是否可以使用iptables在具有动态IP的路由器上设置NAT环回?


1

我已经设置了连接到路由器的Raspberry Pi家庭服务器。我有一个动态IP。我可以使用内部IP(192.168.0.8)访问网络中的服务器。我还可以使用网络的公共IP和我创建的noip.com域访问网络之外的服务器。

问题是我无法使用公共IP地址或noip.com域将SSH放入网络内部的服务器。但是,我可以奇怪地在网络浏览器中(在网络上)导航到noip.com域,它为我提供了“有效”的默认Apache页面(这不是由于缓存,我已经检查了一些设备)。

经过一段时间的Google搜索后,我发现需要在路由器上设置NAT环回。我的路由器(由ISP提供的路由器)似乎不支持通过其Web界面(即通过192.168.0.1)进行NAT环回。

但是,已启用对路由器的Telnet访问。它运行busybox,并且可以使用“ iptables”命令。

我在ISP网站的论坛上找到了由客户编写的命令:http : //www.skyuser.co.uk/forum/sky-router/47273-nat-loopback-dlink-2640s.html

我将腻子用于telnet,但您可以使用任何腻子。

我的服务器是192.168.0.x(我的Web服务器),wan ip是2.xxx(用您自己的服务器替换)服务器端口443(对我来说是https),但您可能希望成为不同的iptables,您需要2个命令:

iptables -t nat -A POSTROUTING -d 192.168.0.150 -s 192.168.0.0/24 -j SNAT --to-source 192.168.0.1
iptables -t nat -A PREROUTING -d 2.x.x.x -m tcp -p tcp --dport 443 -j DNAT --to-destination 192.168.0.x

您可以省略--dport 443,然后将所有端口发送到您的服务器。

现在的问题是,每当您的wan ip更改时,您都必须重做第二个命令(任何人都知道这种情况发生的频率吗?)另外,在重启路由器时,您也会丢失此命令。

第二个命令的该部分-“ iptables -t nat -A PREROUTING -d 2.xxx”-包含公用IP地址:如何使它仅表示“当前公用IP地址”?

如果可能的话,由于所涉及的解决方案,这会减慢对路由器的所有请求吗?

Answers:


1

iptables解析为DNS名称,因此在您的规则中,您可以使用noip.com DNS名称而不是2.xxx iptables

iptables -t nat -A PREROUTING -d whatever.noip.com -m tcp -p tcp --dport 443 -j DNAT --to-destination 192.168.0.x
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.