我们有一个侦听默认端口(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