%20%D0%B2%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D0%B5%D1%82%20%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%B0%D0%B4%D1%80%D0%B5%D1%81%2C%20%D0%B0%20%D0%BD%D0%B5%20Ethernet-%D0%B0%D0%B4%D0%B0%D0%BF%D1%82%D0%B5%D1%80%D1%8B.png)
Это своего рода часть дваотсюда.
Когда клиенты подключаются к моей сети через VPN, им назначается IP-адрес, который в свою очередь дает им опцию 252 от DHCP. Затем автоматическое обнаружение захватывает этот файл
По сути, мне нужен способ, с помощью которого proxy.pac мог бы определить, находится ли клиент в VPN-соединении, чтобы разрешить ему DIRECT.
Итак, если я сделаю простоеvar myIp = myipAddress()и затем просто сопоставить его со списком этих фиксированных адресов, тогда это будет решено. Однако функция myIpAddress(), похоже, выбирает локальный IP-адрес машины (например, 192.168.10.1), а не сетевого адаптера. В моем случае этот локальный адрес — мой MS Loopback, который нужен для некоторых моих локальных виртуальных машин. Если я отключу свой адаптер Loopback, он начнет разрешать правильный адрес. Это не идеальный обходной путь.
Так как же мне получить нужный мне IP-адрес от правильного адаптера?
- На данный момент я провожу это тестирование на своем локальном компьютере.
- Я понимаю, что это не закрытое VPN-решение, это просто принятое на данный момент решение.
Заранее спасибо...
решение1
К сожалению, заставить myIpAddress() вернуть правильный адрес в Windowsделаетвключают изменение приоритета сетевых карт (в Windows XP это находится в диалоговом окне «Дополнительные параметры...» меню «Дополнительно» диалогового окна «Сетевые подключения»).
Вот проблема другого человека, похожая на ту, что видите вы:http://www.geurtsrus.com/gerke/2005/01/proxy-auto-configuration-blues.html
Возможно, вам будет лучше определить IP-адреса, которым требуется проксирование, а не те, которым это не нужно (например, локальные подсети в компании), и в противном случае предположить DIRECT.
Другой альтернативой было бы передать другой параметр PAC DHCP клиентам VPN. Это может быть легко, если ваши пользователи VPN выходят из выделенной подсети, но это может быть не так, если они выходят из подсети LAN.
решение2
Можно перенаправить wpad.dat в wpad.aspx и узнать IP-адрес с помощью ASP:
<%
Dim strClientIP As String
strClientIP = Request.UserHostAddress()
%>
function FindProxyForURL(url, host)
{
//proxy definition
var UseProxy = "PROXY x.x.x.x:8080"
if (isPlainHostName(host)) {return "DIRECT"; }
if (isInNet("<%Response.Write(strClientIP)%>", "x.x.1.0", "255.255.255.0"))
return UseProxy;
else
return "DIRECT";
}
решение3
Какой браузер вы используете? У браузеров на базе Mozilla были проблемы с этим, но их было нелегко решить, поскольку вызов функции изначально был определен в предположении, что система является однодомной (что совершенно неверно, если только вы не отключены от физической сети и не работаете только в режиме обратной связи).