Ste*_*ven 7 networking routing network-interface
我有以下设置:
(192.168.4.1)
Device A <-------> device B <-------> Device C
(192.168.5.84) (192.168.5.1) (192.168.4.5)
Run Code Online (Sandbox Code Playgroud)
设备 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 服务器(子网255.255.255.0
和网关192.168.4.1
)收到一个 ip 。
我做了什么:
在设备 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
Run Code Online (Sandbox Code Playgroud)
问题是设备 A 和 C 都可以从设备 B 访问,因此这表明它必须是路由问题。所以我的问题是,如何解决设备 B 将流量从 A 路由到 C 的情况?
更新:我没有提到的是我只想通过更改设备 B 的设置来实现这个结果
小智 8
无需使用 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
Run Code Online (Sandbox Code Playgroud)
在 C 上:
ip route add 192.168.5.0/24 via 192.168.4.1
Run Code Online (Sandbox Code Playgroud)