Прокси-развлечение
Я создаю виртуальную машину Ubuntu 18.10 на моем хосте Windows 10 с помощью Vagrant с VMware Workstation 15.
Виртуальная машина, похоже, работает нормально, включая большую часть сетевого доступа.
Но с одним важным хостом мне не повезло:
$ ping -c 4 production.cloudflare.docker.com
ping: production.cloudflare.docker.com: Temporary failure in name resolution
(Когда я делаю то же самое в Cygwin на хосте Windows, все работает отлично.)
Чтодолженбыть причиной?DNS-серверы имен!
Однако тот, который systemd-resolve --status
сообщает мне, что использует ( "Current DNS Server: 8.8.4.4"
на eth0
, единственный интерфейс со значительными объемами RX и TX)работает хорошокогда я пробую это явно:
$ dig @8.8.4.4 production.cloudflare.docker.com
; <<>> DiG 9.11.4-3ubuntu5.1-Ubuntu <<>> @8.8.4.4 production.cloudflare.docker.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45235
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
[...]
production.cloudflare.docker.com. 117 IN A 104.18.122.25
production.cloudflare.docker.com. 117 IN A 104.18.121.25
production.cloudflare.docker.com. 117 IN A 104.18.125.25
production.cloudflare.docker.com. 117 IN A 104.18.124.25
production.cloudflare.docker.com. 117 IN A 104.18.123.25
но когда я прохожу Ubuntuлокальный прокси, запростерпит неудачу:
$ dig production.cloudflare.docker.com
; <<>> DiG 9.11.4-3ubuntu5.1-Ubuntu <<>> production.cloudflare.docker.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 60815
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
[...]
;; SERVER: 127.0.0.53#53(127.0.0.53)
Видимо, 127.0.0.53
он не делает то, что, по моему мнению, должен делать. (Заметьте, я новичок в сетевых технологиях.)
Что я упускаю?
Я даже не уверен, это больше вопрос Ubuntu или вопрос VMware. Или, может быть, вопрос Vagrant?
Вздрогнуть.
решение1
Это изменение на три байта!
В сети есть много сообщений об ошибках DNS в Ubuntu. Как и в ответе HackSlash, большинство ответов предлагают жестко закрепить предполагаемые серверы имен в /etc/resolv.conf
. Но если я правильно понимаю, это отключит локальное кэширование, что кажется глупым и немного антисоциальным, поэтому я не хотел этого делать.
В чем проблема?
Я наконец нашел объяснение вhttps://superuser.com/a/1200745/372846: Ubuntu, systemd-resolved
по-видимому, не может правильно обрабатывать серверы имен с использованием DNSSEC. Нужно отключить поддержку DNSSEC, и все будет хорошо.
Решение
В файле /etc/systemd/resolved.conf
замените строку DNSSEC=yes
на DNSSEC=no
; затем перезапустите службу распознавания с помощью sudo systemctl restart systemd-resolved
.
Мое оставшееся замешательство
В посте выше говорилось об Ubuntu 17.04, когда, по-видимому, systemd-resolved
Ubuntu была довольно новой. Комментарий подэтот ответна тот же вопрос утверждает, что значение по умолчанию будет изменено на DNSSEC=no
в более поздних версиях Ubuntu. Я на 18.10, и это все еще не произошло -- и полная возможность DNSSEC не появилась.Что за фигня?
решение2
На этот вопрос был дан ответ на askubuntu. Существует множество решений, которые рекомендуют вам установить другой резолвер.
В этом ответе говорится, что вам не нужно этого делать:
Если вы ищете быстрое и грубое решение, вы можете просто настроить systemd-resolved для использования ваших DNS-серверов глобально:
$ cat /etc/systemd/resolved.conf
<...>
[Resolve]
DNS=8.8.8.8 8.8.4.4
<...>
Затем перезагрузите компьютер systemd-resolved.service
или выполните перезагрузку.
ПОЛНЫЙ ОПРОС И ОТВЕТЫ: https://askubuntu.com/questions/1012641/dns-set-to-systemds-127-0-0-53-how-to-change-permanently