这是从这里的第二部分。
当客户端VPN到我的networking,他们得到分配一个IP地址,这反过来给他们从DHCP的252选项。 自动检测然后抓取这个文件
我基本上需要的是proxy.pac找出一个客户端是否在VPN连接上,以便它可以parsing一个DIRECT的方法。
所以,如果我做一个简单的var myIp = myipAddress() ,然后只是从这些固定地址列表匹配它,那么它将被解决。 然而,myIpAddress()函数似乎是拿起本地IP到机器(例如:192.168.10.1),而不是networking适配器。 在我的情况下,本地地址是我的MS Loopback,这是我的一些本地虚拟机所需要的。 如果我禁用我的环回适配器,它开始parsing正确的地址。 这不是一个理想的解决方法。
那么我该如何去解决我想从正确的适配器的IP地址?
提前致谢…
不幸的是,在Windows 中获取myIpAddress()返回正确的地址确实涉及到改变NIC的优先级(在Windows XP中,这是在“networking连接”对话框的“高级”菜单的“高级设置…”对话框)。
这是别人的问题,看起来像你所看到的: http : //www.geurtsrus.com/gerke/2005/01/proxy-auto-configuration-blues.html
您可能会更好地检测需要代理的IP地址,而不是那些不需要代理的IP地址(即公司内的本地子网),否则将采用DIRECT。
另一种方法是将不同的PAC DHCP选项传递给VPN上的客户端。 如果你的VPN用户从一个专用的子网出来,这可能是容易的,但是如果他们是从一个LAN子网出来的话,这可能是不容易的。
可以将wpad.datredirect到wpad.aspx并使用ASP查找IP地址:
<% Dim strClientIP As String strClientIP = Request.UserHostAddress() %> function FindProxyForURL(url, host) { //proxy definition var UseProxy = "PROXY xxxx:8080" if (isPlainHostName(host)) {return "DIRECT"; } if (isInNet("<%Response.Write(strClientIP)%>", "xx1.0", "255.255.255.0")) return UseProxy; else return "DIRECT"; }
你使用的是什么浏览器? 基于Mozilla的浏览器遇到了这个问题,但是它们不能轻易解决,因为函数调用最初是在假定系统是单宿主的情况下定义的(除非你从物理networking断开连接,并且只在环回中运行)。