Squid中文权威指南第十六章

2009-05-13 12:02:08来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

第16章 调试和故障处理
16.1 一些通用问题
在讨论通用debug前,我先提起一些经常发生的问题。
16.1.1 "Failed to make swap directory"Failed to make swap directory /var/spool/cache: (13) Permission denied
这点发生在你运行
[url=javascript:;]squid[/url]
-z,并且squid的用户ID没有对/var/spool目录的写权限的时候。记住假如以root来启动squid,并且没有增加cache_effective_user行,那么squid默认以nobody用户运行。解决方法很简单:
# chown nobody:nobody /var/spool
16.1.2 "Address already in use"commBind: Cannot bind socket FD 10 to *:3128: Address already in use
这个消息出现在bind()系统调用失败时,因为请求端口已经被其他应用程序所打开。通常,若已有一个squid在运行,而又试图启动第2个squid实例,就会发生这种情况。假如你见到这个错误消息,请使用ps来观察是否squid已经在运行。
Squid
使用SO_REUSEADDR
socket选项,以便bind()调用总能成功,即使仍有一些残余的socket位于TIME_WAIT状态。若该消息出现,尽管squid没有在运
行,但你的操作系统可能在处理这个问题上有bug。重启操作系统是解决问题的一个方法。
另一个可能性是端口(例如3128)当前已被其他应用程序
[url=javascript:;]使用[/url]
。假如你怀疑这点,就可使用lsof程序来发现哪个应用正在该端口上侦听。
[url=javascript:;]FreeBSD[/url]
用户能使用sockstat代替。
16.1.3 "Could not determine fully qualified hostname"FATAL: Could not determine fully qualified hostname.  Please set 'visible_hostname'
假如squid不能识别它自己的完整可验证域名,就会报这个错。如下是squid使用的算法:
  • 1) 假如你将squid的HTTP端口绑定在指定的接口地址上,squid试图对该地址执行反向DNS查询。假如成功,查询答案就被用上。
  • 2) Squid调用gethostname( )函数,然后使用 gethostbyname( )函数,试着解析其IP地址。假如成功,squid使用后者函数返回的官方主机名串。

假如以上2项技术都不能工作,squid以前面提到的致命错误消息退出。在该情形下,必须使用visible_hostname指令来告诉squid它的主机名。例如:
visible_hostname my.host.name
16.1.4 "DNS name lookup tests failed"
默认情况下,squid在启动前执行一些DNS查询。这点确保你的DNS服务器可到达,并且运行正确。假如测试失败,可在cache.log或syslog里见到如下消息:
FATAL: ipcache_init: DNS name lookup tests failed
假如你在内网里使用squid,squid可能不能查询到它的标准主机名列表。可使用dns_testnames指令来指定你自己的主机名。只要接受到响应,squid就会认为DNS测试成功。
假如你想完全跳过DNS测试,简单的在启动squid时,使用-D命令行选项:
% squid -D ...
16.1.5 "Illegal character in hostname"urlParse: Illegal character in hostname 'super_bikes.tripod.com'
默认情况下,squid检查URL的主机名部分的字符,假如它发现了非标准的字符,squid会抱怨。参考RFC 1034和1035,名字必须由字母A-Z,数字0-9,以及短横线(-)组成。下划线(_)是最有问题的字符之一。
Squid验证主机名是因为,在某些情形下,DNS对畸形字符的解析会很困难。例如:
% host super_bikes.tripod.com
super_bikes.tripod.com has address 209.202.196.70


% ping super_bikes.tripod.com
ping: cannot resolve super_bikes.tripod.com: Unknown server error

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Squid中文权威指南第十五章

下一篇:OpenVPN for OpenBSD