Tim*_*all 5 linux firewall iptables tcp
我试图通过调整 iptables 以不跟踪 TCP 连接的状态来提高我的服务器的性能。我正在查看本指南:http : //cotdp.com/2011/07/nginix-on-a-256mb-vm-slice-24000-tps/
但是,如果我执行以下任何操作,似乎所有传出连接都被切断了:
删除此规则: INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
添加这些:
iptables -t raw -I OUTPUT -j NOTRACK iptables -t raw -I PREROUTING -j NOTRACK
在进行任何更改后立即使“ping google.com”返回有关无法找到“google.com”的错误(即DNS停止解析)。
以下是在启动时加载的规则,但随后由 fail2ban 添加其他规则:
*筛选 -A 输入 -i lo -j 接受 -一个输入!-i lo -d 127.0.0.0/8 -j 拒绝 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A 输出 -j 接受 -A 输入 -p icmp -j 接受 -A 输入 -p tcp --dport ssh -j 接受 -A 输入 -p tcp --dport http -j 接受 -A 输入 -p tcp --dport https -j 接受 -A 输入 -p tcp --dport smtp -j 接受 -A 输入 -p tcp --dport ssmtp -j 接受 -A 输入 -j 拒绝 -A 转发 -j 拒绝 犯罪
这是 iptables --list 的输出:
链输入(政策接受) 目标 prot opt 源目标 fail2ban-ssh tcp -- 任何地方多端口 dports ssh fail2ban-ssh-ddos tcp -- 任何地方多端口 dports ssh fail2ban-pam-generic tcp -- 任何地方 接受所有 - 任何地方任何地方 REJECT all -- 任何地方环回/8 拒绝与 icmp-port-unreachable 接受所有 - 任何地方状态相关,已建立 接受 icmp -- 任何地方 接受 tcp -- 任何地方 tcp dpt:ssh 接受 tcp -- 任何地方 tcp dpt:www 接受 tcp -- 任何地方 tcp dpt:https 接受 tcp -- 任何地方 tcp dpt:smtp 接受 tcp -- 任何地方 tcp dpt:ssmtp REJECT all -- 任何地方都拒绝-with icmp-port-unreachable Chain FORWARD(策略接受) 目标 prot opt 源目标 REJECT all -- 任何地方都拒绝-with icmp-port-unreachable 链输出(政策接受) 目标 prot opt 源目标 接受所有 - 任何地方任何地方 链 fail2ban-pam-generic(1 参考) 目标 prot opt 源目标 返回所有 - 任何地方任何地方 链 fail2ban-ssh(1 参考) 目标 prot opt 源目标 返回所有 - 任何地方任何地方 链 fail2ban-ssh-ddos(1 参考) 目标 prot opt 源目标 返回所有 - 任何地方任何地方
您有一条阻止所有传入流量的规则:
-A INPUT -j REJECT
Run Code Online (Sandbox Code Playgroud)
并且您停止连接跟踪,因此接受已建立连接的数据包的规则不再起作用:
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
因此,您的 DNS 数据包发出后不会被跟踪,然后会被第一条规则拒绝。
您需要启用跟踪才能使第二条规则发挥作用,或者添加规则以允许来自“良好”来源的传入流量。