为什么 Docker 需要 udp 端口​​才能运行——我可以禁用它吗?

为什么 Docker 需要 udp 端口​​才能运行——我可以禁用它吗?

我在使用 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

相关内容