ifup не может вызвать eth0 после обновления до 16.04

Я обновил свой сервер с 14.04 до 16.04. Я вижу следующую ошибку в системном журнале:

ifup[478]: Internet Systems Consortium DHCP Client 4.2.4
ifup[478]: Copyright 2004-2012 Internet Systems Consortium.
ifup[478]: All rights reserved.
ifup[478]: For info, please visit https://www.isc.org/software/dhcp/
ifup[478]: Usage: dhclient [-4|-6] [-SNTP1dvrx] [-nw] [-p <port>] [-D LL|LLT]
ifup[478]:             [-s server-addr] [-cf config-file] [-lf lease-file]
ifup[478]:             [-pf pid-file] [--no-pid] [-e VAR=val]
ifup[478]:             [-sf script-file] [interface]
ifup[478]: Failed to bring up eth0.
systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start Raise network interfaces.
systemd[1]: networking.service: Unit entered failed state.

systemd[1]: networking.service: Failed with result 'exit-code'.

Я также получаю ту же ошибку, если я пытаюсь сделать это вручную

# ifup --verbose eth0
Configuring interface eth0=eth0 (inet)
/bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/ethtool
run-parts: executing /etc/network/if-pre-up.d/wireless-tools
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant

/sbin/dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -I -df /var/lib/dhcp/dhclient6.eth0.leases eth0
Usage: dhclient [-4|-6] [-SNTP1dvrx] [-nw] [-p <port>] [-D LL|LLT]
             [-s server-addr] [-cf config-file] [-lf lease-file]
             [-pf pid-file] [--no-pid] [-e VAR=val]
             [-sf script-file] [interface]
Failed to bring up eth0.

Я могу пинговать 8.8.8.8. Но не может разрешить любые доменные имена.

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

5 ответов

Я столкнулся с этим на новой установке сервера 16.04 на Raspberry Pi. По какой-то причине Network Manager не был установлен по умолчанию, и после запуска dist-upgrade и перезагрузки у меня не было сети.

Я следовал инструкциям в этом блоге, чтобы он снова заработал. По сути, отображение для eth0 было повреждено. Обычно Network Manager может автоматически это исправить, но без этого вам придется делать это самостоятельно. Для этого я сначала побежал:

sudo networkctl

который показал мне все мои сетевые интерфейсы, такие как lo, wlan0 и что-то под названием enc238897s9879c3, что на самом деле должно быть eth0.

Чтобы исправить отображение, я запустил:

sudo ip link set enc238897s9879c3 name eth0
sudo systemctl restart networking

и это исправило. Бег ifconfig показал у меня был IP, и работает ping google.com показал у меня был интернет.

Похоже, что обновление каким-то образом испортило пакеты, связанные с сетью. Я сделал следующее, что привело к решению проблемы. Я не уверен, какие из них были необходимы, хотя.

# apt install network-manager
# systemctl enable systemd-networkd
# systemctl enable systemd-resolved
# systemctl start systemd-networkd
# systemctl start systemd-resolved
# apt install isc-dhcp-client
# dpkg-reconfigure resolvconf

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

# apt install isc-dhcp-client

Я столкнулся с этой же проблемой на моей виртуальной машине, загруженной QEMU. Я решил это с помощью нескольких простых команд, и я покажу вам, как это сделать. Кстати, это применимо и к ОС, загруженной на реальной машине. Только если вы войдете в режим восстановления, столкнувшись с такой ошибкой.

  1. беги посмотреть, что случилось. Это даст вам некоторую полезную информацию обратной связи. В моем случае я нахожу сообщение Failed to bring up ens3.Кажется, сетевое устройство ens3 недоступно.

  2. бежать ip link showчтобы выяснить доступные устройства на вашем компьютере. В моем случае это enp0s3.

  3. бежать vim /etc/network/interfacesизменить ens3 на enp0s3.

  4. бежать sudo systemctl restart networking.serviceдля перезапуска сетевой службы.

  5. бежать sudo systemctl status networking.serviceчтобы увидеть, хорошо ли он работает.

Если вы хотите продолжать использовать eth0 в качестве имени интерфейса, вы должны добавить в/etc/default/grub:

net.ifnames=0 biosdevname=0

внутри GRUB_CMDLINE_LINUX="", Как это:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 quiet"

Затем запустите: update-grub и перезагрузите компьютер.

Другие вопросы по тегам