使用代理服务器的常用方式如下:Web 浏览器向代理服务器中的某端口发送请求,代理提供这些所需的对象(不论它们是否在其缓存中)。在网络中使用时,可能出现以下几种情况:
出于安全考虑,建议所有客户机都使用代理来浏览因特网。
所有客户机都必须使用代理,无论客户机是否清楚这一点。
网络中的代理已转移,但是现有的客户机应保留原有配置。
在所有这些情况下,都可以使用透明代理。原理很简单:代理截获并应答 Web 浏览器的请求,所以 Web 浏览器接收到所请求的页面,但并不知道它们来自何处。正如名称中指出的那样,整个处理过程完全是透明的。
要通知 squid 作为透明代理使用,请使用透明选项,该选项位于主配置文件 /etc/squid/squid.conf 中的标记 http_port 处。重新启动 squid 后,要做的唯一一件事就是重新配置防火墙,将 http 端口重定向到 http_port 中给定的端口。在以下 squid 配置行中,它是端口 3128。
http_port 3128 transparent
现在借助端口转发规则,通过防火墙将所有入站请求重定向到 Squid 端口。可使用附带的 SuSEfirewall2 工具完成此操作,如第 8.4.1 节 “Configuring the Firewall with YaST” (第 8 章 Masquerading and Firewalls, ↑安全指南)中所述。可以在 /etc/sysconfig/SuSEfirewall2 中找到其配置文件。配置文件的项已进行适当注释。要设置透明代理,必须配置几个防火墙选项:
设备指向因特网:FW_DEV_EXT="eth1"
设备指向网络:FW_DEV_INT="eth0"
定义防火墙上从不可信的(外部)网络(如因特网)访问的端口和服务(请参见 /etc/services)。在下例中,仅对外部提供 Web 服务:
FW_SERVICES_EXT_TCP="www"
定义防火墙上从安全(内部)网络访问的端口或服务(请参见 /etc/services),包括通过 TCP 和 UDP:
FW_SERVICES_INT_TCP="domain www 3128" FW_SERVICES_INT_UDP="domain"
这会允许访问 Web 服务和 Squid(Squid 的默认端口为 3128)。服务“域”代表 DNS(域名服务)。此服务很常用。如果不需要,只需将其从上面的项中删除并将下面的选项设置为 no:
FW_SERVICE_DNS="yes"
最重要的选项是选项数字 15:
例 30.1. 防火墙配置:选项 15
# 15.) # Which accesses to services should be redirected to a local port on # the firewall machine? # # This option can be used to force all internal users to surf via # your squid proxy, or transparently redirect incoming webtraffic to # a secure webserver. # # Format: # list of <source network>[,<destination network>,<protocol>[,dport[:lport]] # Where protocol is either tcp or udp. dport is the original # destination port and lport the port on the local machine to # redirect the traffic to # # An exclamation mark in front of source or destination network # means everything EXCEPT the specified network # # Example: "10.0.0.0/8,0/0,tcp,80,3128 0/0,172.20.1.1,tcp,80,8080"
上面的注释显示了需要遵循的语法。首先,输入访问代理防火墙的内部网络的 IP 地址和网络掩码。其次,输入这些客户机请求发往的 IP 地址和网络掩码。如果使用的是 Web 浏览器,请指定网络 0/0(表示“至任意地址的通配符)。”之后,输入这些请求最初发送到的端口以及所有这些请求最终要重定向到的端口。由于 Squid 能够支持 HTTP 以外的协议,可将请求从其他端口重定向至代理,如 FTP(端口 21)、HTTPS、或 SSL(端口 443)。在本例中,Web 服务(端口 80)重定向至代理端口(端口 3128)。如果要添加更多网络或服务,必须在对应项中用空格分隔它们。
FW_REDIRECT="192.168.0.0/16,0/0,tcp,80,3128"
要启动防火墙及其新配置,请更改 /etc/sysconfig/SuSEfirewall2 文件的项。必须将 START_FW 项设置为 "yes"。
按第 30.3 节 “启动 Squid”所述启动 Squid。要检查是否一切运行正常,请在 /var/log/squid/access.log 中查看 Squid 日志。要验证是否正确配置了所有端口,请在来自网络外的任何计算机上执行端口扫描。只有 Web 服务(端口 80)应该是打开的。要使用 nmap 扫描端口,命令语法为 nmap -O IP_address。