VPS 上的 Docker 并使用 iptables 仅允许通过特定 IP 地址进行访问

VPS 上的 Docker 并使用 iptables 仅允许通过特定 IP 地址进行访问

我正在尝试在 VPS 上设置 Docker,并使在各个端口上运行的所有容器仅对我的 IP 地址可用。这仅用于开发目的。

证明这个概念的最简单设置是nginx在端口上运行容器80。我想阻止除我的 IP(我们称之为 123.123.123.123)之外对该容器的所有访问。

由于 Docker 直接编辑 iptables 并具有一些转发规则,我尝试的所有解决方案都不起作用。要么流量被完全阻止,要么仍然可以从任何 IP 地址访问。

什么是正确的设置才能将所有内容仅锁定到我的 IP 地址?

谢谢!

答案1

我也不是专家,现在正在自学 iptables。但鉴于这是 docker 在您的主机上设置的规则:

user@server:~# sudo iptables -L FORWARD

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere

您可以在 DOCKER* 目标前插入一条新规则。这将需要删除不是来自您的 IP 的包。

sudo iptables -I FORWARD 1 -s ! 123.123.123.123 -j DROP

尽管在 FORWARD 链上工作,如果您像我一样对 iptables 不太熟悉,您应该使用命令 iptables-apply 来避免将自己锁定。

iptables-apply 可以使用配置文件。

sudo iptables -L > config.v4
<edit file>
sudo iptables-apply config.v4

您的新规则 -A FORWARD !-s 62.157.38.52 -j DROP

应该在 -A FORWARD -j DOCKER-USER 之前运行

如果此限制仅针对 docker,那么您也可以将其添加到您的 DOCKER-USER 链中。

相关内容