如何为 Squid 代理设置 iptables?

如何为 Squid 代理设置 iptables?

我在具有静态 IP 地址的服务器上租用了空间,并且想在此服务器上设置透明代理。

在使用 listener 配置 Squid 进行测试后http_access allow all,我想设置 iptables 信息。我只有一个以太网连接,其中挂载了静态 IP 地址。我查找了一些有关如何使用单个 NIC 执行此操作的文档,但找不到任何文档。(有很多文档适用于两个或更多 NIC,但没有适用于单个 NIC。)

目前它给了我这个输出:

root@1:~# ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:49 errors:0 dropped:0 overruns:0 frame:0
          TX packets:49 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3536 (3.5 KB)  TX bytes:3536 (3.5 KB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:127.0.0.1  P-t-P:127.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.255
          inet6 addr: ::2/128 Scope:Compat
          inet6 addr: 2a01:[....]external-ipv6[...]/128 Scope:Global
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:551353 errors:0 dropped:0 overruns:0 frame:0
          TX packets:455717 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:351211942 (351.2 MB)  TX bytes:267054641 (267.0 MB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:[...]external-ipv4[...]  P-t-P:[...]external-ipv4[...]  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

我不太确定接下来该怎么做。我的 iptables 目前完全是空的。我需要 ebtables 才能让透明代理正常工作吗?或者正确的 iptables 足以在没有 ebtables 的情况下完成此操作吗?如果是这样,您能给我一个简单的命令来设置它们吗?

资料来源:

#

特别是这句话应该可以解释我如何做到这一点,但我不明白......

接下来,我添加了以下规则,将所有 http 请求(到达端口 80)转发到 Squid 服务器端口 3128:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 80 -j DNAT --to 127.0.0.1:3128
iptables -t nat -A PREROUTING -i venet0:0 -p tcp --dport 80 -j REDIRECT --to-port 3128

这应该可行,但是它不起作用......

相关内容