squid 代理机器上的 iptables 规则

squid 代理机器上的 iptables 规则

我使用网络浏览器通过鱿鱼代理服务器(我拥有)连接到互联网。代理端口是 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

但显然,这里没有指定端口,所以这并没有达到目的。但是,当我在代理端口中指定时,我无法通过网络浏览器的代理访问互联网:

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

为什么第二套规则不起作用?

答案1

您似乎在防火墙规则中使用了 sport 而不是 dport,反之亦然。它应该是:

iptables -A 输入 -p tcp -s "$my_pc_ip" --dport 3128 -m state --state 新,已建立 -j 接受

iptables -A 输出 -p tcp -d "$my_pc_ip" --sport 3128 -m 状态 --state 已建立 -j 接受

由于规则位于您的代理服务器上,因此在 INPUT 链中,数据包应该与 dport 匹配,即您的代理运行的端口,类似地,在 OUTPUT 链中,它应该与数据包源自的 sport 匹配。

相关内容