Я обновил свой сервер до 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
то же самое здесь.
Я думаю что-то произошла ошибка при переходе с выскочки на systemd в процессе установки?
я опишу, как я это исправил
Следуя этому руководству, я включил сеть 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
Теперь все работает нормально: -)
Я столкнулся с той же проблемой после длительного использования 16.04, возможно, какое-то обновление все испортило.
Выполнение systemctl status network.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
Чтобы добавить к ответу HerrTaschenbier: Если у вас есть статический адрес на вашем сервере, вы должны проверить, был ли переименован сетевой адаптер, выполнив 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.