Docker не может получить доступ к DNS даже с установленными параметрами DNS в проводной сети университета

528
memorableUserNameHere

Запуск (слегка измененного) образа докера Ubuntu: 16.04, не может получить доступ к DNS-серверам. Об этом свидетельствует возможность пропинговать разрешенный IP-адрес для google.com (например, 172.217.4.142, который был разрешен на другом компьютере), но не может пропинговать google.com.

root@12345678910:/# ping -c 1 216.58.194.174 PING 216.58.194.174 (216.58.194.174) 56(84) bytes of data. 64 bytes from 216.58.194.174: icmp_seq=1 ttl=46 time=20.5 ms --- 216.58.194.174 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 20.551/20.551/20.551/0.000 ms  root@12345678910:/# ping -c 1 google.com  ping: unknown host google.com 

Большая часть моего поиска в Google вызывает проблемы с установкой флагов DNS. Однако я попытался установить переменную DOCKER_OPTS так, /etc/default/dockerчтобы она указывала на многие DNS-серверы:

DOCKER_OPTS="--dns 209.244.0.3 --dns 209.244.0.4 --dns 64.6.64.6 --dns 64.6.65.6 --dns 8.8.8.8 --dns 8.8.4.4 --dns 84.200.69.80 --dns 84.200.70.40 --dns 8.26.56.26 --dns 8.20.247.20 --dns 208.67.222.222 --dns 208.67.220.220 --dns 199.85.126.10 --dns 199.85.127.10 --dns 81.218.119.11 --dns 209.88.198.133 --dns 195.46.39.39 --dns 195.46.39.40 --dns 192.95.54.3 --dns 192.95.54.1 --dns 208.76.50.50 --dns 208.76.51.51 --dns 216.146.35.35 --dns 216.146.36.36 --dns 37.235.1.174 --dns 37.235.1.177 --dns 198.101.242.72 --dns 23.253.163.53 --dns 77.88.8.8 --dns 77.88.8.1 --dns 91.239.100.100 --dns 89.233.43.71 --dns 74.82.42.42 --dns 109.69.8.51" 

а также установка переменной DNS в /etc/docker/daemon.json(как описано здесь ):

{ "dns": [ "209.244.0.3", "209.244.0.4", "64.6.64.6", "64.6.65.6", "8.8.8.8", "8.8.4.4", "84.200.69.80", "84.200.70.40", "8.26.56.26", "8.20.247.20", "208.67.222.222", "208.67.220.220", "199.85.126.10", "199.85.127.10", "81.218.119.11", "209.88.198.133", "195.46.39.39", "195.46.39.40", "192.95.54.3", "192.95.54.1", "208.76.50.50", "208.76.51.51", "216.146.35.35", "216.146.36.36", "37.235.1.174", "37.235.1.177", "198.101.242.72", "23.253.163.53", "77.88.8.8", "77.88.8.1", "91.239.100.100", "89.233.43.71", "74.82.42.42", "109.69.8.51" ] } 

безуспешно ни для одной попытки.

(Это все IP-адреса DNS-серверов, перечисленные на сайте lifewire )

Один вариант, который я хотел попробовать, состоял в том, чтобы сбросить таблицы ip и сетевой мост, но это предложение слишком старое, чтобы доверять (например docker -d, больше не является допустимой командой)

Возможная проблема заключается в том, что это устройство находится в сети Ethernet университета и должно быть занесено в белый список с адресом оборудования Ethernet устройства. На хост-машине Ubuntu16 это было eno1устройство (если я использую правильный термин). Моей первой мыслью было, что, поскольку docker0аппаратный адрес отличается, возможно, университетская сеть блокирует этот трафик. Но я не думаю, что это проблема, потому что я все еще могу пропинговать необработанный IP-адрес. Может быть, что-то теряется при переводе при запросе DNS?

Какие-либо предложения?

Информация о версии:

  • Хост: Linux hostname 4.4.0-92-generic # 115-Ubuntu SMP четверг, 10 августа 09:04:33 UTC 2017 x86_64 x86_64 x86_64 GNU / Linux
  • Контейнер: Ubuntu: 16.04 с скопированным пингом хоста (невозможно установить с apt без интернета).
  • Докер: Докер версия 1.12.6, сборка 78d1802
0

1 ответ на вопрос

0
memorableUserNameHere

Это закончилось проблемой с университетской сетью. Насколько я понимаю, они каким-то образом блокировали запросы DNS, и мы получили указание использовать адрес их внутреннего DNS-сервера в конфигурации нашего докера.