V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pheyer
V2EX  ›  macOS

Mac 通过 USB 共享 WIFI 网络给 iPhone 出现问题

  •  
  •   pheyer · 2018-02-01 00:13:05 +08:00 · 5524 次点击
    这是一个创建于 2481 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为手头上的 iPhone6 摔了一次 WIFI 信号弱,想试试在 Mac 上通过 USB 共享 WIFI 网络给 iPhone,结果发现在公司的 iMac 下是可以的,回家后用 Mac mini 却不行,换另外一手机试了也不行

    环境:Mac mini 10.12.6,iPhone6 iOs10.3.3

    当 iPhone 通过 usb 线连接至 Mac 后,首先网络设置里会显示一个 iPhone USB 已连接,并给自动分配了地址,然后去共享设置里,按下图一样设置:



    注意,我用的两台 Mac 都是有 4 个 usb 接口,所以图中实际上有 4 个接口,最好是只选择当前手机连接的 usb 接口,不同的手机对应的 iPhone USB 可能是不一样的,如何判断正确选择了,就是选择正确后 ifconfig -a 命令的结果中多了一个 bridge100 项。

    通过 Wireshark 抓包这个 bridge100,在 iPhone6 上的 safari 中输入百度网址访问,会发现从手机上有发出 baidu 的 dns 请求,但是发现 Mac 返给手机的数据包报下面的错误:
    2 0.000097 192.168.2.1 192.168.2.4 ICMP 70 Destination unreachable (Port unreachable)



    看了一下包貌似这个 unreachable port 是 53,这是把 Mac 当成 dns 服务器但是实际 Mac 不是 dns 服务器?
    9 条回复    2018-02-02 10:43:17 +08:00
    pheyer
        1
    pheyer  
    OP
       2018-02-01 10:50:38 +08:00
    在公司的 iMac 上测试,发现并没有上述的端口 Destination unreachable (Port unreachable) 问题,通过 telnet 192.168.2.1 53 命令检测的结果是:
    Trying 192.168.2.1...
    Connected to 192.168.2.1.
    Escape character is '^]’.

    表明 192.168.2.1 开放了 53 端口,192.168.2.1 对应虚拟网卡 bridge100 的 ip 地址
    julyclyde
        2
    julyclyde  
       2018-02-01 13:00:32 +08:00
    DNS 是 UDP53
    pheyer
        3
    pheyer  
    OP
       2018-02-01 13:31:51 +08:00
    @julyclyde 我没说是 tcp 还是 udp 啊,应该就是 udp
    julyclyde
        4
    julyclyde  
       2018-02-01 20:01:37 +08:00
    @pheyer telnet 不是 udp
    pheyer
        5
    pheyer  
    OP
       2018-02-01 21:52:03 +08:00
    @julyclyde 一般情况下 DNS 是同时占用 TCP 和 UDP 端口 53 的
    回家继续测试,telnet 192.168.2.1 53 的结果如下:
    Trying 192.168.2.1...
    telnet: connect to address 192.168.2.1: Connection refused
    telnet: Unable to connect to remote host

    说明家中的 Mac mini 开启 iPhone USB 互联网共享后并没有启动相应的 DNS 服务
    pheyer
        6
    pheyer  
    OP
       2018-02-01 23:25:26 +08:00
    破案了破案了:dnsmasq 搞的鬼,可能是它占用了 53 端口,导致 192.168.2.1 对应的 dns 服务不能启动,但是这个因果关系是怎么对应的就不清楚了
    大概是若干年前为了破除 dns 干扰想试一下用 dnsmasq 来解决,无果,不过也没有卸载它
    执行 sudo brew services stop dnsmasq 来停止 dnsmasq 服务(之前通过 brew 安装的),设置里对互联网共享服务先关后开,再测试发现 iPhone 就可以通过 USB 实现有线上网了

    netstat 里看不到相关 dnsmasq 的关键字,导致定位好半天,果断卸载 dnsmasq
    julyclyde
        7
    julyclyde  
       2018-02-02 07:51:55 +08:00
    @pheyer 服务器同时占用 udp 和 tcp 并不代表客户端会用 tcp 解析啊,这完全两个概念
    tcp 是给 zone transfer 用的,“也可以”接受查询,问题是极少客户端去查
    pheyer
        8
    pheyer  
    OP
       2018-02-02 09:08:23 +08:00
    @julyclyde 你说的没错,不过我是在自用 Mac 上检测 53 端口有没有开放的,一般认为 tcp 53 端口开放就意味着 udp 53 端口也开放了,但是反过来未必成立,你说对吧,思路应该没错的
    julyclyde
        9
    julyclyde  
       2018-02-02 10:43:17 +08:00
    @pheyer 一般来说 tcp53 如果开着,udp53 也开着。但如果 tcp53 没开,你就浪费了检查时间
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3012 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 13:24 · PVG 21:24 · LAX 05:24 · JFK 08:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.