Ubuntu 14.04デスクトップ(正確にはXubuntu)を使用しており、ローカルで実行されているPostgresポート5432への外部アクセスをiptablesでブロックしようとしています。これは私の iptables -S
-A INPUT -i lo -p tcp -m tcp --dport 5432 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5432 -j DROP
そしてiptables -L
:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:postgresql
DROP tcp -- anywhere anywhere tcp dpt:postgresql
しかし、どういうわけか、同じWi-Fiに接続されているAndroidのネットワークスキャナーアプリは、それを表示できます。 AndroidのPSQLユーティリティでさらにテストすることができ、実際にすべてのテーブルを見ることができます。何が足りないのですか?
編集:これはDockerコンテナで実行されているPostgresであることに言及する価値があるかもしれません。これはそれと関係があるかもしれません。
もっと掘りました。これは、iptablesFORWARDチェーンを変更するDockerの動作のように見えます。
Chain FORWARD (policy DROP)
target prot opt source destination
DOCKER-OVERLAY all -- anywhere anywhere
DOCKER-ISOLATION all -- anywhere anywhere
DOCKER all -- anywhere anywhere
Chain DOCKER (2 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:postgresql
このウェブサイト 問題の概要を説明します。
Dockerがコンテナーへのすべてのアクセスを転送しないようにするには、コンテナーの実行時に127.0.0.1
を指定します。
docker run -p 127.0.0.1:5432:5432 postgres