V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wpjscc
V2EX  ›  问与答

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

  •  
  •   wpjscc · 278 天前 via Android · 860 次点击
    这是一个创建于 278 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    第 1 条附言  ·  278 天前
    上方描述有一个错误。
    刚实验了下,linux 收不到 mac 的 ping
    第 2 条附言  ·  278 天前
    总结下 wireshark (二层)能抓到 ping 的数据包,tcpdump ( 3 层)抓不到 ping 包。
    6 条回复    2024-02-19 12:00:10 +08:00
    julyclyde
        1
    julyclyde  
       278 天前
    linux tun 有 gre 和 ipip 两种吧
    你选的哪种
    wpjscc
        2
    wpjscc  
    OP
       278 天前
    @julyclyde 没有用这种方式。用的类似 openvpn 的方式中继流量
    lyt
        3
    lyt  
       278 天前 via iPhone
    mac 下的 utun 默认带几个字节的 header ,表明是 ipv4 还是 ipv6
    geekzjj
        4
    geekzjj  
       277 天前 via Android
    mac 的 utun 有一个 4 字节的头,读写时丢弃/补全即可
    wpjscc
        5
    wpjscc  
    OP
       277 天前
    @lyt 标识是 ipv4 还是 ipv6, 应该是去除前 4 个字节后,第一个字节 $ipVersion = (($firstByte >> 4) & 0xF)。
    @geekzjj 是的,但 tun 也有 4 字节的头。
    wpjscc
        6
    wpjscc  
    OP
       277 天前
    @lyt
    @geekzjj 感谢两位,确实是 4 字节头的问题。虽然都有 4 字节,但这 4 个字节不一样,根据不同平台适配后,能 ping 通了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1117 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 18:36 · PVG 02:36 · LAX 10:36 · JFK 13:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.