Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 500,4500,1701
ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:500
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:500
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4500
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:1701
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:1723
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DOCKER-ISOLATION all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
DOCKER all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
DOCKER all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 192.168.18.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 10.31.0.0/24 0.0.0.0/0
ACCEPT all -- 10.31.1.0/24 0.0.0.0/0
ACCEPT all -- 10.31.2.0/24 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (2 references)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 172.17.0.2 udp dpt:4500
ACCEPT udp -- 0.0.0.0/0 172.17.0.2 udp dpt:500
ACCEPT tcp -- 0.0.0.0/0 172.17.0.3 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 172.17.0.5 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 172.17.0.5 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 172.17.0.7 tcp dpt:9001
ACCEPT tcp -- 0.0.0.0/0 172.18.0.2 tcp dpt:993
ACCEPT tcp -- 0.0.0.0/0 172.18.0.2 tcp dpt:587
ACCEPT tcp -- 0.0.0.0/0 172.18.0.2 tcp dpt:143
ACCEPT tcp -- 0.0.0.0/0 172.18.0.2 tcp dpt:25
Chain DOCKER-ISOLATION (1 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0
我下面那些25,143,587那些應該是docker自動新增的,我還需要開放主機的對應連接埠才能存取嗎?
要看你 docker 的網路模式 ,
如果是 bridge 模式,連接埠對映規則為 ip:port:targetPort,
舉例來說0.0.0.0:80:8080,這種情況表示宿主機的80 埠與容器的8080 埠做了映射關係,並且沒有對IP 做限制,這時任何對該宿主機的80 埠請求都會轉送到容器內的8080 連接埠上,無需額外的iptables 設定。 (即使防火牆事先沒有開放 80 端口,也是可行的。因為端口映射會自行修改 iptables 規則)。
如果有明確指定 IP 位址,則 iptables 規則會限定,僅透過該 IP 的 80 端口,才能存取到容器內的 8080 端口。 docker 連接埠對映實際上就是透過修改 iptables 規則來實現的網路互通。
如果是 net 模式,那和你在宿主機上起一個端口監聽是一樣的,不會有額外的 iptables 規則的變動,這時需要手動設置 iptables 允許外部訪問;