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. Я решил это с помощью нескольких простых команд, и я покажу вам, как это сделать. Кстати, это применимо и к ОС, загруженной на реальной машине. Только если вы войдете в режим восстановления, столкнувшись с такой ошибкой.
беги посмотреть, что случилось. Это даст вам некоторую полезную информацию обратной связи. В моем случае я нахожу сообщение
Failed to bring up ens3.
Кажется, сетевое устройство ens3 недоступно.бежать
ip link show
чтобы выяснить доступные устройства на вашем компьютере. В моем случае это enp0s3.бежать
vim /etc/network/interfaces
изменить ens3 на enp0s3.бежать
sudo systemctl restart networking.service
для перезапуска сетевой службы.бежать
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
и перезагрузите компьютер.