无法在 Ubuntu 上正确配置 eth1 和 eth2

10 networking

我对网络管理完全陌生,因此发现事情有点困难。我有一台机器,我必须将其 1 个接口设置为子网 10.0.20.0/24,另一个设置为 10.1.0.0/24,第三个设置为 10.128.0.0/24。我的 eth0 已经在运行,ifconfig 命令显示结果:

eth0      Link encap:Ethernet  HWaddr fa:16:3e:31:bc:c9  
          inet addr:10.0.20.3  Bcast:10.0.20.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:fe31:bcc9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1454  Metric:1
          RX packets:8941 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5324 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5662823 (5.6 MB)  TX bytes:616960 (616.9 KB)

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:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:672 (672.0 B)  TX bytes:672 (672.0 B)
Run Code Online (Sandbox Code Playgroud)

看看这个和其他地方,我这样配置了我的 /etc/network/interfaces:

auto eth0
iface eth0 inet static
    address 10.0.20.3
    netmask 255.255.255.0

auto eth1
iface eth1 inet static
    address 10.1.0.1
    netmask 255.255.255.0

auto eth2
iface eth2 inet static
    address 10.128.0.1
    netmask 255.255.255.0
Run Code Online (Sandbox Code Playgroud)

我没有对 eth0 做任何事情,因为它已经在运行。我试过“sudo ifdown eth1”。我正进入(状态:

ifdown: interface eth1 not configured
Run Code Online (Sandbox Code Playgroud)

我查看了这些论坛,人们都在谈论网关,但我不确定将此网关设置为什么,以及用于哪个界面。有人可以帮我吗?

运行“sudo ifup eth1”时,我得到了结果:

Cannot find device "eth1"
Failed to bring up eth1.
Run Code Online (Sandbox Code Playgroud)

好的,这就是我所做的 - 我没有使用 eth1 和 eth2,而是分别用 eth0:1 和 eth0:2 替换它们,如下所示:

auto eth0:1
iface eth0:1 inet static
    address 10.1.0.1
    netmask 255.255.255.0

auto eth0:2
iface eth0:2 inet static
    address 10.128.0.1
    netmask 255.255.255.0
Run Code Online (Sandbox Code Playgroud)

现在,当我执行“sudo ifup eth0:1”和“sudo ifup eth0:2”时,界面正确启动。所以“ifconfig -a”的输出是:

eth0      Link encap:Ethernet  HWaddr fa:16:3e:31:bc:c9  
          inet addr:10.0.20.3  Bcast:10.0.20.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:fe31:bcc9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1454  Metric:1
          RX packets:1498 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1220 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:149182 (149.1 KB)  TX bytes:148374 (148.3 KB)

eth0:1    Link encap:Ethernet  HWaddr fa:16:3e:31:bc:c9  
          inet addr:10.1.0.1  Bcast:10.1.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1454  Metric:1

eth0:2    Link encap:Ethernet  HWaddr fa:16:3e:31:bc:c9  
          inet addr:10.128.0.1  Bcast:10.128.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1454  Metric:1

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:1184 (1.1 KB)  TX bytes:1184 (1.1 KB)
Run Code Online (Sandbox Code Playgroud)

但是,我仍然很困惑。我应该对设备 eth1 和 eth2 做同样的事情。如果这些接口不存在,我该如何添加它们?

好的,我终于明白了。当我创建 OpenStack 实例时,我只使用了一个网络接口。因此只创建了 eth0。我删除了该实例并创建了一个新实例,指定了其他接口。eth1 和 eth2 配置成功!

pet*_*erh 1

命令ifupifdown使用下面的临时文件/var/lib来记住哪个接口很快就会启动,哪个接口还没有启动。其他命令 ( ifconfig) 不知道这一点。因此,如果您使用 来配置接口ifconfig,则ifup/ifdown会认为接口尚未关闭。

1998 年左右,情况很快就这样了,可能没有人能说出原因。

编辑/etc/networking/interfaces(或者可能是 中的另一个依赖于发行版的配置/etc),并使用ifup/ifdown命令(如果可以的话)。这些设置将在重新启动之间被记住。祝你好运!