为什么 macOS Catalina 不创建/使用默认路由?

为什么 macOS Catalina 不创建/使用默认路由?

我正在尝试调试为什么我的 Mac 无法正确连接到希尔顿酒店的 Wi-Fi(我认为这是 Mac 的问题)。问题是我似乎成功连接到 Wi-Fi 并收到 IP,但强制登录页面从未出现,我无法访问任何网站(MacBook Pro,Catalina 10.15.1)。

我开始怀疑 macOS 的强制门户检测功能是不是太聪明了,但我也不确定。故障排除输出如下所示。提前感谢您的建议。

tl;dr 问题是:

  • I路由上的标志是什么意思,为什么我的机器不使用带有I标志的默认路由?
  • I为什么 macOS 在通过 Wi-fi 连接时会创建默认路由?
  • 这是否与强制门户嗅探有关?
  • 您有想过怎样修复此问题吗?

首先,我验证了 DHCP 响应。使用 tcpdump 嗅探响应,我得到:

21:46:11.728741 IP (tos 0x0, ttl 64, id 62639, offset 0, flags [DF], proto UDP (17), length 328)
    192.168.28.1.67 > 192.168.28.176.68: BOOTP/DHCP, Reply, length 300, xid 0xfe73a282, Flags [none]
      Your-IP 192.168.28.176
      Client-Ethernet-Address f0:18:98:XX:XX:XX [hidden from s/o post]
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message Option 53, length 1: ACK
        Server-ID Option 54, length 4: 192.168.28.1
        Lease-Time Option 51, length 4: 85361
        Subnet-Mask Option 1, length 4: 255.255.252.0
        Default-Gateway Option 3, length 4: 192.168.28.1
        Domain-Name-Server Option 6, length 8: 8.8.8.8,8.8.4.4

因此,我收到一个 IP、一个默认路由和 DNS,地址为 8.8.8.8。但是,当我尝试 ping 8.8.8.8 时,我得到:

PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: sendto: No route to host
ping: sendto: No route to host
Request timeout for icmp_seq 0

因此我的机器无法访问 DNS 服务器,如果我尝试使用 dig 就可以证实这一点:

logan@bender (OSX) $ dig @8.8.8.8 captive.apple.com

; <<>> DiG 9.10.6 <<>> @8.8.8.8 captive.apple.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

因此,这看起来像是一个路由问题,如果我尝试获取一条路由,则无法:

logan@bender (OSX) $ route get default
route: writing to routing socket: not in table

但是,表中有一条默认路由:

logan@bender (OSX) $ netstat -rn | grep default
default            192.168.20.1       UGScI          en0
default                                 fe80::%utun0                    UGcI          utun0
default                                 fe80::%utun1                    UGcI          utun1
default                                 fe80::%utun2                    UGcI          utun2
default                                 fe80::%utun3                    UGcI          utun3

问题似乎出I在路由上的标志上。如果我插入 USB 网络适配器,该接口的默认路由会略有不同,但可以正常工作:

logan@bender (OSX) $ netstat -rn | grep default
default            192.168.211.1      UGSc          en15
default            192.168.20.1       UGScI          en0
default                                 fe80::%utun0                    UGcI          utun0
default                                 fe80::%utun1                    UGcI          utun1
default                                 fe80::%utun2                    UGcI          utun2
default                                 fe80::%utun3                    UGcI          utun3

我怀疑这种行为可能与 macOS 检测强制门户的方式有关;以太网连接没有强制门户。我能够在 iPhone 上完成强制门户。

相关内容