У меня настроен интерфейс tun0, который позволяет отправлять пакеты как таковые:
HOST (aaaa :: 1) ----> tun0 ----> SLIP ----> Маршрутизатор (aaaa :: 200: 0: 0: 1)
Маршрутизатор получает пакеты и может отправить обратно веб-страницу (на нем есть небольшой веб-сервер), которую я затем могу увидеть в браузере на хосте и в wirehark:
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). У меня есть wirehark, настроенный для захвата на 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
Это довольно неловко, но я забыл, что настроил брандмауэр на моем хост-компьютере, что означало, что все входящие соединения были заблокированы. Отключил фаервол и все работает как надо.