首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头集装箱只能通过Cloudflare CDN (选定的ip范围)访问

码头集装箱只能通过Cloudflare CDN (选定的ip范围)访问
EN

Stack Overflow用户
提问于 2020-07-09 18:22:09
回答 1查看 958关注 0票数 2

我的webserver在docker容器中,但是我不能在我的主机上配置iptables (Debian)。我希望允许只允许指定的ip地址在端口80和443上连接到我的计算机(主机)。端口22应可从任何ip访问。在我的例子中,应该允许使用Cloudflare ip地址。Cloudflare可在https://www.cloudflare.com/ips-v4上使用。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-11 18:34:05

解决方案:

代码语言:javascript
复制
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

码头用户的iptables -L结果:

代码语言:javascript
复制
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)描述允许ip地址在端口80或443上连接。

第三部分(DROP)在端口80/443上丢弃未在RETURN部件中列出的连接包。

第四部分(RETURN)是码头用户链中的默认规则.它可以在下一个规则之前处理其他端口上的连接,而不是删除非80/443端口(例如端口22-ssh)上的所有连接。

,这也将丢弃在端口80/tcp上运行的任何停靠容器数据包,但是容器端口没有映射到主机。创建类似于 的问题

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62821274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档