29.5. 配置透明代理

以下为使用代理服务器的一般方式:万维网浏览器向代理服务器的特定端口发送请求,然后代理会提供这些所需的对象,无论它们是否在代理的超速缓存中。在网络中使用时,可能出现以下几种情况:

在所有这些情况下,都可以使用透明代理。原理很简单:代理截获并回复万维网浏览器的请求,所以万维网浏览器接收到所请求的页面,但并不知道它们来自何处。正如名称中指出的那样,整个处理过程完全是透明的。

29.5.1. /etc/squid/squid.conf 中的配置选项

要启动并运行透明代理,需在 /etc/squid/squid.conf 文件中激活的选项包括:

  • httpd_accel_host virtual

  • httpd_accel_port 80

    实际的 HTTP 服务器的端口号是在下面的地方:

  • httpd_accel_with_proxy on

  • httpd_accel_uses_host_header on

29.5.2. 使用 SuSEfirewall2 配置防火墙

现在借助端口转发规则,通过防火墙将所有入站请求重定向到 Squid 端口。可使用附带的 SuSEfirewall2 工具完成此操作,如第 4.1.4.1 节 “使用 YaST 配置”中所述。可以在 /etc/sysconfig/SuSEfirewall2 中找到其配置文件。配置文件的项已进行适当注释。要设置透明代理,必须配置几个防火墙选项:

  • 指向因特网的设备:FW_DEV_EXT="eth1"

  • 指向网络的设备:FW_DEV_INT="eth0"

定义防火墙上从不可信的(外部)网络(如因特网)访问的端口和服务(请参见 /etc/services)。在下例中,仅对外部提供万维网服务:

FW_SERVICES_EXT_TCP="www"

定义防火墙上从安全(内部)网络访问的端口或服务(请参见 /etc/services),包括通过 TCP 和 UDP:

FW_SERVICES_INT_TCP="domain www 3128"
FW_SERVICES_INT_UDP="domain"

这会允许访问万维网服务和 Squid(Squid 的默认端口为 3128)。服务“域”代表 DNS(域名服务)。此服务很常用。如果不需要,只需将其从上面的项中删除并将下面的选项设置为 no

FW_SERVICE_DNS="yes"

最重要的选项是选项数字 15

例 29.1. 防火墙配置:选项 15

# 15.)
# Which accesses to services should be redirected to a local port
# on the firewall machine?
#
# This can be used to force all internal users to surf via your
# Squid proxy, or transparently redirect incoming Web traffic to
# a secure Web server.
#
# Choice: leave empty or use the following explained syntax of
# redirecting rules, separated with spaces.
# A redirecting rule consists of 1) source IP/net,
# 2) destination IP/net, 3) original destination port and
# 4) local port to redirect the traffic to, separated by a colon,
# e.g. "10.0.0.0/8,0/0,80,3128 0/0,172.20.1.1,80,8080"

上面的注释显示了需要遵循的语法。首先,输入访问代理防火墙的内部网络的 IP 地址和网络掩码。其次,输入这些客户机请求发往的 IP 地址和网络掩码。如果使用的是万维网浏览器,请指定网络 0/0(表示“至任意地址”的通配符)。之后,输入这些请求最初发送到的端口以及所有这些请求最终要重定向到的端口。由于 Squid 能够支持 HTTP 以外的更多协议,可将请求从其它端口重定向至代理,如 FTP(端口 21)、HTTPS、或 SSL(端口 443)。在本例中,万维网服务(端口 80)重定向至代理端口(端口 3128)。如果要添加更多网络或服务,必须在对应项中用空格分隔它们。

FW_REDIRECT_TCP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128"
FW_REDIRECT_UDP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128"

要启动防火墙及其新配置,请更改 /etc/sysconfig/SuSEfirewall2 文件的项。必须将 START_FW 项设置为 "yes"

第 29.3 节 “启动 Squid” 所述启动 Squid。要检查是否一切运行正常,请在 /var/log/squid/access.log 中查看 Squid 日志。 要验证是否正确配置了所有端口,请在来自于网络外的任何计算机上执行端口扫描。只有万维网服务(端口 80)应该是打开的。要使用 nmap 扫描端口,命令语法为 nmap -O IP_address