
После того, как мое приложение вводит пакет с source 100.64.0.77
и destination 192.168.1.95
в виртуальный utun2
интерфейс, пакет пересылается на en0
интерфейс и отправляется по назначению, как и ожидалось. Однако, когда получен ответный пакет от source 192.168.1.95
к destination 100.64.0.77
, он принимается на en0
интерфейсе.
Как мне сделать так, чтобы этот ответный пакет был получен, utun2
чтобы мое приложение могло его прочитать?
ifconfig для utun2:
inet 100.64.0.77 --> 100.64.0.77 netmask 0xffffff00
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 192.168.1.254 UGSc en0
default link#10 UCSI utun2
100.64.0.77 100.64.0.77 UH utun2
127 127.0.0.1 UCS lo0
127.0.0.1 127.0.0.1 UH lo0
169.254 link#7 UCS en0 !
192.168.1 link#7 UCS en0 !
192.168.1 link#10 UCSI utun2
192.168.1.92/32 link#7 UCS en0 !
192.168.1.99 8c:a9:82:2e:d6:2e UHLWI en0 986
192.168.1.254/32 link#7 UCS en0 !
192.168.1.254 70:f1:96:86:e6:a0 UHLWIir en0 1196
224.0.0/4 link#7 UmCS en0 !
224.0.0/4 link#10 UmCSI utun2
224.0.0.251 1:0:5e:0:0:fb UHmLWI en0
255.255.255.255/32 link#7 UCS en0 !
255.255.255.255/32 link#10 UCSI utun2
решение1
Мне кажется, все в порядке. Если вы используете исходный NAT от TUN до en0, вам нужно использовать таблицу NAT и для обратного пути. Без NAT пакет просто нужно переслать.