/etc/network/interfaces 的更改被忽略并在重新启动时恢复

/etc/network/interfaces 的更改被忽略并在重新启动时恢复

我想按照本教程设置一个虚拟机:http://www.howtoforge.com/virtualization-with-kvm-on-a-debian-lenny-server

我已经到了必须修改接口文件的地步,它看起来像这样:

auto lo
iface lo inet loopback

auto  eth0
iface eth0 inet static
      address   176.9.XXX.XXX
      netmask   255.255.255.255
      pointopoint   176.9.XXX.XXX
      gateway   176.9.XXX.XXX

并将其改为:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
    address   176.9.XXX.XXX
    netmask   255.255.255.255
    pointopoint   176.9.XXX.XXX
    gateway   176.9.XXX.XXX
    bridge_ports eth0
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp off

然后我执行了:/etc/init.d/networking restart,但我的 ifconfig 输出保持不变,当我重新启动服务器时,接口文件看起来和以前一样。为什么会发生这种情况?

ifconfig:

eth0      Link encap:Ethernet  HWaddr 00:18:51:XX:XX:XX
          inet addr:176.9.XXX.XXX  Bcast:176.9.XXX.XXX Mask:255.255.255.255
          inet6 addr: fe80::218:51ff:XXXX:XXXX/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4236 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4569 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:414559 (404.8 KiB)  TX bytes:501379 (489.6 KiB)

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:16436  Metric:1
          RX packets:3406 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3406 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:319219 (311.7 KiB)  TX bytes:319219 (311.7 KiB)

答案1

这不是一个真正的答案,但有些观察太长而无法发表评论,这可能会有所帮助......

首先,您是否有bridge-utils已安装?原因是ifupdown负责解析/etc/network/interfaces和管理网络的包只是一堆 shell 脚本,用于调用适当的低级工具(例如iproutedhcp3-client等等),因此,如果您缺少负责搭建桥梁这项繁重工作的工具,那么您ifupdown将无法独自搭建桥梁。

其次,你不应该“重新启动网络”,而应该利用其和脚本ifupdown形式提供的交互式内容:要测试 brindge 接口是否能够启动,你应该这样做ifupifdown

# ifup br0

看看会发生什么。请咨询适当的手册页


第三,请停止使用

# /etc/init.d/<foo> <action>

并做

# service <foo> <action>

取而代之(自 Squeeze 起可用)。这有许多优点:

  • 无论安装了哪个 init 系统,它都能正常工作 — 也就是说,即使安装了upstart、等systemd,它也能正常工作openrc,尽管这些系统中的每一个都提供了自己特定的工具来控制服务。

    因此,使用service将简化您稍后过渡到另一个 init 系统(Jessie 将systemd默认转换您的系统),而不需要您快速重新学习如何管理您的服务。

  • 使用sysvinit(您当前正在使用的),它会在调用目标 init 脚本之前正确地清理环境。旧的直接调用方法很容易受到调用脚本的 shell 状态的影响。该脚本确保它调用的 init 脚本看到具有合理的、工作目录等的service环境。$PATHumask

相关内容