nslookup возвращает правильный IP, ping все еще идет на неправильный IP

Итак, вот настройки. Ноутбук подключен к нашей компании VPN (Juniper Network Connect 7.2.0). Существует два суффикса DNS-поиска (domain1.com, domain2.local). С этого ноутбука, когда он подключен, nslookup опрашивает правильный DNS-сервер и возвращает правильный IP-адрес. Пинг по IP работает нормально. Pinging FQDN работает нормально. Проверка связи с неквалифицированным доменным именем, по-видимому, использует как суффикс hostname.domain.com (даже если он не существует), так и использует результаты с локального DNS-сервера, а не VPN-сервера VPN.

Более детально:

c: \> имя хоста nslookup
Сервер: hostname.domain2.local
Адрес: 10.0.0.10

Неофициальный ответ:
Имя: hostname.domain2.local
Адрес: 10.0.0.10

c: \> nslookup hostname.domain2.local
Сервер: hostname.domain2.local
Адрес: 10.0.0.10

Неофициальный ответ:
Имя: hostname.domain2.local
Адрес: 10.0.0.10

C: \> ping hostname

Пингует hostname.domain1.com [EXTERNAL/WRONG_IP] с 32 байтами данных:
Истекло время запроса.
Истекло время запроса.
Истекло время запроса.
Истекло время запроса.

Статистика пинга для EXTERNAL/WRONG_IP:
Пакеты: отправлено = 4, получено = 0, потеряно = 4 (потеря 100%),

C: \> ping hostname.domain2.local

Пингует hostname.domain2.local [10.0.0.10] с 32 байтами данных:
Ответ от 10.0.0.10: bytes=32 time=50ms TTL=128
Ответ от 10.0.0.10: bytes=32 time=50ms TTL=128
Ответ от 10.0.0.10: bytes=32 time=47ms TTL=128
Ответ от 10.0.0.10: bytes=32 time=50ms TTL=128

Статистика пинга для 10.0.0.10:
Пакеты: отправлено = 4, получено = 4, потеряно = 0 (потеря 0%),
Приблизительное время прохождения туда и обратно в миллисекундах:
Минимум = 47мс, Максимум = 50мс, Среднее = 49мс

Итак, вот что я пробовал до сих пор:

  1. ipconfig / flushdns
  2. netsh int ip сбросить все
  3. Проверено, что сетевые адаптеры находятся в правильном порядке приоритета в расширенных настройках
  4. Проверено правильность маршрутов TCP/IP
  5. Проверено, что имя хоста отсутствует в файле hosts.

Итак... кто-нибудь знает, почему он по-прежнему использует неправильный DNS-сервер?

4 ответа

Существует разница между разрешением имен nslookup и разрешение имен сетевым API Windows, используемое почти каждым приложением.

Стандартный процесс разрешения имен в Windows происходит в следующем порядке:

  1. Проверьте имя локального компьютера
  2. HOSTS файл
  3. DNS, локальный кеш
  4. DNS, DNS-серверы в порядке приоритета
  5. WINS-серверы
  6. Трансляция NetBIOS через TCP/IP (NetBT)

nslookupОднако отличается тем, что:

  1. Он ограничивается только зарегистрированными DNS-серверами.
  2. Это не ограничивается полным FQDN; он может найти частичные, а затем сказать, что он это сделал. Другие приложения могут предполагать hostname полное доменное имя или попытка добавить основной DNS-суффикс (определяется SystemPropertiesComputerName.exe) и специфичные для соединения DNS-суффиксы перед разрешением.

Вы можете использовать Wireshark (бесплатное стороннее диагностическое приложение), чтобы узнать, откуда ping решает ваш hostname,

Пара возможных вещей.

Попробуйте route print и убедитесь, что у вас нет статического маршрута, который может быть причиной этого.

Вы уверены, что "ping hostname" разрешается DNS, а не WINS? Если вы можете полностью пройти квалификацию и получить хороший результат, но получите ошибку на коротком имени, это может быть плохой записью WINS. Проверьте ваш сервер выигрышей и удалите / исправьте все неправильные записи. также беги NBTSTAT -RR на твоем махине

Проверьте и настройте порядок поиска в DNS (он уже описан в комментариях)

Убедитесь, что на вашей машине нет мошеннических записей HOSTS / LMHOSTS.

У вас может быть жесткий адрес в вашем hosts файл.

nslookup использует другую схему разрешения, чем остальные (включая ping но также gethostbyname() метод в стандартной библиотеке).

Некоторая дополнительная информация доступна, например, по адресу https://jdebp.eu/FGA/nslookup-results-different-to-ping.html

Если кто-нибудь наткнется на это, решение, вероятно, очень простое: DNS кэшируется на общедоступном IP-адресе. чтобы очистить это, просто запустите «ipconfig /flushdns». Это происходит, если пользователь пытается подключиться с IP-адресом, отличным от VPN, а затем подключается к VPN до истечения срока действия кеша.nslookup просматривает DNS-серверы, ping не просматривает DNS-серверы, если только ему не нужно выяснить IP-адрес, поэтому, если IP-адрес уже кэширован, DNS-сервер даже не проверяется.

единственная возможная проблема, хотя в этом случае и ping, и nslookup, скорее всего, будут иметь один и тот же неправильный IP-адрес. поскольку вашему компьютеру необходимо знать, какие настройки сетевого адаптера должны иметь приоритет, на каждом сетевом адаптере существует порядок приоритетов, называемый метрикой интерфейса. Метрика интерфейса адаптера VPN должна иметь наивысший приоритет и будет использоваться по умолчанию, но иногда другое программное обеспечение (установлено несколько программ VPN и т. д.) может мешать. чтобы установить это, перейдите в список сетевых адаптеров (Панель управления\Сеть и Интернет\Сетевые подключения) найдите сетевой адаптер VPN (который создается используемым вами программным обеспечением VPN; это может быть адаптер TAP-Windows или иметь имя программного обеспечения VPN). в нем) заходим в свойства и свойства IPV4 в разделе «Дополнительно» на вкладке «Общие», там есть «Автоматическая метрика», которая проверяется. снимите флажок и введите 1 в поле «Метрика интерфейса». повторно подключитесь к VPN, чтобы изменения вступили в силу. это должно быть так.

Другие вопросы по тегам