通过使用iptables为less数主机传递鱿鱼

我们有一个侦听默认端口(3128)的鱿鱼代理设置:在eht0(192.xxx)上。

它有另一个接口eth1(10.xxx)用来连接外部世界。 它使用squidguard进行高质量的内容过滤。

但是现在我们希望networking中的一些主机绕过鱿鱼。 提供完全访问less数人。

我正在考虑一些使用iptables的东西:来自那些特定主机(代理被传递的)在代理的端口3128上的eth0的任何数据包应该被redirect到eth1,并且应该能够访问任何东西。

这会工作吗? 如果是,那么请帮我规则?

我知道这可以使用squidgaurd以良好的方式完成,但只想与iptables做到这一点。

除非您使用透明代理,否则您无法实现这一目标,而您并不是这样。 使用明确configuration的代理iptables将只能看到客户端主机和squid代理之间的对话。 这将使交通pipe理不可能,因为iptables将不知道你想要的网站/ IP地址。

然而,你可以用透明代理相当容易地做到这一点。 也就是说,iptables会将所有wwwstream量redirect到代理,除非它符合某些标准。

如果在透明模式下使用代理服务器是您的一个select,那么如果您按照以下指南进行操作,则可以实现您的目标,但是修改iptables中的prerouting阶段,以便在代理服务器redirect之上有exception。 像这样:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -s $PROXY_BYPASS_HOST -j RETURN iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port $SQUID-SERVER:$SQUID_PORT 

SQUID / iptables透明代理howto

它不会工作,因为HTTP“聊天”被embedded到客户端代理会话中。

但是,您可以将代理服务器configuration为透明,并根据需要设置redirectiptables规则。

使用范围规则的iptables绕过squid透明模式。

 #NAT: iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE iptables --append FORWARD --in-interface eth0 -j ACCEPT #Bypass range of ip: iptables -t nat -A PREROUTING -i eth0 -m iprange ! --src-range 192.168.3.39-192.168.3.44 -p tcp --dport 80 -j DNAT --to 192.168.3.1:8028 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8028