在 RHEL5.5 x64 机器上使用多个接口

在 RHEL5.5 x64 机器上使用多个接口

我正在尝试在服务器的一个接口(eth1)上使用静态分配的地址,并在同一子网(172.17.11.0/24)上的另一个接口(eth2)上使用 dhcp 分配的地址。

当我为 eth1 设置静态 IP 时(按照http://www.cyberciti.biz/faq/rhel-centos-fedoracore-linux-network-card-configuration),我将以下内容输入到/etc/sysconfig/network-scripts/ifcfg-eth1

# ServerEngines Corp. Emulex OneConnect 10Gb NIC (be3)
DEVICE=eth1
BOOTPROTO=static
DHCPCLASS=
HWADDR=00:21:5A:9B:00:41
IPADDR=172.17.11.203
NETMASK=255.255.255.0
#TYPE=ethernet
ONBOOT=yes

如果 eth1 是唯一运行的适配器,则我无法 ping 任何外部 IP :(

当 eth2 也在运行时,我可以 ping 外部地址。

ifconfig返回以下内容:

eth1      Link encap:Ethernet  HWaddr 00:21:5A:9B:00:41
          inet addr:172.17.11.203  Bcast:172.17.11.255  Mask:255.255.255.0
          inet6 addr: fe80::221:5aff:fe9b:41/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4747 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5495 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:447100 (436.6 KiB)  TX bytes:1059019 (1.0 MiB)
          Memory:fbf60000-fbf80000

eth2      Link encap:Ethernet  HWaddr 00:21:5A:9B:00:42
          inet addr:172.17.11.245  Bcast:172.17.11.255  Mask:255.255.255.0
          inet6 addr: fe80::221:5aff:fe9b:42/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6745 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10802 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1260318 (1.2 MiB)  TX bytes:12302950 (11.7 MiB)
          Memory:fbe40000-fbe60000

内容/etc/sysconfig/network

HOSTNAME=<redacted>
NETWORKING=yes
NETWORKING_IPV6=no
GATEWAY=172.17.11.1

我是否忽略了一些非常明显的东西?如果是的话,那是什么?

根据请求进行eth2编辑

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.17.11.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         172.17.11.1     0.0.0.0         UG        0 0          0 eth1

并且两个接口都启动了:

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.17.11.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
172.17.11.0     0.0.0.0         255.255.255.0   U         0 0          0 eth2
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth2
0.0.0.0         172.17.11.1     0.0.0.0         UG        0 0          0 eth2

答案1

Linux 使用强端系统模型来处理 IP。这意味着 IP 地址“真正”属于机器,而不是特定网络接口。Linux 不是拥有一堆具有自己地址的网络接口,这些网络接口恰好都到达同一个系统,而是拥有一台拥有一堆 IP 地址的机器,该机器还拥有一堆网络接口。

您可以让它像一个弱端系统模型一样运行,包括 ARP 过滤、策略路由等。但这在很大程度上取决于您具体想做什么。您应该更新您的问题,解释为什么您在同一个子网中有两个物理接口,以及您试图通过将 IP 地址分配给同一网段中的不同物理接口来实现什么目的。很可能有办法做到这一点,但我们必须知道“它”是什么才能告诉您如何做到。

不清楚为什么您无法退出eth。如果您的静态 IP 地址在路由器的 DHCP 范围内,您应该知道,有些 SoHo 路由器会拒绝来自其 DHCP 范围内未分配的 IP 地址的 NAT 流量。

但是,为什么 down 发生的情况很重要呢eth1?由于您的配置适用于和eth1eth2为什么您要关心与您使用的配置不同的配置中发生的情况?

您是否正在尝试进行故障转移?如果是,为什么将 IP 地址与物理接口关联起来?这意味着丢失一个接口就意味着丢失一个 IP。如果您想要故障转移,一个强大的终端系统模型,其中 IP 地址可以承受物理接口丢失的影响 - 否则所有 TCP 连接即使可以保存也会中断。

答案2

添加NETWORKBROADCAST/etc/sysconfig/network-scripts/ifcfg-eth1似乎已经解决了这个问题。

DEVICE=eth1
BOOTPROTO=static
DHCPCLASS=
BROADCAST=172.17.11.255
HWADDR=00:21:5A:9B:00:41
IPADDR=172.17.11.203
NETMASK=255.255.255.0
TYPE=ethernet
NETWORK=172.17.11.0
ONBOOT=yes
GATEWAY=172.17.11.1

相关内容