Я настроил прокси SOCKS5 на основе PuTTY следующим образом:
Я настроил IE11 для использования этого прокси следующим образом:
Я также настроил Firefox 52.7.3 (32-разрядный) для использования этого прокси точно так же:
Содержимое файла proxyConfig.pac выглядит следующим образом:
function FindProxyForURL(url, host)
{
if ((url.indexOf(".mydomain.local") >= 1) ) {
return "SOCKS5 127.0.0.1:1080";
}
return "DIRECT";
}
Я могу получить доступ к интернет-сайтам с помощью IE или Firefox.
Я могу получить доступ к сайтам интрасети, которые не входят в mydomain.local, с помощью IE или Firefox.
Я могу получить доступ к сайтам интрасети, которые находятся под mydomain.local с помощью Firefox.
Но вот проблема: я не могу получить доступ к сайтам интрасети, которые находятся под mydomain.local с IE. Используя host.mydomain.local в качестве примера, я получаю эту ошибку:
host.mydomain.local не преобразуется в IP-адрес на ближайшей стороне прокси-сервера, либо через локальный файл hosts, либо через DNS. Тем не менее, он разрешает IP-адрес, через DNS, на дальней стороне прокси.
Захват пакета показывает, что IE11 пытается разрешить host.mydomain.local напрямую (т. Е. На ближайшей стороне прокси-сервера), вместо того, чтобы прокси-сервер делал это. Firefox работает, потому что он не пытается разрешить имя хоста на локальной стороне. Это позволяет прокси-серверу делать это.
Если я отредактирую свой локальный файл hosts так, что host.mydomain.local разрешит на ближней стороне прокси-сервера то, что он будет разрешать на дальней стороне прокси, я все равно получу ошибку. Хотя провал занимает гораздо больше времени. Я полагаю, что это связано с тем, что сбой соединения происходит сейчас, потому что ответ не получен (для которого может быть несколько причин) после некоторого тайм-аута, а не из-за сбоя разрешения имени (который происходит очень быстро).
Можно ли как-то заставить IE11 не пытаться разрешить имя хоста, а просто позволить прокси-серверу делать это вместо этого?
Если нет, есть ли другой способ обойти эту проблему?
ОБНОВЛЕНИЕ 1
Я забыл, что раньше сталкивался с этой проблемой, и узнал, что IE11 не поддерживает разрешение имен на стороне сервера SOCKS5. Имея это в виду...
Почему IE не может подключиться, когда я помещаю IP-адрес host.mydomain.local в мой локальный файл hosts?
Данный IP-адрес нигде не маршрутизируется на локальной стороне. Но все же, должен ли IE передавать HTTP-запрос на этот IP-адрес на прокси-сервер (куда этот IP-адрес направляется куда-то)?
ОБНОВЛЕНИЕ 2
Захват пакета показывает, что IE никогда даже не доходит до выполнения HTTP-запроса. Начальное TCP SYN отправляется непосредственно на целевой IP-адрес (который, как я уже сказал, нигде не маршрутизируется на локальной стороне); он не пытается отправить этот запрос TCP-соединения через прокси.
ОБНОВЛЕНИЕ 3
Я попытался настроить браузер для использования прокси другим способом:
Так что теперь все идет через прокси, а не только запросы к mydomain.local.
Сделав это, я теперь могу получить доступ к хостам на mydomain.local, но ограничения брандмауэра не позволяют мне получать доступ к сайтам интрасети (через прокси-сервер) не под сайтами mydomain.local или Internet.
Конечно, эти ограничения брандмауэра не являются ошибкой IE.
Но это показывает проблему, с которой можно столкнуться при попытке использовать IE с прокси-сервером SOCKS5.
Кажется, не может быть хорошего решения, если кто-то действительно хочет использовать IE.