适用于大容量 Nginx 反向代理的最小 iptables 规则集(或者:如何使用 NOTRACK 进行 http 和 https)?

适用于大容量 Nginx 反向代理的最小 iptables 规则集(或者:如何使用 NOTRACK 进行 http 和 https)?

我正在寻找一个用于相当大容量的 Nginx/Varnish 反向代理的最小 iptables 规则集。我想关闭服务器,以便只有端口 80 和 22 可以用于来自外部站点的连接。

此外,我想将端口 80 上的流量排除在连接跟踪之外,因为连接列表往往会变大。另一方面,我希望可以自由地将连接跟踪用于其他用途。

如何实现一个最小规则集,将端口 80 和 443 上的 HTTP 和 HTTPS 流量排除在连接跟踪之外?

这是我的基本规则:

iptables -F 输入
iptables -P 输入删除
iptables -i lo -A 输入 -j 接受
iptables -i eth0 -A 输入 -m 状态 --状态相关,已建立 -j 接受
iptables -i eth0 -A 输入 -p TCP --dport 22 -j 接受
iptables -i eth0 -A 输入 -p TCP --dport 80 -j 接受

iptables -i eth0 -A 输入 -p ICMP -j 接受

服务器在公网 IP(本例中为 10.0.0.1)的端口 80 和 443 上运行 Nginx。Nginx 与 10.0.0.1:8080 上的 Varnish 通信。Varnish 与另一台机器上的 Web 服务器(10.0.0.2:80)通信。此后端 Web 服务器需要与 Varnish 通信以清除 URL。

我尝试过类似

iptables -F PREROUTING -t raw
iptables -F 输出 -t 原始
iptables -t raw -A PREROUTING -p TCP --dport 80 -j NOTRACK
iptables -t raw -A OUTPUT -p TCP --sport 80 -j NOTRACK
iptables -t raw -A PREROUTING -p TCP --dport 8080 -j NOTRACK
iptables -t raw -A OUTPUT -p TCP --sport 8080 -j NOTRACK

以及明确提及源或目标 IP 的变体,但它要么破坏了服务器(通过阻止一些流量),要么没有成功从连接跟踪中删除所有 HTTP 流量。

相关内容