升级到 16.04 后没有网络

升级到 16.04 后没有网络

我将服务器从 14.04 升级到 16.04,而后者又从 12.04 升级,所有升级都使用命令行 do-release-upgrade。这是一个服务器版本,完全没有 GUI。它运行 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

答案1

同样在这里。

我认为在安装过程中从 upstart 迁移到 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

现在一切都正常了:-)

答案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 时就遇到了这种情况。

答案3

在长期使用 16.04 后,我遇到了同样的问题,可能是某些更新搞乱了事情。

运行systemctl status networking.service显示,由于调用错误,服务无法启动ifup -aifup -a单独运行显示,它正在尝试使用eth0接口,而ifconfig -a仅列出enp0s31f6lo接口。检查/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

答案4

就像我的情况一样,您可以尝试在 /etc/network/interfaces 文件中将“eth0”更改为“ens32”。重启,就完成了。

相关内容