为什么 /etc/network/interfaces 被忽略?

为什么 /etc/network/interfaces 被忽略?

我已经在网上搜索了两个小时,但似乎无法找到以下问题的解决方案。

我刚刚在全新的 Xubuntu 13.04 中安装了 Xen,为了设置网络,我必须删除 network_manager。因此,所有网络配置都是通过 /etc/network/interfaces 完成的。至少,应该如此。但是,我输入的内容似乎被忽略了:我的 xenbr0 接口没有分配 IPv4 地址,没有默认网关,也没有设置名称服务器。

/etc/network/interfaces 文件中的内容如下:

auto lo
iface lo inet loopback

# There are no IP configurations for eth0, it’s all defined under xenbr0:
#auto eth0

# Static configuration
auto xenbr0
iface xenbr0 inet static
  bridge_ports    eth0
  address         192.168.1.200 # the IP address of the Ethernet port
  broadcast       192.168.1.255
  netmask         255.255.255.0
  gateway         192.168.1.1   # the address of the router
  bridge_stp      off           # disable Spanning Tree Protocol - optional
  bridge_waitport 0             # no delay before a port becomes available - optional, comment out if this gives you troubles
  bridge_fd       0             # no forwarding delay - optional
  dns-nameservers 192.168.1.1

为了修复我的网络连接,我运行了一个小的“修复”脚本:

#!/bin/bash
ifconfig xenbr0 192.168.1.200 netmask 255.255.255.0 up
route add default gw 192.168.1.1 xenbr0

不过我想修复核心问题。目前启动至少需要额外 1 分钟,因为系统要等待网络连接。

编辑:我还必须将以下内容添加到 /etc/resolvconf/resolv.conf.d/base 并运行sudo resolvconf -u

nameserver 192.168.1.1

没有这个,我只能 ping IP 地址,DNS 请求无法通过。这实际上让我确信接口文件被完全忽略了。

编辑2:要么做sudo restart networking,要么sudo /etc/init.d/networking restart不做任何事情。

编辑3:一些额外的信息。ifconfig输出应该是这样的(工作网络/互联网连接):

eth0      Link encap:Ethernet  HWaddr 00:1c:c0:77:09:9d  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3346 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2903 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2931429 (2.9 MB)  TX bytes:661616 (661.6 KB)
          Interrupt:20 Memory:e3200000-e3220000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1720 (1.7 KB)  TX bytes:1720 (1.7 KB)

xenbr0    Link encap:Ethernet  HWaddr 00:1c:c0:77:09:9d  
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::21c:c0ff:fe77:99d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3329 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2875 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2870029 (2.8 MB)  TX bytes:647394 (647.3 KB)

这是启动后的样子。唯一缺少的是 xenbr0 IPv4 地址(以及路由/DNS 数据,但您在 ifconfig 的输出中看不到):

eth0      Link encap:Ethernet  HWaddr 00:1c:c0:77:09:9d  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0 B)  TX bytes:0 (0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0 B)  TX bytes:0 (0 B)

xenbr0    Link encap:Ethernet  HWaddr 00:1c:c0:77:09:9d  
          inet6 addr: fe80::21c:c0ff:fe77:99d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0 B)  TX bytes:0 (0 B)

答案1

你有:

address         192.168.1.200 # the IP address of the Ethernet port

并报告这是不工作的线路。您是否从接口(5)中知道:

   Lines starting with `#' are ignored. Note  that  end-of-line  comments
   are NOT supported, comments must be on a line of their own.

您是否为问题添加了行末注释,或者您的/etc/network/intefaces文件中是否确实有这些注释?如果是,请尝试将其删除。

答案2

也许,尽管删除了网络管理器包,你仍然有/etc/NetworkManager/NetworkManager.conf包含

[ifupdown]
managed=true

这导致ifup无法自动启动接口。

如果这是问题的原因,那么我建议dpkg --purge network-manager或者设置managed=false

我提交了一个关于此的错误报告:https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1187693

答案3

我设法通过更改 2 个文件解决了我的问题。首先,按照 Eric Carvalho 的建议,我取消了auto eth0中的注释/etc/networking/interfaces。(请注意,这很奇怪,网上的几个教程似乎表明 Xen 不需要这样做。)

但这本身并不能解决启动缓慢的问题。似乎在启动时,界面出现之前仍需要几秒钟,而与此同时,Ubuntu 已经陷入了 60 秒的空闲等待。我通过将延迟时间从 60 秒修改/etc/init/failsafe.conf为 1 秒来解决这个问题。(我通过 Google 找到了这个文件,但不知道具体是哪一个。)

相关内容