Linux tun 和 mac utun 的数据为什么不能互通?

311 天前
 wpjscc

在 Linux 上创建 tun 接口后,将读取到的 ping 数据通过 tcp 发送给 mac 上的 utun 接口,在 mac 上使用 wireshark 能抓到 这个 ping 包,但没有回复包,显示 no response seen 。而 linux 同样能收到 utun 的 ping 包 ,但也没有回复包。

而 linux tun 接口 ,发送到另外一台 linux tun 接口,ping 没问题。

因此猜测可能是 tun 和 utun 的数据格式不兼容导致的,但网上没有搜到这方面的资料,拜托拜托大神,指点一二。

888 次点击
所在节点    问与答
6 条回复
julyclyde
311 天前
linux tun 有 gre 和 ipip 两种吧
你选的哪种
wpjscc
311 天前
@julyclyde 没有用这种方式。用的类似 openvpn 的方式中继流量
lyt
311 天前
mac 下的 utun 默认带几个字节的 header ,表明是 ipv4 还是 ipv6
geekzjj
311 天前
mac 的 utun 有一个 4 字节的头,读写时丢弃/补全即可
wpjscc
310 天前
@lyt 标识是 ipv4 还是 ipv6, 应该是去除前 4 个字节后,第一个字节 $ipVersion = (($firstByte >> 4) & 0xF)。
@geekzjj 是的,但 tun 也有 4 字节的头。
wpjscc
310 天前
@lyt
@geekzjj 感谢两位,确实是 4 字节头的问题。虽然都有 4 字节,但这 4 个字节不一样,根据不同平台适配后,能 ping 通了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1016143

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX