Linux 路由器用于将外部流量重定向到内部设备,但内部设备需要使用另一个端口进行响应

Linux 路由器用于将外部流量重定向到内部设备,但内部设备需要使用另一个端口进行响应

我正在外部无线电/调制解调器和我的设备之间的路由器上工作,其中路由器使用 ppp 协议与无线电建立拨号连接,并在接收到的无线电 IP 和我的设备的 IP 之间设置 iptables 规则。

我有以下路线:

Destination     Gateway            Genmask         Flags Metric Ref    Use Iface
default         192.168.1000.101   0.0.0.0         UG    0      0        0 ppp0
192.168.100.101 *                  255.255.255.255 UH    0      0        0 ppp0
192.168.164.0   *                  255.255.255.0   U     0      0        0 eth0

以下是我的 iptables 规则:

iptables -A INPUT -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A FORWARD -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p tcp -j DNAT --to 192.168.0.110
iptables -t nat -A PREROUTING -i ppp0 -p udp -j DNAT --to 192.168.0.110
iptables -t nat -A POSTROUTING --source 0/0 -o ppp0 -j MASQUERADE

通过这些规则,我可以访问我的设备上的所有内容,如 telnet、web 服务器以及一些其他使用高端口的通信。

我的问题是我需要使用带有目标端口的源端口连接到我的设备,这不是问题,但我的设备需要使用它创建的另一个端口进行响应才能继续进行此通信。

例如,我尝试使用源端口 2000 和目标端口 2001 建立连接,并且我的设备的响应使用源端口 21550 和目标端口 2000 返回。但响应没有返回到连接到无线电另一端的客户端。

通过在路由器内部使用 tcpdump,我看到了设备响应,但我无法弄清楚如何处理 iptables 规则中的此端口更改以将其发送回连接到无线电另一端的客户端。

任何帮助将不胜感激!

相关内容