如何更改 Ubuntu 14.04 服务器上的网络配置?

如何更改 Ubuntu 14.04 服务器上的网络配置?

我刚刚安装了 Ubuntu 14.04 服务器,我发现除了重新启动服务器之外,没有办法对网络配置进行任何更改。这是上周安装的 Ubuntu 14.04 服务器的常规安装,没有对其进行任何更改,也没有安装任何新软件包(因为我无法访问 apt-get)。

ifconfig up/down 似乎从某种缓存中读取;至少,它会忽略我对 /etc/network/interfaces 所做的任何更改。我尝试使用它将 eth1 从 DCHP 更改为静态,但什么也没发生;eth1 继续从 DHCP 获取其地址。

/etc/init.d/networking stop/restart/force-reload 全部失败,并且没有错误消息。

这在 Ubuntu Server 上该如何工作?目前,网络更改似乎只有重启后才会生效。

(请不要给我涉及网络管理器的答案;这是一个没有 GUI 的无头服务器。谢谢)。

添加以下所需信息:

/etc/network/interfaces 最初是:

# The primary network interface
auto eth1
iface eth1 inet dhcp

... 这并没有从 DHCP 获取网关信息,尽管我的 Ubuntu 笔记本电脑可以正常获取它。

所以我把它改成了:

# The primary network interface
auto eth1
iface eth1 inet static
address 172.47.23.106
netmask 255.255.255.0
gateway 172.47.23.1

但是,执行 ifconfig down/up 后,eth1 的 IP 地址没有改变,网关也没有添加到路由表中。在完全重启系统后,eth1 配置恢复正常。

因此看起来 ifconfig up 忽略了对 /etc/network/interfaces 的更改。

答案1

让系统重新读取并使用更改后的 /etc/network/interfaces 文件的正确方法是:

sudo ifdown eth1 && sudo ifup -v eth1

详细的“-v”应产生输出来判断更改是否成功。检查:

ifconfig
ping -c3 www.google.com

答案2

根据其他地方的后续行动,我发现 Ubuntu 确实会完全忽略 /etc/network/interfaces 中先前定义然后更改的设备的更改。为了让它采用新配置,您需要运行以下命令:

ifdown {device}
ip addr flush dev {device}
ifup {device}

这是在 ifdown 和 ifup 之间运行的。理想情况下,Ubuntu 应该将 flush 添加到 ifup 中。

相关内容