当我运行时,netstat -avp udp
端口数量会缓慢增加。它每小时增加约 100 个,但速率变化很大。
当我关闭进程时,端口不会从列表中消失。当我终止进程时也是如此。重新启动机器显然会重置列表,但它只会再次增长。我有多台机器出现相同症状。
列出的大多数端口都与 mDNSResponder 相关,但我认为这无关紧要,因为该问题也与 Chrome、Outlook 和其他程序相关。
一段时间后,网络访问变得不稳定,大概是因为 49000-65000 范围内的端口耗尽了,而大多数 UDP 端口都分配在该范围内。
lsof -iUDP -n
当 netstat 报告数千个 UDP 端口时,运行仅显示 30 个。
这些机器是运行 MacOS Monterey 12.0.1 的 iMac,并报告说它们已完全更新补丁。
netstat 输出的前几行如下所示:
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state) rhiwat shiwat pid epid state options
udp4 0 0 *.55317 *.* 786896 9216 238 62261 0x0103 0x00010000
udp4 0 0 *.62074 *.* 786896 9216 238 577 0x0103 0x00010000
udp4 0 0 *.51635 *.* 786896 9216 238 301 0x0103 0x00010000
udp4 0 0 *.54799 *.* 786896 9216 238 301 0x0103 0x00010000
udp4 0 0 *.57143 *.* 786896 9216 238 301 0x0103 0x00010000
udp4 0 0 *.56933 *.* 786896 9216 238 301 0x0103 0x00010000
udp4 0 0 *.51250 *.* 786896 9216 238 63527 0x0103 0x00010000
udp4 0 0 *.61138 *.* 786896 9216 238 63527 0x0103 0x00010000
netstat 的页面man
没有告诉我右边的列代表什么,我可以猜测 pid 是“进程 ID”,epid 是“有效进程 ID”,但是 rhiwat、shiwat、state 和 options 是什么,它们对解决这个问题有用吗?
我将非常感激任何关于如何继续调查为什么这些 Mac 的 UDP 套接字数量似乎不断增加的建议。
答案1
有人猜测这个问题是苹果在推出 Monterey 时引入的。
我个人的经验是,在 Apple 发布修复之前,卸载 Cisco Anyconnect 的套接字过滤器是一种有效的解决方法。它似乎不会影响 VPN 的运行,但在进行此类更改之前,您需要咨询公司安全人员。
注意:重新启动后,Anyconnect 套接字过滤器将重新安装,因此您需要在每次重新启动后将其删除。
答案2
我也遇到了同样的问题(Monterey 12.1)。升级到 Montery 12.2.1 后问题消失。
使用 12.1,netstat -n -p udp | wc -l
每分钟增加 30 行。四天后,我的系统变得缓慢,开始出现isc_socket_bind: address not available
错误。 sudo lsof -nP -iUDP | wc -l
不增长。
大约四天后:
nslookup www.ibm.com
nslookup: isc_socket_bind: address not available
Reddit 上的讨论推测思科 AnyConnect 是罪魁祸首。我正在运行思科 AnyConnect。
- https://www.reddit.com/r/applehelp/comments/sbsduv/macos_121_dns_issues/
- https://www.reddit.com/r/mac/comments/rfut2n/dns_issues_still_with_121/hpchija/
我仍在运行 12.2.1 版的 Cisco AnyConnect,问题似乎已解决。