
請幫助理解為什麼 FirewallD 允許我連接到一個連接埠但阻止第二個連接埠。
有一個帶有傳輸的Docker容器:
5cf144eed6f2 maksim77/transmission "/bin/sh -c 'transmis" 14 hours ago Up 16 minutes 0.0.0.0:9091->9091/tcp, 0.0.0.0:51413->51413/tcp transmission
這兩個連接埠(9091 和 51413)均未在 FirewallD 規則中列出:
root@host:maksim #firewall-cmd --list-all-zones | grep active
public (default, active)
trusted (active)
root@host:maksim #firewall-cmd --list-all --zone trusted
trusted (active)
interfaces: docker0
sources:
services:
ports: 4243/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
root@host:maksim #firewall-cmd --list-all --zone public
public (default, active)
interfaces: enp9s0
sources:
services: dhcpv6-client ftp http ssh
ports: 41387/tcp 1900/udp 50213/tcp 8200/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
但!連接埠 9091 連線成功,但連接埠 51413 連線失敗。
答案1
您在firewalld 中看不到這些,因為Docker 在firewalld 之外自行開啟連接埠。
要查看 Docker 正在做什麼,請運行:
iptables -L DOCKER
iptables -t nat -L DOCKER
碼頭工人將開啟防火牆連接埠本身對於容器的任何端口EXPOSE
,除非您明確停用它。它還允許需要相互通信的容器這樣做,因此您應該啟用此功能,除非您真的知道你在做什麼。