如何限制公网IP访问容器?

各位大虾好!

我的服务器上有一个gitlab容器,对应的端口情况如下:

[root@iZbp1amui80n3nqvdl14o0Z ~]# docker port gitlab
80/tcp -> 0.0.0.0:80
22/tcp -> 0.0.0.0:2222
443/tcp -> 0.0.0.0:443
[root@iZbp1amui80n3nqvdl14o0Z ~]# 

现在我想限制1.1.1.1和2.2.2.2这两个IP可以通过公网来访问gitlab 的web页面,于是我就使用iptables如下:

iptables -I INPUT -p tcp --dport 443 -j DROP
iptables -I INPUT -s 1.1.1.1 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -s 2.2.2.2 -p tcp --dport 443 -j ACCEPT

发现并没有像普通的服务器那样生效,依旧可以让其他IP访问,我又尝试了

iptables -I DOCKER -i docker0 ! -s 1.1.1.1 -j DROP
iptables -I DOCKER -i docker0 ! -s 2.2.2.2 -j DROP

发现也没什么作用,请问应该如何更改?

阅读 6.3k
1 个回答

问题解决了:

iptables -A DOCKER-USER -i eth0 -s 1.1.1.1 -p tcp -m conntrack --ctorigdstport 443 -j ACCEPT
iptables -A DOCKER-USER -i eth0 -s 2.2.2.2 -p tcp -m conntrack --ctorigdstport 443 -j ACCEPT
iptables -A DOCKER-USER -i eth0 -p tcp -m conntrack --ctorigdstport 443 -j DROP
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题