Windows Server 2012 R2 любопытное поведение с записью хостов
TL; DR... наша политика домена молча принудительно отправляет настройки локальной сети (включая ссылку на прокси-сервер) на мою машину через заданный интервал, что произошло во время разработки, но после того, как я вручную отключил прокси-сервер. Поскольку я точно знал, что отключил его для локальных адресов, мне не пришло в голову, что это будет причиной моей проблемы.
На одной из моих машин разработки под управлением Windows Server 2012 R2 я наблюдаю странное поведение с локальным разрешением узла через файл hosts.
[ Описание для воспроизведения ]
Приставка
C:\Windows\system32>ping baz.inga
Ping request could not find host baz.inga. Please check the name and try again.
C:\Windows\system32>_
Файл хостов
127.0.0.1 baz.inga
::1 baz.inga
Вернуться в консоль
C:\Windows\system32>ping baz.inga
Pinging baz.inga [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\Windows\system32>_
... Затем я размещаю приложение на localhost:7890
обманщик
/ GET http://baz.inga:7890/
[Ожидается]: разрешение локального хоста разрешает "baz.inga" в "localhost" и обслуживает мой контент
[Actual]: 503 ответ "Служба недоступна" и ошибка поиска DNS
Есть ли разумное объяснение, почему это не разрешается локально? Я протестировал ту же самую процедуру на компьютере под управлением Windows 7, и ответ на HTTP-прокси является локально разрешенным ресурсом.
WTH?!?!
2 ответа
HTTP 503 - это сообщение об ошибке вашего приложения, а не ошибка поиска DNS; если запрос не смог достичь вашего приложения из-за отсутствия разрешения его имени хоста, он не получил бы ответ 503.
Похоже, ваше разрешение имени в порядке (как и ожидалось, и подтверждается ping
за работой); ваше приложение, напротив, нет.
Наша групповая политика требует, чтобы настройки локальной сети для домена автоматически передавались на все подключенные машины по таймеру.
Несмотря на то, что я отключил прокси-скрипт при настройке разрешения локального хоста, когда таймер был включен, ссылка на прокси-скрипт молча была принудительно протолкнута через локальную сеть и представила мою ошибку. Поскольку я уже отключил http-прокси вручную, мне не пришло в голову, что это будет корнем моей проблемы и что он "должен" быть чем-то более сложным.
Вместо создания новой политики "привилегированных" доменов, в которой эти строгие параметры не выставляются автоматически, наше решение состоит в том, чтобы определить соглашение, в котором хостам, предназначенным для разрешения на локальном компьютере, будет предоставлен основанный на соглашении "зарезервированный" конечный сегмент полномочий, который затем автоматически разрешается через прокси как прямую ссылку, изменяя файл proxy.pac, выдвинутый из DC с помощью
if(dnsDomainIs(host, ".reserved")) { return "DIRECT"; }