Dockerポートをブロックし、いくつかのIPアドレスを介してアクセスします。

Dockerポートをブロックし、いくつかのIPアドレスを介してアクセスします。

Ubuntu Server 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

ベストアンサー1

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

構成によっては、これらのルールは他のコンテナがこのコンテナにアクセスするのを防ぐことができるため、これを調整する必要があるかもしれません(外部入力インタフェース宣言など)。それにもかかわらず、それをシステムのファイアウォールアプローチとうまく統合する方法を見つける必要があります。

おすすめ記事