一句话结论

netstat -nr -f inet 是在看 macOS 当前的 IPv4 路由表。路由表可以理解成系统发网络包之前查的一张地图:我要访问某个 IP,应该从哪个网卡出去,下一跳交给谁。
你这次看到的变化,重点不是某一行单独说明了“Codex 代理”或“Claude 代理”,而是前后两次路由表里 utun4 的网段、隧道网关、VPN 服务端公网 IP 都变了。这说明代理/VPN 客户端重新建立或重新下发了一套路由规则。

⚠️ 路由表只能看到“IP 网段怎么走”,看不到“这个规则具体属于 Codex 还是 Claude”。如果要确认某条规则来自哪个软件,需要结合代理客户端配置、系统网络设置或抓包日志。

这个命令是什么意思?

命令是:

netstat -nr -f inet

拆开看:

  • netstat:查看网络状态
  • -r:显示 routing table,也就是路由表
  • -n:用数字显示 IP,不反查域名,输出更快更清楚
  • -f inet:只看 IPv4,不看 IPv6
    所以这条命令的意思就是:
显示当前系统的 IPv4 路由表,并且所有地址都用数字展示。

路由表解决什么问题?

当电脑要访问一个地址,比如:

10.21.155.22
api.openai.com
claude.ai
baidu.com

系统最终都会把域名解析成 IP,然后查路由表:

目标 IP 是什么?

有没有更具体的路由规则匹配它?

如果有,就按那条规则走

如果没有,就走 default 默认路由

路由表匹配遵循“越具体越优先”。比如 10.21.155.22/3210 更具体,所以会优先匹配单个 IP 的规则。

表格每一列怎么看?

常见输出长这样:

Destination        Gateway            Flags    Netif
default            192.168.3.1        UGScg    en0
10                 172.31.147.0       UGSc     utun4
192.168.3          link#14            UCS      en0

关键列是这几个:

  • Destination:目标网段或目标 IP
  • Gateway:下一跳,也就是包先交给谁
  • Flags:这条路由的属性
  • Netif:从哪个网络接口出去
    对小白来说,最先看三列就够:
Destination -> Gateway -> Netif

也就是:

去哪里 -> 交给谁 -> 从哪个接口出去

default 是什么?

例如:

default  192.168.3.1  UGScg  en0

default 是默认路由,也叫兜底路由。
意思是:如果目标 IP 没有匹配到更具体的规则,就从 en0 出去,交给 192.168.3.1
在你的机器上:

  • en0 通常是 Wi-Fi 网卡
  • 192.168.3.1 通常是家里或办公室路由器
    所以这行可以翻译成:
普通外网流量默认走 Wi-Fi,下一跳是本地路由器 192.168.3.1。

en0 是什么?

en0 是 macOS 上常见的物理网络接口名。大多数 Mac 上,en0 通常对应 Wi-Fi。
你可以粗略这样记:

en0    本机真实网络接口,常见是 Wi-Fi
lo0    本机回环接口,也就是 127.0.0.1
utunX  虚拟隧道接口,常见于 VPN、代理隧道、Network Extension

utun4 是什么?

utun4 是 macOS 的虚拟隧道接口,不是普通物理网卡。
utun 可以粗略理解成 user tunnel。很多 VPN、公司内网客户端、代理隧道、Network Extension 都会创建 utun0utun1utun4 这种接口。
为什么这里判断它和 VPN/代理隧道有关?
第一,名字本身是 utunX,这是 macOS 上典型的隧道接口。
第二,你的很多内网网段都走它:

10                 172.31.147.0       UGSc     utun4
11                 172.31.147.0       UGSc     utun4
100.64/10          172.31.147.0       UGSc     utun4
172.16/12          172.31.147.0       UGSc     utun4
172.31.2.60/32     172.31.147.0       UGSc     utun4
172.31.6.60/32     172.31.147.0       UGSc     utun4

第三,普通默认路由仍然走 en0

default            192.168.3.1        UGScg    en0

这说明不是所有流量都进隧道,而是部分内网或指定公网网段走隧道,普通流量仍然走本地网络。这就是常见的 分流代理 / 分流 VPN

严谨说法:只看 utun4 这个名字,不能 100% 确定它属于哪个具体软件;但结合大量公司内网网段走 utun4,基本可以判断它是 VPN 或代理隧道接口。

10172.16/12100.64/10 是什么?

这些是网段,不是单个 IP。

10                 约等于 10.0.0.0/8
172.16/12          172.16.0.0 到 172.31.255.255
100.64/10          100.64.0.0 到 100.127.255.255
192.168.0/16       192.168.0.0 到 192.168.255.255

它们经常用于公司内网、VPN、容器网络、运营商内网或代理网络。
如果这些网段后面的 Netifutun4,就可以理解成:

访问这些内部地址时,不走普通 Wi-Fi 出口,而是走 VPN/代理隧道。

/32 是什么?

例如:

10.21.155.22/32    172.31.147.0       UGSc     utun4

/32 表示只匹配这一个 IP。
所以它比 10 这种大网段更具体。

10.21.155.22/32 = 只匹配 10.21.155.22 这一台机器
10              = 匹配整个 10.x.x.x 大网段

Gateway 里的 link#14 是什么?

例如:

192.168.3          link#14            UCS      en0

link#14 表示这个网段是本机网卡直接连着的链路,不需要再交给某个远端网关。
可以翻译成:

192.168.3.x 是当前局域网,直接从 en0 这个网卡发出去。

常见 Flags 怎么粗略理解?

Flags 不需要一开始全背下来,先记几个常见的:

U  Up,这条路由是可用的
G  Gateway,需要经过网关
H  Host,目标是单个主机
S  Static,静态路由或系统/客户端下发的明确路由
C  Cloning/Connected,和本地链路/缓存相关

比如:

UGSc

粗略看就是:

这条路由可用,需要走网关,是系统里明确存在的一条路由规则。

小白阶段不用纠结每个字母,优先看 DestinationGatewayNetif

你的第一次状态怎么看?

你第一次没有开 Codex/Claude 相关代理时,关键路由大概是:

default            192.168.3.1        UGScg    en0
10                 192.168.219.0      UGSc     utun4
172.16/12          192.168.219.0      UGSc     utun4
192.168.0/16       192.168.219.0      UGSc     utun4
106.13.100.253     192.168.3.1        UGHS     en0
192.168.219.0      192.168.219.0      UH       utun4

可以翻译成:

普通外网默认走 en0 -> 192.168.3.1
公司/内网相关地址走 utun4 -> 192.168.219.0
VPN/代理服务端 106.13.100.253 单独走 en0 -> 192.168.3.1

这里最关键的是:

  • default 没变,普通外网仍然走本地路由器
  • 内网段走 utun4
  • utun4 的隧道侧地址/网关是 192.168.219.0

你的第二次状态怎么看?

你后面打开 Codex/Claude 相关代理后,关键路由变成:

default            192.168.3.1        UGScg    en0
10                 172.31.147.0       UGSc     utun4
172.16/12          172.31.147.0       UGSc     utun4
104.18/16          172.31.147.0       UGSc     utun4
160.79.104/21      172.31.147.0       UGSc     utun4
172.64             172.31.147.0       UGSc     utun4
111.63.65.36       192.168.3.1        UGHS     en0
172.31.147.0       172.31.147.0       UH       utun4

可以翻译成:

普通外网默认仍然走 en0 -> 192.168.3.1
公司/内网相关地址走 utun4 -> 172.31.147.0
一些额外公网网段也被导到 utun4
VPN/代理服务端 111.63.65.36 单独走 en0 -> 192.168.3.1

这里的变化有三类:

  • utun4 的隧道侧地址/网关从 192.168.219.0 变成 172.31.147.0
  • VPN/代理服务端公网 IP 从 106.13.100.253 变成 111.63.65.36
  • 新增了几个走 utun4 的公网网段,比如 104.18/16160.79.104/21172.64

从哪里判断是公网 IP?

先记住几个常见的内网/保留地址段

10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
127.0.0.0 ~ 127.255.255.255      本机回环地址
169.254.0.0 ~ 169.254.255.255    本地链路地址
100.64.0.0 ~ 100.127.255.255     运营商/隧道常见保留段

如果一个 IP 不在这些常见内网或保留地址段里,就可以先粗略判断它是公网 IP
比如你表里的:

106.13.100.253
111.63.65.36
104.18/16
160.79.104/21
172.64

这些不属于 10.x.x.x172.16~172.31.x.x192.168.x.x 这些常见内网段,所以可以先按公网 IP / 公网网段理解。
而这些明显不是普通公网目标:

192.168.3.1        本地路由器
192.168.3.122      你的电脑在当前 Wi-Fi 里的局域网 IP
10.x.x.x           公司内网常见地址
172.16/12          内网地址段
172.31.x.x         内网地址段
127.0.0.1          本机回环地址
169.254.x.x        本地链路地址
100.64/10          运营商/隧道常见保留段

⚠️ 判断公网 IP 的第一步不是查它属于哪个公司,而是先排除常见内网/保留地址段。排除之后,它大概率就是公网地址。

这里的公网 IP 是谁的 IP?

路由表里的 Destination目标地址,不是“我的地址”。
例如:

111.63.65.36       192.168.3.1        UGHS     en0

这行的意思是:

如果要访问 111.63.65.36 这个远端公网 IP,
就从 en0 出去,
先交给本地网关 192.168.3.1。

所以这里:

  • 111.63.65.36:你要访问的远端公网 IP,可能是 VPN/代理服务端
  • 192.168.3.1:你的本地路由器
  • en0:你的 Wi-Fi 网卡
    它不是说:
你的电脑公网 IP 是 111.63.65.36

你的电脑在当前局域网里的地址,更像是:

192.168.3.122/32

但这也只是局域网 IP,不是公网出口 IP。
真正对外显示的公网 IP,要问外部网站。常用命令是:

curl ifconfig.me

或者:

curl ipinfo.io/ip

一句话记住:

路由表里的 Destination 是“我要去访问谁”
不是“我自己是谁”

所以 106.13.100.253111.63.65.36 更像是代理/VPN 的远端服务端公网 IP,不是你本机的公网 IP。

为什么能看出“重新做了连接”?

不是因为某一行写着“reconnect”,而是前后对比发现三件事同时变了:

隧道网关变了

服务端公网 IP 变了

下发的路由集合变了

这通常说明 VPN/代理客户端重新建了连接,或者切换了线路/节点,然后重新往系统路由表里写入规则。
更严谨地说:

从路由表能判断“隧道配置重新下发或切换过”
不能只靠路由表证明“用户手动点击了重连”

但结合你自己知道“确实重新做了连接”,这个判断就能对上。

Codex 代理和 Claude 代理在这里怎么理解?

你可以把它们先理解成:

为了让 Codex / Claude 访问它们需要的网络服务,公司网管让你开启了特定代理或隧道规则。

这些规则可能做几件事:

  • 把某些公司内网地址导入 VPN
  • 把某些 AI 服务相关的公网网段导入代理隧道
  • 保留普通外网仍然走本地 Wi-Fi
  • 给 VPN/代理服务端本身留一条直连本地网关的路由
    为什么 VPN/代理服务端要单独走 en0
    因为电脑必须先通过普通网络连上 VPN/代理服务端。如果连 VPN 服务端自己的流量也被送进 VPN 隧道,就会变成逻辑打结。
    所以你会看到类似:
111.63.65.36       192.168.3.1        UGHS     en0

可以翻译成:

连接这个代理/VPN 服务端时,不要走隧道,直接走本地路由器。

为什么路由表看不出“这是 Codex”还是“这是 Claude”?

因为路由表只认识 IP 和网段,不认识应用名。
它只能表达:

访问 104.18.x.x 走 utun4
访问 172.31.x.x 走 utun4
访问其他没有特殊规则的地址走 default

它不会表达:

这条是 Codex 的规则
这条是 Claude 的规则

要进一步确认来源,通常要看:

  • 代理/VPN 客户端配置
  • macOS 系统设置里的 VPN、代理、网络过滤器
  • 软件自己的日志
  • scutil --proxy 看系统代理配置
  • ifconfig utun4 看隧道接口细节
  • route get 目标IP 看某个目标实际走哪条路由

小白以后怎么自己读?

以后看到 netstat -nr -f inet,按这个顺序看:

第一步:先看默认路由

找:

default

如果是:

default  192.168.3.1  ...  en0

说明普通流量默认走本地 Wi-Fi 和本地路由器。

第二步:看有没有 utunX

找:

utun0
utun1
utun2
utun4

如果很多公司内网段都走 utunX,基本说明有 VPN/代理隧道在工作。

第三步:看内网段走哪里

重点看:

10
172.16/12
192.168/16
100.64/10

如果它们走 utunX,就是内网流量走隧道。

第四步:看有没有公网 IP 单独走 en0

例如:

111.63.65.36  192.168.3.1  UGHS  en0

这类经常是 VPN/代理服务端地址,必须走本地网络。

第五步:前后对比

不要只看一份输出,要对比:

  • Gateway 有没有变
  • Netif 有没有变
  • 新增/删除了哪些 Destination
  • default 有没有变
  • utunX 对应的地址有没有变
    如果这些都变了,就说明网络策略或代理/VPN 连接发生了变化。

最常用的辅助命令

看某个目标到底走哪条路由

route get 10.21.155.22

重点看输出里的:

gateway
interface

看当前有哪些网络接口

ifconfig

如果只想看 utun4

ifconfig utun4

看系统代理配置

scutil --proxy

它能看到系统 HTTP/HTTPS/SOCKS 代理有没有打开。

看 DNS 配置

scutil --dns

有时访问不通不是路由问题,而是 DNS 解析问题。

这次输出怎么一句话记住?

你这次可以这样记:

没开 AI 代理时:
普通外网走 en0,本地网关 192.168.3.1
内网流量走 utun4,隧道侧地址是 192.168.219.0
 
开了 Codex/Claude 代理后:
普通外网还是走 en0,本地网关还是 192.168.3.1
内网和部分额外公网网段走 utun4,隧道侧地址变成 172.31.147.0
代理/VPN 服务端公网 IP 也换了

所以它不是“全局代理把所有流量都接管”,更像是:

本地默认网络 + VPN/代理分流规则

相关笔记