29.3. 启动 Squid

Squid 在 SUSE Linux 中已预先配置,因此安装后就可启动。为保证顺利启动,应该对网络进行配置,使其至少能连接一个名称服务器和因特网。如果拨号连接使用动态 DNS 配置,则可能出现问题。在这种情况下,至少应该输入名称服务器,因为如果在 /etc/resolv.conf 中找不到 DNS 服务器,Squid 便不会启动。

29.3.1. 用于启动和停止 Squid 的命令

要启动 Squid,在命令行中以 root 身份输入 rcsquidstart。首次启动时,必须首先在 /var/cache/squid 中定义超速缓存的目录结构。启动脚本 /etc/init.d/squid 会自动进行定义,该过程可能需要几秒钟甚至几分钟的时间。如果右侧显示绿色的完成,表明已成功装载 Squid。要在本地系统上测试 Squid 的功能,请在浏览器中输入 localhost 作为代理,输入 3128 作为端口。

要允许用户从本地系统和其它系统访问 Squid 并通过它访问因特网,需要将配置文件 /etc/squid/squid.conf 中的项 http_access deny all 改为 http_access allow all。但在这样做时,要考虑到此操作会让所有人都不受任何限制地访问 Squid。因此,应定义控制访问代理的 ACL。有关此内容的详细信息,请参见 第 29.4.2 节 “访问控制选项”

修改配置文件 /etc/squid/squid.conf 后,Squid 必须重装载该配置文件。可通过 rcsquid reload 执行此操作。或者,通过 rcsquid restart 将 Squid 彻底重启动。

可以使用命令 rcsquid status 来检查代理是否正在运行。使用命令 rcsquid stop 将关闭 Squid。这需要一些时间,因为 Squid 在断开同客户机的连接并将其数据写入磁盘前会等候最多半分钟(/etc/squid/squid.conf 中的 shutdown_lifetime 选项)。

[Warning]终止 Squid

使用命令 kill 终止 Squid,否则 killall 可损坏超速缓存。要能够重启动 Squid,必须删除损坏的超速缓存。

如果 Squid 在成功启动后不久就终止,请检查名称服务器项是否有误或者是否缺少 /etc/resolv.conf 文件。Squid 会在 /var/log/squid/cache.log 文件中记录启动失败的原因。如果应该在系统引导时自动装载 Squid,请使用 YaST 运行级别编辑器激活所需的 Squid 运行级别。请参见第 2.9.8 节 “系统服务(运行级别)” (↑启动)

卸载 Squid 并不会删除超速缓存层次或日志文件。要删除这些内容,请手工删除 /var/cache/squid 目录。

29.3.2. 本地 DNS 服务器

建立本地 DNS 服务器很有意义,即便并不用它来管理自己的域。它仅起到超速缓存专用名称服务器的作用,并且可以在无需任何特殊配置的情况下通过根名称服务器解析 DNS 请求(请参见 第 20.3 节 “启动名称服务器 BIND”)。如何完成上述操作,取决于您在配置因特网连接的过程中是否选择了动态 DNS。

动态 DNS

使用动态 DNS 时,因特网服务提供商通常在建立因特网连接过程中设置 DNS 服务器,并自动调整本地文件 /etc/resolv.conf。此行为是在文件 /etc/sysconfig/network/config 中通过 sysconfig 变量 MODIFY_RESOLV_CONF_DYNAMICALLY(被设置为 "yes")控制的。通过 YaST sysconfig 编辑器将此变量设置为 "no"(请参见第 8.3.1 节 “使用 YaST sysconfig 编辑器更改系统配置”)。然后在文件 /etc/resolv.conf 中输入本地 DNS 服务器(localhost 的 IP 地址是 127.0.0.1)。这样 Squid 一启动就能找到本地名称服务器。

为了使服务提供商的名称服务器可访问,必须在配置文件 /etc/named.conf 中的 forwarders 下输入其名称及 IP 地址。使用动态 DNS,通过将 sysconfig 变量 MODIFY_NAMED_CONF_DYNAMICALLY 设置为 YES,可以在建立连接时自动执行上述操作。

静态 DNS

有了静态 DNS,在建立连接时自动 DNS 调整便不会发生,所以不需要更改任何 sysconfig 变量。但是,必须按如上所述在文件 /etc/resolv.conf 中输入本地 DNS 服务器。此外,必须在文件 /etc/named.conf 中的 forwarders 下手工输入服务提供商的静态名称服务器及其 IP 地址。

[Tip]DNS 和防火墙

如果运行了防火墙,应确保 DNS 请求能够通过。