为什么这些 iptables 规则阻止我浏览网络?
iptables -A INPUT -i eth0 -p tcp --dport 30000:60000 -m state --state NEW,ESTABLISHED -j DROP
iptables -A OUTPUT -o eth0 -p tcp --sport 30000:60000 -m state --state ESTABLISHED -j DROP
您iptables -F
可以清除 iptables 规则,以防您在尝试这些规则后仍然无法浏览网络。
我正在使用 Ubuntu 12.04,但我在我的 Debian 服务器上也看到了这个问题。
答案1
Web 浏览器需要为每个 HTTP 请求指定一个端口。这些端口(很少)由浏览器选择,而是由内核选择。内核不会查看 ipfilter 规则,它只会尝试使用空闲端口。大多数情况下,会使用 30000 到 60000 之间的端口。
要查看你的内核正在尝试使用哪个端口范围:
cat /proc/sys/net/ipv4/ip_local_port_range
您可以使用以下方式更改这些值:
echo 1234 5678 >/proc/sys/net/ipv4/ip_local_port_range # for immediate effect
或者编辑/etc/sysctl.conf
文件以在重启后保留设置。
编辑:正如@TomWijsman所建议的,默认值是:
echo 32768 61000 >/proc/sys/net/ipv4/ip_local_port_range