Linux

阻止 Docker 埠並將其訪問到幾個 IP 地址

  • November 18, 2018

我需要阻止所有 INPUT 流量到 Ubuntu 伺服器 16.04 上的埠 8090。我使用了 Iptables,但它不起作用。我使用的命令:

iptables -A INPUT -p tcp --dport 8090 -j DROP iptables -A INPUT -p tcp --dport 8090 -s <IP> -j ACCEPT

在 NAT 我有: Chain DOCKER (2 references) target prot opt source destination DNAT tcp -- anywhere <VM local IP> tcp dpt:8090 to:172.21.0.2:8080

命名的公共介面和命名eth0的 docker 介面docker0

由於 DNAT,您現在正在路由。您的 INPUT 鏈不再用於這種 DNATed 流量,而是現在被遍歷的 FORWARD 鏈。新的目的地是172.21.0.2:8080規則現在應該關心的,而不是現在<VM local IP>:8090

因此,有了 DNAT,您應該使用以下命令阻止您的流量(按正確的順序:允許例外,然後禁止其他一切):

iptables -A FORWARD -s <IP> -d 172.21.0.2 -p tcp --dport 8080 -j ACCEPT
iptables -A FORWARD -d 172.21.0.2 -p tcp --dport 8080 -j DROP

為確保它實際上在任何系統規則之前完成,您可以執行以下操作:

iptables -I FORWARD 1 -s <IP> -d 172.21.0.2 -p tcp --dport 8080 -j ACCEPT
iptables -I FORWARD 2 -d 172.21.0.2 -p tcp --dport 8080 -j DROP

這些規則可能會根據配置阻止其他容器到達此容器,因此您可能必須調整它們(例如,通過說明外部輸入介面)。無論如何,您必須找到一種方法將其與系統的防火牆方法很好地集成。

引用自:https://unix.stackexchange.com/questions/462706