Защо вашият PAC файл избира грешния мрежов адаптер
Един лаптоп може да има няколко локални адреса. PAC правило, базирано на myIpAddress(), може да идентифицира различен интерфейс от очаквания.
Лаптопът е на офис Wi-Fi, Ethernet кабелът е свързан, а VPN адаптерът все още присъства. Вашият PAC файл пита myIpAddress() в коя мрежа се намира. Това звучи разумно, докато не получи адрес, принадлежащ на грешния адаптер.
Липсващата подробност е, че функцията връща един адрес. Тя не е опис на всеки интерфейс и не се свързва с уебсайт, за да открие вашия публичен IP. Частен адрес или дори резервен loopback не ви казва кой изходен адрес ще използва прокси заявката.
Един отговор за машина с няколко адреса
Изборът на мрежов интерфейс принадлежи на PAC реализацията. Старият съвет да пренареждате Windows адаптери може да описва конкретна версия на браузър и операционна система, но е лоша универсална поправка. Chromium документира собствения си алгоритъм за избор и ограничения при множество мрежи; друг клиент не е длъжен да направи същия избор.
Започнете с идентифициране на стойността, която засегнатият браузър действително е предоставил, след което я сравнете с проверките на подмрежата в скрипта си. Направете това отделно за Wi-Fi, Ethernet и одобрената VPN връзка. Адрес, който изглежда изненадващ, все още може да отговаря на правилата на реализацията.
Направете решението по-малко зависимо от догадки
Където е практично, избирайте прокси въз основа на името на хоста на местоназначението, а не на предполагаем клиентски интерфейс. Ако откриването на мрежата е необходимо, използвайте преднамерен, документиран сигнал, който вашата организация контролира. Откриването чрез DNS също има режими на отказ, затова дефинирайте какво се случва, когато този сигнал е недостъпен.
Някои реализации предлагат myIpAddressEx(). Проверете поддръжката и формата на връщане, преди да го приемете; той не е пряка замяна на един IPv4 низ. Накрая проверете независимо маршрута на заявката. Правилното разпознаване на офис подмрежата и достигането до желаното прокси са два отделни резултата.