我设置了一个 tun0 接口,允许按如下方式发送数据包:
主机 (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 路由显示表本地:
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
答案1
这确实很尴尬,但我忘了在主机上配置了防火墙,这意味着所有传入连接都被阻止了。关闭防火墙后,一切正常。