Причина
При определённой конфигурации сети, чаще при установке на сервер без доступа в Интернет или с использованием прокси сервера, некоторые опций из /etc/resolv.conf передаются в сетевые интерфейсы Kubernetes и приводят к ошибке.
Решение
Общая рекомендация: сделать максимально плоские и однозначные настройки для DNS на хосте, в частности — указать только nameserver. Ниже приведены примеры настроек сети и dns с помощью разных средств.
Настройка DNS NameServer с помощью Netplan со статическим IP-адресом
1. Откройте файл конфигурации netplan /etc/netplan/00-installer-config.yaml (имя файла может отличаться от одной установки к другой), с помощью следующей команды:
Код:
# sudo nano /etc/netplan/00-installer-config.yaml
Ubuntu 18.04 и выше использует netplan для настройки вашей сети, и /etc/network/interfaces больше не существует. Файл конфигурации netplan должен находиться по адресу /etc/netplan/.
Затем приведите файл к следующему виду, заменив значение полей addresses и nameservers на свои:
Код:
# This is the network config written by ‘subiquity’
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.5/24
nameservers:
addresses:
- 192.168.1.1
routes:
- to: default
via: 192.168.6.1
Обратите внимание, название сетевого интерфейса указывается в зависимости от вашей конфигурации ОС Linux.
2. Сохраните файл конфигурации и выйдите из файла, нажав Ctrl + x.
3. Чтобы применить изменения к этому файлу с помощью netplan используйте следующую команду:
Код:
# sudo netplan apply
Настройка NetworkManager с использованием nmcli для настройки DNS nameserver
Чтобы игнорировать настройки DNS, отправленные на хост по DHCP и указать nameserver, выполните следующие команды
Код:
# sudo nmcli conn modify "$(nmcli -t connection show --active | cut -f 01 -d ':')" ipv4.ignore-auto-dns yes
# sudo nmcli conn modify "$(nmcli -t connection show --active | cut -f 01 -d ':')" ipv4.dns "8.8.8.8"
# sudo systemctl restart NetworkManager
Настройка службы networking/resolvconf со статическим IP-адресом
1. Проверьте и, в случае отсутствия, установите пакет resolvconf, который позволяет осуществить настройку DNS на основе данных сетевых служб. Выполните команду для установки:
Код:
# sudo apt-get install resolvconf
2. При наличии в системе NetworkManager лучше его отключить, для чего выполните команду:
Код:
# sudo systemctl --now mask NetworkManager
3. Внесите изменения в файл /etc/network/interfaces (на примере интерфейса eth0)
Код:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
Обратите внимание, Ubuntu 18.04 и выше использует netplan для настройки вашей сети, и /etc/network/interfaces больше не существует. Файл конфигурации netplan должен находиться по адресу /etc/netplan/.
4. Проверьте корректность файла:
5. Перезапустите интерфейс:
Код:
# sudo ifdown eth0; sudo ifup eth0
Возможные ошибки:
Ошибка interface eth0 not configured.
Очистите все сетевые адреса, назначенные сетевому интерфейсу, и снова перезапустите интерфейс:
Код:
# sudo ip address flush dev eth0
Ошибка /etc/resolvconf/update.d/libc: Warning: /etc/resolv.conf is not a symbolic link to /run/resolvconf/resolv.conf
Выполните следующую команду и ответьте ДА, чтобы создать ссылку и включить динамическое обновление:
Код:
# sudo dpkg-reconfigure resolvconf
Ручное редактирование DNS в файле /etc/resolv.conf (НЕ РЕКОМЕНДУЕТСЯ):
1. Закомментировать в /etc/resolv.conf лишние записи (кроме nameserver)
2. Если установлено получение опций для DNS с DHCP сервера (через некоторое время закомментированные строки раскомментируются), то:
а) проверить, на какой файл ссылается /etc/resolv.conf (команда ls -l /etc/resolv.conf).
Пример:
Код:
# ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 40 Dec 10 14:23 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
б) создать свой файл, оставить только запись nameserver
Пример файла:
Код:
# cat /run/systemd/resolve/clean-resolv.conf
nameserver 127.0.0.53
в) заменить ссылку в /etc/resolv.conf (команда ln -sf).
Пример:
Код:
# ln -sf /run/systemd/resolve/clean-resolv.conf /etc/resolv.conf
Результат:
Код:
# ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 40 Dec 10 14:23 /etc/resolv.conf -> ../run/systemd/resolve/clean-resolv.conf