我的網路拓撲:
蘋果 192.168.1.4 | 網路 - 網通 192.168.1.1-192.168.1.253 linux 192.168.2.1-192.168.2.2 windows
- netcom 是 Internet 的 NAT 網關
- netcom 有一條通過 192.168.1.253 到 192.168.2.0/24 的靜態路由
- mac 有一條通過 192.168.1.253 到 192.168.2.0/24 的靜態路由
- mac 的預設閘道為 192.168.1.1
- linux的預設gw是192.168.1.1
- linux 有連接埠轉送和停用防火牆
- Windows 的預設閘道為 192.168.2.1
- mac 可以 ping windows、linux 和 netcom
- linux 可以 ping windows、mac 和 netcom
- windows 可以 ping mac 和 linux 但不能 ping 通網通
- 網通可以 ping mac 和 linux 但不能 ping windows
最後,我在嘗試從 Windows ping netcom 時運行 tcpdump(反之亦然),它顯示資料包正在通過正確的接口,知道可能出了什麼問題嗎?
從 netcom ping windows 顯示以下日誌:
ping 網通:
> ping 192.168.2.2 應用程式:echo 1 > /var/ping_dns_status PING 192.168.2.2 (192.168.2.2):56 個資料位元組 --- 192.168.2.2 ping 統計 --- 發送 4 個資料包,接收 0 個資料包,100% 資料包遺失
Linux 中的 tcpdump:
00:03:12.441283 在 18:f1:45:75:2c:24 ethertype IPv4 (0x0800),長度 100:192.168.1.1 > 192.168.2.2:ICMP 回顯請求,id 5784q,長度. 00:03:12.441341 輸出 00:0c:29:0b:03:c3 以太型 IPv4 (0x0800),長度 100:192.168.1.1 > 192.168.2.2:ICMP 回顯請求,id 5784, 57864q 00:03:12.441829 在 00:0c:29:e9:17:84 ethertype IPv4 (0x0800),長度 100:192.168.2.2 > 192.168.1.1:ICMP 回顯回覆,id 5784, 0784,長度回复 00:03:12.441850 輸出 00:0c:29:0b:03:b9 ethertype IPv4 (0x0800),長度 100:192.168.2.2 > 192.168.1.1:ICMP 回顯回復,id 5784, 578q
Windows 上的wireshark:
192.168.1.1 192.168.2.2 ICMP 98 Echo (ping) 請求 id=0x1698,seq=0/0,ttl=63(在 2548 回覆) 192.168.2.2 192.168.1.1 ICMP 98 Echo (ping) 回覆 id=0x1698,seq=0/0,ttl=128(2547 中的請求)
答案1
在 Linux 機器上,預設會停用封包轉送。嘗試運行命令:
iptables -A 轉送 -i eth1 -j 接受
iptables -A 轉送 -o eth1 -j 接受
(以及在另一個網路介面而不是 eth1 上執行相同的兩個命令)
sysctl -w net.ipv4.ip_forward=1
並加入到/etc/sysctl.conf
net.ipv4.ip_forward = 0