Networking
為什麼我的主機收不到通過 tun0 發送的數據包?
我設置了一個 tun0 介面,它允許這樣發送數據包:
HOST (aaaa::1) —-> tun0 —-> SLIP —-> 路由器 (aaaa::200:0:0:1)
路由器接收數據包,並可以發回一個網頁(上面有一個小型網路伺服器),然後我可以在主機上的瀏覽器和wireshark中看到:
3205 2129.960625056 aaaa::1 aaaa::200:0:0:1 TCP 80 49192 → 80 [SYN] Seq=0 Win=28800 Len=0 MSS=1440 SACK_PERM=1 TSval=579845 TSecr=0 WS=128 3206 2129.977020758 aaaa::200:0:0:1 aaaa::1 TCP 64 80 → 49192 [SYN, ACK] Seq=0 Ack=1 Win=48 Len=0 MSS=48 3207 2129.977056613 aaaa::1 aaaa::200:0:0:1 TCP 60 49192 → 80 [ACK] Seq=1 Ack=1 Win=28800 Len=0
但是,當我嘗試執行以下操作時:
路由器 (aaaa::200:0:0:1) —-> SLIP —-> tun0 —-> HOST (aaaa::1)
主機不接收數據包 (UDP)。我已經將wireshark設置為在tun0上擷取,我可以看到數據包進入了介面……
2164 454.682603267 aaaa::200:0:0:1 aaaa::1 UDP 73 8765 → 5678 Len=25
但是,當我使用 netcat 進行監控時
$$ aaaa::1 $$:5678,我看不到任何數據包到達。 我相當確信這與如何在 tun 介面上設置路由和轉發有關,但我對此知之甚少,無法弄清楚這一點。
這是設置 tunslip 介面時的輸出:
slip connected to ``127.0.0.1:60001'' opened tun device ``/dev/tun0'' ifconfig tun0 inet `hostname` mtu 1500 up ifconfig tun0 add aaaa::1/64 ifconfig tun0 add fe80::0:0:0:1/64 ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:127.0.1.1 P-t-P:127.0.1.1 Mask:255.255.255.255 inet6 addr: fe80::1/64 Scope:Link inet6 addr: aaaa::1/64 Scope:Global UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
這是ip route show table local的輸出:
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 local 127.0.1.1 dev tun0 proto kernel scope host src 127.0.1.1 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 broadcast 172.23.0.0 dev wlx0013ef1b001c proto kernel scope link src 172.23.251.64 local 172.23.251.64 dev wlx0013ef1b001c proto kernel scope host src 172.23.251.64 broadcast 172.23.255.255 dev wlx0013ef1b001c proto kernel scope link src 172.23.251.64
所以這很尷尬,但我忘記了我在主機上配置了防火牆,這意味著所有傳入的連接都被阻止了。關閉防火牆,一切正常。