Iptables

squid 代理機器上的 iptables 規則

  • September 19, 2017

我使用我的網路瀏覽器通過 squid 代理伺服器(我擁有)連接到網際網路。代理埠是 3128。我想鎖定執行代理伺服器的機器上的其他埠,但是我的iptables規則完全殺死了代理。以下規則確實有效:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# other rules here for web access, dns, etc
iptables -A INPUT -p tcp -s "$my_pc_ip" -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -d "$my_pc_ip" -m state --state ESTABLISHED -j ACCEPT

但是很明顯,這裡沒有指定埠,所以這並沒有達到目的。但是,當我在代理埠中指定時,我無法通過 Web 瀏覽器中的代理訪問 Internet:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# other rules here for web access, dns, etc
iptables -A INPUT -p tcp -s "$my_pc_ip" --sport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -d "$my_pc_ip" --dport 3128 -m state --state ESTABLISHED -j ACCEPT

為什麼第二組規則不起作用?

您似乎在防火牆規則中使用了運動而不是 dport,反之亦然。它應該是:

iptables -A INPUT -p tcp -s “$my_pc_ip” –dport 3128 -m state –state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp -d “$my_pc_ip” –sport 3128 -m state –state ESTABLISHED -j ACCEPT

由於規則在您的代理伺服器上,因此在 INPUT 鏈中,數據包應與 dport 匹配,即您的代理正在執行的埠,同樣在 OUTPUT 鏈中,它應與數據包的來源匹配。

引用自:https://unix.stackexchange.com/questions/393101