3

У меня есть настройка сервера OpenVPN в центре обработки данных и использую tunnelblick в качестве клиента. После подключения он добавляет маршруты в мою сеть DC LAN 10.0.0.0/24 и использует 10.0.0.1 в качестве основного DNS, 8.8.8.8 в качестве вторичного DNS.

10.0.0.1 разместить DNS-записи моего поддоменов в dc.example.com

Проблема в том, что когда VPN-туннель установлен, разрешение DNS не работает согласованно.

Как я проверил, и /etc/resolve.conf, и «Системные настройки - Сеть - DNS-серверы» показывают одинаковый результат, который имеет «10.0.0.1» и «8.8.8.8», как и ожидалось.

Однако в терминале я получил смешанный результат между "копанием" и "пингом". За копать я могу получить что-то вроде

➜  ~ dig ftp.dc.example.com

; <<>> DiG 9.8.3-P1 <<>> ftp.dc.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22990
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;ftp.dc.example.com.        IN  A

;; ANSWER SECTION:
ftp.dc.example.com. 3600    IN  A   10.0.1.13

;; Query time: 84 msec
;; SERVER: 10.0.0.1#53(10.0.0.1)
;; WHEN: Thu Nov 24 15:39:21 2016
;; MSG SIZE  rcvd: 55

Но за пинг я получил

➜  ~ ping ftp.dc.example.com
ping: cannot resolve ftp.dc.example.com: Unknown host

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

Как видите, нет проблем с сетью или с DNS-сервером, иначе "копание" не сработает.

Но если я сделаю запрос «www.google.com», то будут работать и "ping", и "dig".

Таким образом, кажется, что когда VPN-соединение установлено, resol.conf соответствующим образом обновляется, но некоторые приложения могут по-прежнему запрашивать старый DNS-сервер.

Я попытался открыть приложение терминала или использовать другой терминал, такой как iTerm, тот же результат. Но если я подожду некоторое время, скажем, 10-15 минут, то пинг и браузер будут работать.

2 ответа2

1

Похоже, что на вас влияет DNS-кэширование OS X. Это может быть вопрос ручной очистки кеша в клиентском скрипте «вверх» для вашего VPN-соединения. Эта статья может быть полезна для вас http://osxdaily.com/2014/11/20/flush-dns-cache-mac-os-x/

0

Когда OS X настроен с несколькими DNS-серверами (например, 10.0.0.1 и 8.8.8.8), их системный распознаватель не рассматривает их как первичные или вторичные или что-то подобное, он просто использует их все. Поэтому, когда вы пытаетесь связаться с ftp.dc.example.com, он может попытаться найти это имя на сервере 10.0.0.1 (и успешно), или он может попробовать с сервером 8.8.8.8 (и с ошибкой). Какой из них используется для любого данного поиска, является более или менее случайным.

Единственное известное мне решение - не включать DNS-серверы в список, если только вы не хотите, чтобы они их использовали. В этом случае это означает использование только 10.0.0.1, а не 8.8.8.8.

Кстати, dig , host и nslookup не проходят через системный преобразователь и, следовательно, не будут вести себя одинаково - все они будут использовать первый DNS-сервер из списка, если вы специально не скажете им запрашивать другой сервер.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .