我有以下设置:
(192.168.4.1)
Device A <-------> device B <-------> Device C
(192.168.5.84) (192.168.5.1) (192.168.4.5)
设备 B 实际上有一个 wifi 接口 ( wlan0 = 192.168.4.1
),上面运行着 dhcp 服务器。然后是一个电缆接口(eth0 = 192.168.5.1
)。
我想要达到的是设备A和C可以互相通话。我一直在阅读如何获得此结果,并且发现我应该使用路由来完成此任务。我尝试了一些东西,但我不明白为什么它不起作用。
设备 A 有一个静态 IP(子网255.255.255.0
和网关192.168.5.1
)。
设备 C 从 DHCP 服务器接收到 IP(子网255.255.255.0
和网关192.168.4.1
)。
我做了什么:
在设备 BI 上已设置启用 ipforward/etc/sysctl
添加路由:
iptables -A FORWARD -i eth0 -o wlan0 -s 192.168.5.0/24 -d 192.168.4.0/24 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -s 192.168.4.0/24 -d 192.168.5.0/24 -j ACCEPT
问题是设备 A 和 C 都可以从设备 B 访问,因此这表明它一定是路由问题。所以我的问题是,如何达到设备 B 将流量从 A 路由到 C 的情况?
更新:我没有提到的是,我想通过仅更改设备 B 的设置来实现此结果
答案1
无需使用 iptables。如果您已成功启用 ip 转发(即通过设置/proc/sys/net/ipv4/ip_forward
为1
),设备 B 将完成这项工作,因为两个网络都直接连接到 B。您可能会丢失设备 A 和 C 上的正确路由。
在 A 上:
ip route add 192.168.4.0/24 via 192.168.5.1
在C上:
ip route add 192.168.5.0/24 via 192.168.4.1