升级到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 

同样在这里。

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

现在一切正常:-)

静态地址解决方案

要添加到HerrTaschenbier的答案:如果您的服务器上有静态地址,您应该检查是否通过ifconfig -a重命名了ens32 。我发现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升级发生在我身上。