Docker容器只能通过Cloudflare CDN访问(部分IP范围) [英] Docker container accessible only via Cloudflare CDN (selected ip ranges)

查看:0
本文介绍了Docker容器只能通过Cloudflare CDN访问(部分IP范围)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在坞站容器中有Web服务器,但我无法在我的主机(Debian)上配置iptable。我希望只允许指定的IP地址在端口80和443上连接到我的计算机(主机)。端口22应该可以从任何IP访问。在我的情况下,允许的应该是Cloudflare IP地址。CloudFlare IPS位于https://www.cloudflare.com/ips-v4

如何正确阻止端口80和443上的非Cloudflare iPS连接?

推荐答案

解决方案:

iptables -F DOCKER-USER
iptables -I DOCKER-USER -j RETURN
iptables -I DOCKER-USER -p tcp -m multiport --dports http,https -j DROP
for i in `curl -s https://www.cloudflare.com/ips-v4`;
        do iptables -I DOCKER-USER -p tcp -i eth0 -m multiport --dports http,https -s $i -j RETURN;
done
iptables -I DOCKER-USER -o eth0 -d 0.0.0.0/0 -j ACCEPT

Docker-User的iptables -L结果:

ACCEPT     all  --  anywhere             anywhere
RETURN     tcp  --  <ACCEPTED IPs>       anywhere             multiport dports http,https
DROP       tcp  --  anywhere             anywhere             multiport dports http,https
RETURN     all  --  anywhere             anywhere

解释:
第一部分(ACCEPT)接受来自Web服务器(停靠容器)的传出流量。
第二部分(RETURN)介绍了允许在端口80或443上连接的IP地址。 第三部分(DROP)丢弃RETURN部分中未列出的端口80/443上的连接的数据包。
第四部分RETURN是Docker-User链中的默认规则。这样就可以按照下面的规则处理其他端口上的连接,而不是丢弃非80/443端口(例如端口22-ssh)上的所有连接。

这篇关于Docker容器只能通过Cloudflare CDN访问(部分IP范围)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆