如何正确配置 PAC 文件?

如何正确配置 PAC 文件?

我的网络中有一个 squid + diladele 代理盒。我已设置一个 PAC 文件,该文件应执行以下操作:

1)如果客户端的 IP 地址属于当前网络(192.168.0.0/24)并尝试访问网络外部的资源,请使用代理。2)如果客户端尝试访问内部资源,则直接访问并绕过代理

以下是我目前所写的内容

// If the IP address of the local machine is within a defined
// subnet, send to a specific proxy.
    if (isInNet(myIpAddress(), "192.168.0.0", "255.255.255.0"))
        return "PROXY 192.168.0.253:3128";

// If the requested website is hosted within the internal network, send direct.
    if (isPlainHostName(host) ||
        shExpMatch(host, "*local") ||
        isInNet(dnsResolve(host), "192.168.0.0","255.255.0.0") ||
        isInNet(dnsResolve(host), "127.0.0.1", "255.255.255.255")||
        shExpMatch(host,"localhost"))
        return "DIRECT";
// DEFAULT RULE: All other traffic, use below proxies, in fail-over order.
        return "DIRECT";

一切都很完美,然而,当我尝试访问资源时localhost(我的设备上有一个灯堆栈),由于某种原因,我被重定向到我的代理 Web 界面(192.168.0.253)。 我究竟做错了什么?

答案1

这或许能解释一下正在发生的事情:

if (isInNet(myIpAddress(), "192.168.0.0", "255.255.255.0"))
    return "PROXY 192.168.0.253:3128";

“myIpAddress 函数经常被报告给出不正确或不可用的结果,例如 127.0.0.1,即本地主机的 IP 地址。删除系统主机文件(例如 Linux 上的 /etc/hosts)上任何引用机器主机名的行可能会有所帮助,而行 127.0.0.1 localhost 可以并且应该保留。在 Internet Explorer 9 上,isInNet("localHostName", "second.ip", "255.255.255.255") 返回 true 并且可以用作解决方法。myIpAddress 函数假定设备具有单个 IPv4 地址。如果设备具有多个 IPv4 地址或具有 IPv6 地址,则结果不确定。”

https://en.wikipedia.org/wiki/Proxy_auto-config#The_PAC_File

相关内容