我尝试阻止除 22、80 和 443 之外的所有端口。我将以下规则添加到iptables
。
*filter
:INPUT ACCEPT [36878:18003219]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [33947:26518456]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -s MY_IP -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
COMMIT
端口 22 正在运行,但 Cloudflare 无法连接到 Web 服务器。-A INPUT -j DROP
导致问题。事实上,443 连接直到列表末尾才与规则匹配。
答案1
因此,经过长时间的评论会议后,我们整理出以下内容:
当您启用自定义防火墙时,CloudFlare 会报告 504 网关超时。但值得注意的是,它表示这是从您的服务器收到的错误,而不是尝试访问您的服务器时超时。两者的区别很微妙但很重要:这意味着 CloudFlare 可以正常与您的服务器通信,但您的服务器无法与自己通信。
您有一个 Web 服务器,它代理运行在本地主机上的内部 Web 应用程序。但您的自定义防火墙不允许本地主机连接。这是 Web 服务器与 Web 应用程序通信所必需的,也是许多其他内部服务相互通信所必需的,因此您使用过的每个专业防火墙构建器都会毫无顾忌地允许本地主机流量。
(PS:您应该保持 ICMP 处于启用状态以防止其他类型的破坏,例如路径 MTU 发现。)