我正在寻找一个用于相当大容量的 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 流量。