我在我的远程服务器中托管了一个与端口 8081 绑定的 dockerized Web 应用程序。 我想为外部 ip 阻止该 Web 应用程序,因为我已经使用端口 8080 托管了一个普通的 jenkins 服务器。 这是我尝试过的:
iptables -A INPUT -d <my-server-ip> -p tcp --dport 8081 -j DROP
就像我对 8080 端口所做的一样。
这里是
iptables -nv -L INPUT
输出:
Chain INPUT (policy ACCEPT 2836 packets, 590K bytes)
pkts bytes target prot opt in out source destination
495 23676 DROP tcp -- * * 0.0.0.0/0 <my-ip-addr> tcp dpt:8080
0 0 DROP tcp -- * * 0.0.0.0/0 <my-ip-addr> tcp dpt:8081
是否可能与 iptables 中的 DOCKER 链有关?
Chain DOCKER (1 references)
pkts bytes target prot opt in out source destination
9 568 ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 <container-eth1-addr> tcp dpt:8080
我需要添加更具体的规则吗? 我的服务器 INPUT 规则不是应该在 DOCKER 链中列出的规则之前应用吗?
更新 - 已解决
感谢 larsks 的评论,我找到了解决方案。
这里的目标是阻止与 docker docker 容器绑定的端口 8081 上的 tcp 流量,但能够使用 ssh 隧道作为“穷人”VPN(因此不发布端口不是一种选择)。 只需添加此规则:
iptables -I DOCKER-USER 1 -d <container-eth-ip> ! -s 127.0.0.1 -p tcp --dport 8080 -j DROP