如何仅使用一个 HW-NIC 为 squid 代理设置 iptables

如何仅使用一个 HW-NIC 为 squid 代理设置 iptables

我租用了一个带有静态 IP 地址的服务器,现在我想在这个服务器上设置一个透明代理。

在我使用侦听器“http_access allow all”配置了用于测试目的的 squid 之后,我想设置 iptables。我发现我只有一个以太网连接,并且安装了静态 ipaaddress。但至少我没有找到向我展示如何配置它的文档。(发现了很多关于如何使用两个物理独立 NIC 配置 squid 的信息,但没有找到一个 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 才能使透明代理正常工作吗?在没有 ebtables 的情况下,正确的 iptables 是否足以完成此操作?如果是这样,如果您能给我一个字符串来设置它们,我将不胜感激。

#

来源:wiki[.]ubuntuusers[.]de/Squid http://freecode.com/articles/configuring-a-transparent-proxywebcache-in-a-bridge-using-squid-and-ebtables http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html

#

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

接下来,我添加了以下规则,将所有 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

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

答案1

在这种情况下您不能使用透明代理。

透明代理必须位于流量的网络路由中,以便它可以拦截并重写所有流量以将其重定向到 squid,并且由于您的服务器位于网络路径之外,因此您无法执行此操作。

如果您想使用此服务器作为代理,它必须是普通的正向代理。

相关内容