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мс
Итак, вот что я пробовал до сих пор:
- ipconfig / flushdns
- netsh int ip сбросить все
- Проверено, что сетевые адаптеры находятся в правильном порядке приоритета в расширенных настройках
- Проверено правильность маршрутов TCP/IP
- Проверено, что имя хоста отсутствует в файле hosts.
Итак... кто-нибудь знает, почему он по-прежнему использует неправильный DNS-сервер?
4 ответа
Существует разница между разрешением имен nslookup
и разрешение имен сетевым API Windows, используемое почти каждым приложением.
Стандартный процесс разрешения имен в Windows происходит в следующем порядке:
- Проверьте имя локального компьютера
HOSTS
файл- DNS, локальный кеш
- DNS, DNS-серверы в порядке приоритета
- WINS-серверы
- Трансляция NetBIOS через TCP/IP (NetBT)
nslookup
Однако отличается тем, что:
- Он ограничивается только зарегистрированными DNS-серверами.
- Это не ограничивается полным 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, чтобы изменения вступили в силу. это должно быть так.