2

特定の IP からの 5432 への接続のみを受け入れるデータベース マシンを作成したいと考えています。このデータベース マシンへの接続を許可したい他のマシンは、docker を実行していません。docker-machineこの docker-compose ファイルを使用して、デジタル オーシャンで使用するホストをデプロイしました。

postgres:
  restart: always
  image: postgres:latest
  volumes:
    - /tmp/postgrescont:/tmp
  volumes_from:
    - data
  env_file: .dbenv
  ports:
    - "5432:5432"

data:
  restart: always
  image: postgres:latest
  volumes:
    - /var/lib/postgresql
  command: "true"

そして、次のような別の特定のホストからのトラフィックのみを許可しようとしました:

$ iptables -A INPUT -p tcp --dport 5432 -s <ip address of certain other host> -j ACCEPT
$ iptables -A INPUT -p tcp --dport 5432 -j DROP # deny other traffic

しかし、何らかの理由で、不要なホストからまだ接続できます。なぜそれが機能していないのですか?

4

2 に答える 2

2

これは、ポート 5432 を特定の IP に制限する方法です。

iptables -I DOCKER 1 -p tcp ! -s <other_host_ip_allowed> --dport 5432 -j DROP

DOCKER チェーンの最初のルールとしてルールを挿入し、指定した IP 以外の IP をドロップします。

于 2015-09-25T02:59:19.780 に答える
0

それはまさにDockerが推奨するものです。

Docker の転送ルールは、デフォルトですべての外部ソース IP を許可します。特定の IP またはネットワークのみがコンテナーにアクセスできるようにするには、DOCKER フィルター チェーンの先頭に否定ルールを挿入します。たとえば、ソース IP 8.8.8.8 のみがコンテナーにアクセスできるように外部アクセスを制限するには、次のルールを追加できます。

$ iptables -I DOCKER -i ext_if ! -s 8.8.8.8 -j ドロップ

Docker ネットワーキング

于 2015-09-26T00:23:20.923 に答える