我刚刚安装了 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 中。