![为什么 Docker 需要 udp 端口才能运行——我可以禁用它吗?](https://linux22.com/image/1585030/%E4%B8%BA%E4%BB%80%E4%B9%88%20Docker%20%E9%9C%80%E8%A6%81%20udp%20%E7%AB%AF%E5%8F%A3%E2%80%8B%E2%80%8B%E6%89%8D%E8%83%BD%E8%BF%90%E8%A1%8C%E2%80%94%E2%80%94%E6%88%91%E5%8F%AF%E4%BB%A5%E7%A6%81%E7%94%A8%E5%AE%83%E5%90%97%EF%BC%9F.png)
我在使用 docker 时发现了一些奇怪的行为,我试图阻止除 DNS 之外的所有外部 UDP 传入和传出连接(请参阅下面的 mac pf 配置),但这破坏了我的 docker 容器。
为什么 docker 需要 UDP 才能运行,以及如何禁用它?
pf配置:
block in proto udp all
block out proto udp all
pass in proto udp from {10.0.0.0/8 172.0.0.0/8 192.168.0.0/16 127.0.0.1} to any
pass out proto udp from {10.0.0.0/8 172.0.0.0/8 192.168.0.0/16 127.0.0.1} to any
pass out proto udp from any to any port 53
答案1
lsof
从输出中可以看出,Docker 的系统服务正在使用 UDP :
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
com.docke 509 vagrant 5u IPv4 0x8440b8fcdaecccc1 0t0 UDP 127.0.0.1:65346
com.docke 509 vagrant 7u IPv4 0x8440b8fcdaecbe81 0t0 UDP *:61332
com.docke 511 vagrant 16u IPv4 0x8440b8fcdaecdb01 0t0 UDP *:59414
com.docke 511 vagrant 17u IPv4 0x8440b8fcdaecdd61 0t0 UDP *:58270
com.docke 511 vagrant 18u IPv4 0x8440b8fcdaeca6c1 0t0 UDP *:49231
com.docke 511 vagrant 21u IPv4 0x8440b8fcdaeccf21 0t0 UDP *:54016
com.docke 511 vagrant 22u IPv4 0x8440b8fcdaecd181 0t0 UDP *:62272
com.docke 511 vagrant 23u IPv4 0x8440b8fcdaecb501 0t0 UDP *:65286
至于你的 Pf 规则集,我建议在其过滤规则的开头使用简单pass quick on lo0