尝试连接到本地主机时鱿鱼DNS失败

时间:2018-06-21 17:38:01

标签: http proxy localhost squid

我正在运行本地http服务器和本地squid实例。本地http客户端打开一个连接到squid实例的套接字,这似乎可以正常工作。然后,我尝试通过发出以下http请求来隧道传输到本地http服务器:

CONNECT localhost:80 HTTP/1.1\r\n

产生响应头

Content-Language   en
Content-Length   3612
Content-Type   text/html;charset=utf-8
Date   Thu, 21 Jun 2018 17:28:10 GMT
Mime-Version   1.0
Server   squid/3.5.27
Vary   Accept-Language
X-Squid-Error   ERR_DNS_FAIL 0

,状态为503。 我还尝试连接到127.0.0.1,这会产生以下响应:

Content-Language   en
Content-Length   3433
Content-Type   text/html;charset=utf-8
Date   Thu, 21 Jun 2018 17:35:16 GMT
Mime-Version   1.0
Server   squid/3.5.27
Vary   Accept-Language
X-Squid-Error   ERR_CONNECT_FAIL 111

我的squid.conf看起来像这样:

http_port 3128
coredump_dir /var/spool/squid

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 1025-65535  # unregistered ports
acl CONNECT method CONNECT

acl any_host src all
acl all_dst dst all

http_access allow any_host
http_access allow all_dst

有没有其他方法可以告诉squid连接到本地主机?

2 个答案:

答案 0 :(得分:0)

以某种方式,鱿鱼试图将localhost解析为127.0.0.1,最终导致连接失败。但是,指定[::1]而不是localhost可以达到预期效果。

答案 1 :(得分:0)

我发现是localhost解析为[::1]而不是127.0.0.1解析的失败所在。

要绕过/etc/hosts/,只需将以下内容添加到/etc/squid/hosts

127.0.0.1 localhost

然后在您的hosts_file /etc/squid/hostssquid.conf

当然可以将文件放在您想要的任何位置。