我有一点网络经验,但不知何故我似乎无法使用 Linux 机器连接到子网
我当前的网络如下所示
#########
# LAN 1 # (192.178.178.0/24)
#########
|
######### (192.168.178.1/24) eth0
# LINUX #
######### (192.168.177.1/24) wlan0
|
#########
# LAN 2 # (192.168.177.0/24)
#########
Linux 机器在两个接口上运行 DHCP Linux 机器通过 DHCP 分配以下路由
[192.168.178.0/24 via 192.168.177.1] on wlan0
[192.168.177.0/24 via 192.168.178.1] on eth0
我已经在 Linux 机器上设置了 net.ipv4.ip_forward=1
但不同 LAN 上的设备无法互相 ping 通,即使它们已应用路由
我知道我可以用 MASQUERADE nat 解决这个问题,但我想知道接收端的包的源 ip
route get 的输出如下
user@router:~ $ ip route get to 192.168.177.2 from 192.168.178.3 iif eth0
192.168.177.2 from 192.168.178.3 dev wlan0
cache iif wlan0
user@router:~ $ ip route get to 192.168.178.3 from 192.168.177.2 iif wlan0
192.168.178.3 from 192.168.177.2 dev eth0
cache iif eth0
答案1
罪魁祸首是微软 Windows,路由工作正常,但如果它们不是来自同一个网络域等,Windows 就不会响应 ping 请求...
答案2
如果您看到数据包从路由器的正确接口发出(并且它们也具有正确的“目标 MAC”),则路由正在正确执行。即使没有响应,您看到请求数据包在两个方向上转发也足够了。
(使用数据包捕获工具可以轻松查看数据包的实际去向 - Wireshark 也可以在 Windows 上运行,因此你可以使用它来验证操作系统是否至少看到 ICMP Echo 数据包到达。)
默认情况下,Windows 系统根本不响应 ping 请求,除非启用了文件共享,在这种情况下(IIRC)它仅限于当前子网。
使用wf.msc
工具激活内置的“文件和打印机共享(ICMP-In)”规则以允许数据包通过。