Нет сети после обновления до 16.04

11

Я обновил свой сервер до 16.04 с 14.04, который, в свою очередь, был обновлен с 12.04 с использованием командной строки do-release-upgrade. Это серверная сборка, абсолютно без графического интерфейса. Он запускает apache2, bind9, nfs и несколько других сетевых сервисов. По большей части, ничего не сломалось в обновлении ... кроме сети. Теперь я должен бежать

sudo /etc/init.d/networking start

после каждой перезагрузки заставить его подключаться к сети. Не очень полезно для сервера. Я предполагаю, что сетевой скрипт просто не запускается при запуске; обычно я могу решить проблему, запустив

sudo update-rc.d networking defaults

но приведенная выше команда просто выдает ошибку о невозможности подключения к upstart.

Что я могу сделать, чтобы исправить мою сеть?

Редактировать: содержимое / etc / network / interfaces:

#loopback
auto lo
iface lo inet loopback

#eth0
auto eth0
iface eth0 inet dhcp
ArmanX
источник
Вы можете добавить строки в вашем /etc/network/interfacesфайле к вашему вопросу?
Джон Орион
@JohnOrion сделано. Я также удостоверился, что сетевое устройство было на самом деле eth0; У меня раньше менялись устройства между eth0 и eth1. Это действительно eth0.
ArmanX
Что ifconfigпоказывает? Что происходит, когда ты бежишь sudo ifup eth0?
Серин
1
Для будущих искателей информации: «ifconfig» ничего не показывает; «ifconfig -a» показывает, что адаптер есть, но не активирован. «sudo ifup eth0» (или «sudo ifconfig eth0 up») активирует адаптер, но не запускает клиент dhcp. Поднимите адаптер вручную и запустите dhclient, как и ожидалось.
ArmanX
Тем не менее, я в конечном итоге переустановил все с нуля, что это исправить.
ArmanX

Ответы:

22

тоже самое.

Я думаю, что что-то пошло не так при переходе с upstart на systemd в процессе установки?

я опишу как я это исправил

Следуя этому руководству, я включил сетевую систему: http://xmodulo.com/switch-from-networkmanager-to-systemd-networkd.html

Шаги, которые я сделал:

$ sudo systemctl enable systemd-networkd
$ sudo systemctl enable systemd-resolved
$ sudo systemctl start systemd-resolved
$ sudo rm /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
$ sudo vi /etc/systemd/network/20-dhcp.network

Содержание:

[Match]
Name=e*

[Network]
DHCP=yes

Теперь все работает нормально :-)

HerrTaschenbier
источник
ура! Это решило это и для меня!
Крейг
Не работал здесь Третье утверждение ошибочно.
jjmerelo
2

Решение со статическим адресом:

Чтобы добавить к ответу HerrTaschenbier: Если у вас есть статический адрес на вашем сервере, вы должны проверить, был ли NIC переименован, выполнив, как ifconfig -a я обнаружил, eth0 был переименован в ens32. Используйте эту информацию и примените ее к ответу HerrTaschenbier. Вам также нужно будет создать новый файл, как он указал sudo vi /etc/systemd/network/20-ens32.network. Содержание немного отличается.

[Match] 
Name=ens32

[Network]
DNS=xxx.xxx.xxx.xxx
Domains=somedomain.com
Address=xxx.xxx.xxx
Gateway=xxx.xxx.xxx

Обратите внимание, что формат имени файла содержит имя сетевого адаптера. Не забудьте изменить имя адаптера в файле / etc / network / interfaces. Это произошло со мной с 14.04 до 16.04 обновления.

G_Style
источник
0

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

Запуск systemctl status networking.serviceпоказал, что служба не запустилась из-за ошибки в ifup -aвызове. Запуск ifup -aотдельно показал, что он пытается работать с eth0интерфейсом, пока ifconfig -aуказаны только enp0s31f6и loинтерфейсы. Проверка /etc/network/interfacesпоказала:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Исправление имени интерфейса к тому, что было найдено, ifconfigрешило проблему:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto enp0s31f6
iface enp0s31f6 inet dhcp
Nykodym
источник