【发布时间】:2014-10-21 14:18:07
【问题描述】:
我有这样的网络:
Internet <===> Modem/Router <---------> Switch
1.2.3.4 192.168.1.1/24 | | |
| | |
+-----+ | +------+
| | |
PC 2 | PC 3
192.168.1.3/24 | 192.168.1.4/24
|
PC 1
192.168.1.2/24
/|\
WLAN
/ | \
PC W1 PC W2 PC W3
192.168.1.X/24 (X>10)
调制解调器/路由器也充当 DHCP 服务器。在公共 IP 1.2.3.4 上发送的任何请求都会重定向到内部网络上的 192.168.1.2。调制解调器/路由器属于 ISP,我无法访问/配置它。 PC 1 是一个 linux 机器:eth0 和 wlan0 被桥接(被奴役到地址为 192.168.1.2 的 br0); hostapd 在 PC 1 上运行,与 PC WX 共享 Internet 连接。我想将连接到 PC 1 上的某些端口的连接重定向到同一网络上的 PC,例如:
1.2.3.4:2222 > 192.168.1.2:2222 -> 192.168.1.3:22
1.2.3.4:3333 > 192.168.1.2:3333 -> 192.168.1.4:25
我尝试使用 iptables 并启用 ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d 192.168.1.2 -p tcp --dport 2222 -j DNAT --to 192.168.1.3:22
iptables -t nat -A POSTROUTING -d 192.168.1.3 -p tcp --dport 22 -j SNAT --to-source 192.168.1.2
对于其他端口等等,但它不起作用。我发现通过 WLAN 连接的任何其他 PC 的重定向工作正常。看来,结合网桥使用iptables PREROUTING规则,一旦数据包从一侧(eth0)进入网桥,它只能流到另一侧(wlan0),但不能出去抛出相同的输入界面。当网桥被禁用时,上述安排工作正常,但我不想将 PC 1 用作路由器,而只用作 AP。
有人可以帮我吗?
【问题讨论】:
标签: linux networking iptables