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。

于 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 删除

码头工人网络

于 2015-09-26T00:23:20.923 回答