Почему разрешение DNS не работает с первой попытки?

После обновления до 16.04 разрешение DNS не удается (возвращает Host Not Found) с первой попытки для любого веб-сайта. Затем я могу сразу же попробовать его во второй раз, и он прекрасно работает.

Немного предыстории:

  • В моей сети есть сервер, на котором установлена ​​более старая версия Ubuntu, и ПК с Windows. Оба они не затронуты (используют те же DNS-серверы, что и проблемный компьютер).
  • Немного покопавшись в интернете, я воспользовался чьим-то советом и
    удалил и удалил resolvconf. Это решило проблему ... пока я
    не перезагрузился. Тогда разрешение DNS вообще не работало (я исправил это, но теперь вернулся к исходной точке).

В моем ограниченном понимании, похоже, что происходит, когда запрос о новом веб-сайте поступает в локальный DNS-кеш (resolvconf?), Он не находится в кеше, поэтому ответ пуст. Затем, когда тот же запрос приходит снова, какой-то процесс тем временем разрешил адрес и обновил кеш, поэтому кеш отвечает адресом.

Я хочу, чтобы, если запрошенный адрес не был в кеше, он пошел и нашел его, прежде чем ответить в первый раз . Кто-нибудь может сказать мне, как это сделать?

Вот вывод из dig (первый раз):

~$ dig www.foo.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.foo.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 6505
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.foo.com.              IN      A

;; Query time: 23 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Thu Jun 02 13:44:49 JST 2016
;; MSG SIZE  rcvd: 34

И всего через несколько секунд вот вывод из dig ( во второй раз):

~$ dig www.foo.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.foo.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53490
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.foo.com.              IN      A

;; ANSWER SECTION:
www.foo.com.       14310   IN      CNAME   foo.com.
foo.com.           210     IN      A       192.0.79.33
foo.com.           210     IN      A       192.0.79.32

;; Query time: 0 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Thu Jun 02 13:46:19 JST 2016
;; MSG SIZE  rcvd: 92
5
задан 2 June 2016 в 17:50

2 ответа

Я сталкиваюсь с той же проблемой. Обходное решение, которое я использую на данный момент, должно добавить вторичный сервер DNS к моему/etc/resolv.conf:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
nameserver 192.168.1.1
search lan

Additionaly я установил dnsmasq который кэши любые запросы DNS. Таким образом, все запросы сначала переходят к dnsmasq (127.0.0.1) и если домен не кэшируется, запрос переходит в 192.168.1.1 (мой маршрутизатор, который также выполняет сервер DNS, Вы могли, конечно, использовать что-то как 8.8.8.8)

, Это обходное решение не идеально, я знаю - но это работает на данный момент. Я между прочим также использую новую установку Ubuntu 16.04

2
ответ дан 2 June 2016 в 17:50

Я сталкиваюсь с той же проблемой. Обходное решение, которое я использую на данный момент:

  • Открывают файл конфигурации Администратора сети:

    sudo nano /etc/NetworkManager/NetworkManager.conf 
    
  • Изменяют следующую строку:

    #dns=dnsmasq
    
  • Сохраняют и перезапускают менеджера:

    sudo service NetworkManager restart
    
5
ответ дан 2 June 2016 в 17:50

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

Похожие вопросы: