我正在使用Tomato USB路由器以透明模式将端口80的请求转发到Ubuntu Server与鱿鱼3。 番茄论坛上的某些人适应番茄的这些说明 :
#!/bin/sh INTERNAL_NETWORK="192.168.1.0/24" ROUTER_IP="192.168.1.1" PROXY_SERVER="192.168.1.3" PROXY_PORT="3128" /usr/sbin/iptables -t nat -A PREROUTING -i br0 -s $INTERNAL_NETWORK -d $INTERNAL_NETWORK -p tcp --dport 80 -j ACCEPT /usr/sbin/iptables -t nat -A PREROUTING -i br0 -s ! $PROXY_SERVER -p tcp --dport 80 -j DNAT --to $PROXY_SERVER:$PROXY_PORT /usr/sbin/iptables -t nat -A POSTROUTING -o br0 -s $INTERNAL_NETWORK -p tcp -d $PROXY_SERVER -j SNAT --to $ROUTER_IP /usr/sbin/iptables -t filter -I FORWARD -s $INTERNAL_NETWORK -d $PROXY_SERVER -i br0 -o br0 -p tcp --dport $PROXY_PORT -j ACCEPT
转发按原样进行,请求由Squid处理。 说明显示的规则绕过networking上的某些机器。 我的问题是,我需要绕过一些有问题的网站,而不是一个特定的机器。 我试着添加这个:
/usr/sbin/iptables -t nat -A PREROUTING -d caixa.gov.br -j ACCEPT
此规则不起作用。 我不希望caixa.gov.br(和其他几个)完全转交给代理人。 但番茄仍在转发所有网站。
是否有可能为我不想转发的每个网站添加规则?
iptables -A ...将规则放在链的末尾。 因此,你的一个从来没有匹配(或至less没有效果),因为第二个( -s ! $PROXY_SERVER )已经得到这些数据包/连接。
而不是iptables -A PREROUTING你需要iptables -I PREROUTING 2 。 或者你创build链,使结构更容易理解:
#!/bin/bash INTERNAL_NETWORK="192.168.1.0/24" ROUTER_IP="192.168.1.1" PROXY_SERVER="192.168.1.3" PROXY_PORT="3128" if iptables -L prerouting_exceptions -n &>/dev/null; then iptables -t nat -F prerouting_exceptions else iptables -t nat -N prerouting_exceptions fi # this prevents the same rule being inserted with each script call if ! iptables -L FORWARD -n | grep -q proxy; then iptables -t filter -I FORWARD -s $INTERNAL_NETWORK -d $PROXY_SERVER -i br0 \ -o br0 -p tcp --dport $PROXY_PORT -j ACCEPT -m comment --comment proxy fi iptables -t nat -F PREROUTING iptables -t nat -A PREROUTING -j prerouting_exceptions iptables -t nat -A PREROUTING -i br0 -s ! $PROXY_SERVER -p tcp \ --dport 80 -j DNAT --to $PROXY_SERVER:$PROXY_PORT iptables -t nat -A prerouting_exceptions -i br0 -s $INTERNAL_NETWORK \ -d $INTERNAL_NETWORK -p tcp --dport 80 -j ACCEPT iptables -t nat -A prerouting_exceptions -d caixa.gov.br -j ACCEPT
我试了你的答案。 除了caixa.gov.br之外,我还添加了www1.caixa.gov.br,因为它也显示在鱿鱼日志上。
鱿鱼日志:
1367165802.899 151455 192.168.1.1 TCP_MISS/503 4261 GET http://www.caixa.gov.br/ - DIRECT/www.caixa.gov.br text/html
在Tomato USB上使用iptables -t nat -L -nv的结果:
Chain PREROUTING (policy ACCEPT 117 packets, 10457 bytes) pkts bytes target prot opt in out source destination 155 12613 prerouting_exceptions all -- * * 0.0.0.0/0 0.0.0.0/0 12 660 DNAT tcp -- br0 * !192.168.1.103 0.0.0.0/0 tcp dpt:80 to:192.168.1.103:3128 Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 169 12403 MASQUERADE all -- * ppp0 0.0.0.0/0 0.0.0.0/0 12 660 SNAT all -- * br0 192.168.1.0/24 192.168.1.0/24 to:192.168.1.1 Chain OUTPUT (policy ACCEPT 73 packets, 5279 bytes) pkts bytes target prot opt in out source destination Chain WANPREROUTING (0 references) pkts bytes target prot opt in out source destination 0 0 DNAT icmp -- * * 0.0.0.0/0 0.0.0.0/0 to:192.168.1.1 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9740 to:192.168.1.117:9740 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5740 to:192.168.1.101:5740 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:34184 to:192.168.1.117:34184 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:14983 to:192.168.1.117:14983 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:54184 to:192.168.1.101:54184 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:51413 to:192.168.1.103:51413 0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:42020 to:192.168.1.100:42020 Chain prerouting_exceptions (1 references) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- br0 * 192.168.1.0/24 192.168.1.0/24 tcp dpt:80 14 800 ACCEPT all -- * * 0.0.0.0/0 200.201.166.106 12 696 ACCEPT all -- * * 0.0.0.0/0 200.201.166.240
ip地址caixa.gov.br:
#host caixa.gov.br aixa.gov.br has address 200.201.166.106 caixa.gov.br mail is handled by 0 bootes1.caixa.gov.br. caixa.gov.br mail is handled by 0 bootes.caixa.gov.br.