在我的 Linux 机器上,我需要使用需要身份验证才能访问互联网的 ISA 代理。因此,我安装了 CNTLM 并将其配置为指向代理地址并监听端口 4321。
然后我将我的 GNOME 发行版配置为使用 localhost:4321 作为 HTTP 和 HTTPS 的全局代理。
结果:我可以连接到互联网。我可以 ping 通内联网 IP,我确实收到了内联网站点的名称解析,但我无法 ping 通它们,也无法在浏览器中打开任何内联网站点(配置为使用分发代理),除非我使用该站点的 IP 地址。
我尝试在 CNTLM 配置文件中阻止内联网 IP 范围,但没有成功。
答案1
听起来 ISA 代理无法正确解析内部网主机名。一种解决方案是编写一个代理自动配置文件告诉客户端何时以及使用哪个代理。这不适用于使用 的 CLI 程序http_proxy
,但至少可以在浏览器中使用。
将其保存为类似文件~/proxy.pac
并进行修改以适合您的环境。在 GNOME 代理配置中选择“自动代理配置”选项,并以 URL 形式输入此文件的位置file://
,例如file:///home/htorque/proxy.pac
。
function FindProxyForURL(url, host)
{
// Strip port number
host = host.replace(/:\d*/, "");
// Local destinations
if ( isPlainHostName(host) ||
dnsDomainIs(host, ".local") ||
dnsDomainIs(host, ".mycompany") ||
shExpMatch(host, "127.*.*.*") ||
shExpMatch(host, "10.*.*.*") ||
shExpMatch(host, "192.168.*.*") )
return "DIRECT";
// External destinations
return "PROXY localhost:3128";
}