无法从 utun 接口 ping 本地主机

无法从 utun 接口 ping 本地主机

我打开了一个utun界面,使用下面的命令进行了设置。

sudo ifconfig utun0 10.0.3.1 10.0.3.1 netmask 255.255.255.0 up
sudo route add -net 10.0.3.0 10.0.3.1
sudo sysctl net.inet.ip.forwarding=1

执行 ifconfig lo0、en0 和 utun0 的结果为:

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=3<RXCSUM,TXCSUM>
    inet6 ::1 prefixlen 128 
    inet 127.0.0.1 netmask 0xff000000 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    nd6 options=1<PERFORMNUD>

en0: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>
    ether 95:ab:3d:5c:07:29 
    inet 192.168.0.101 netmask 0xffffff00 broadcast 192.168.0.255
    media: autoselect (100baseTX <full-duplex,flow-control>)
    status: active 

utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
    inet 10.0.3.1 --> 10.0.3.1 netmask 0xffffff00

执行 netstat -nr 结果是:

Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.0.1        UGSc           35     1195     en0
10.0.3/24          10.0.3.1           UGSc            0        0   utun0
10.0.3.1           10.0.3.1           UH              2        0   utun0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH             47    45013     lo0
169.254            link#4             UCS             0        0     en0
192.168.0          link#4             UCS             1        0     en0
192.168.0.1/32     link#4             UCS             1        0     en0
192.168.0.1        48:54:70:de:60:09  UHLWIir        36      804     en0   1058
192.168.0.101/32   link#4             UCS             1        0     en0
192.168.0.101      95:ab:3d:5c:07:29  UHLWI           0       82     lo0
192.168.0.103      8e:76:28:93:35:f5  UHLWIi          1      325     en0   1180
224.0.0            link#4             UmCS            1        0     en0
224.0.0.251        a9:d5:8c:80:48:17  UHmLWI          0        0     en0
255.255.255.255/32 link#4             UCS             0        0     en0

Internet6:
Destination                             Gateway                         Flags         Netif Expire
::1                                     ::1                             UHL             lo0
fe80::%lo0/64                           fe80::1%lo0                     UcI             lo0
fe80::1%lo0                             link#1                          UHLI            lo0
ff01::%lo0/32                           ::1                             UmCI            lo0
ff02::%lo0/32                           ::1                             UmCI            lo0

现在我可以创建一个 ping 请求数据包,源 IP:10.0.3.1,目标 IP:192.168.0.101,并得到成功回复。但如果我将目标 IP 更改为 127.0.0.1,则不会收到任何回复。

答案1

我通过添加 pf 重定向规则解决了这个问题:

rdr on utun0 from any to 10.0.3.5 -> lo0

然后从 utun 接口 ping 10.0.3.5。我仍然不知道为什么我不能直接 ping 本地主机,而我可以毫无问题地 ping en0 接口。

相关内容