我有一个程序,它使用 tapcfg 来设置 tuntap 接口,并且该接口似乎在我指定的端点地址上正确设置了169.253.2.100
。我还将 src 地址设置为192.168.1.50
.
使用 ifconfig,我看到:
tap0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether aa:b6:24:69:77:21
inet 169.253.2.100 netmask 0xffffff00 broadcast 169.253.2.255
media: autoselect
status: active
open (pid 3738)
但是,当我检查其路由条目时,我得到:
route get 169.253.2.100
route to: 169.253.2.100
destination: 169.253.2.100
interface: lo0
flags: <UP,HOST,DONE,LLINFO,WASCLONED,LOCAL,IFSCOPE,IFREF>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 16384 0
不对,接口应该是tap0。
但是,检查路线后169.253.2.50
我发现:
route get 169.253.2.50
route to: pptform.state.gov
destination: pptform.state.gov
interface: tap0
flags: <UP,HOST,REJECT,DONE,LLINFO,WASCLONED,IFSCOPE,IFREF>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 -18
忽略解析的DNS pptform.state.gov
,我们可以看到tap0的接口是正确的。
当我时ping 169.253.2.100
,我从 的输出中获得了环回活动route get 169.253.2.100
。当我 ping 时169.253.2.50
,我收到请求超时。
知道可能是什么问题吗?
我可以
sudo route change -host 169.253.2.100 -ifscope tap0
Password:
change host 169.253.2.100
但这种变化似乎并没有持续下去。
我的程序成功地将whohas 169.253.2.100
数据包注入到 tap0 中,该数据包显示为具有 src 169.253.2.50
,但内核从未响应。
我使用的是 macOS Catalina,根据我的经验,它的网络行为与 FreeBSD 最相似。