Docker

埠未在防火牆上打開,但可以訪問

  • August 25, 2020

我在我的伺服器上使用 centos 7 和 firewallD。

我還在這台機器上安裝了 docker 並將其添加到我的防火牆的受信任區域。

我有一個偵聽埠的容器,9081但該埠未在防火牆上打開,奇怪的是該埠可以從我的家用電腦訪問。

這是的輸出firewall-cmd --list-all

public (active)
 target: default
 icmp-block-inversion: no
 interfaces: eth0
 sources:
 services: dhcpv6-client ssh
 ports: 443/tcp 80/tcp
 protocols:
 masquerade: no
 forward-ports:
 source-ports:
 icmp-blocks:
 rich rules:

我有兩個活動區域:trustedpublic

這是命令的輸出firewall-cmd --zone=trusted --list-all

trusted (active)
 target: ACCEPT
 icmp-block-inversion: no
 interfaces: docker0
 sources:
 services:
 ports: 4243/tcp
 protocols:
 masquerade: no
 forward-ports:
 source-ports:
 icmp-blocks:
 rich rules:

顯然,該埠9081在任何區域都沒有打開,但我仍然可以訪問它。為什麼?如何關閉它?

我意識到使用 firewallD 執行 Docker 存在一些錯誤。

一個簡單的解決方法是更改​​在 docker 中定義埠的方式。就我而言,我不得不將我的 docker-compose 更改為:

ports:
- "127.0.0.1:9081:8081"

重要的部分是127.0.0.1在定義主機埠之前使用。

引用自:https://serverfault.com/questions/1006947