為什麼這些 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