我正在尝试在服务器的一个接口(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
?由于您的配置适用于和eth1
,eth2
为什么您要关心与您使用的配置不同的配置中发生的情况?
您是否正在尝试进行故障转移?如果是,为什么将 IP 地址与物理接口关联起来?这意味着丢失一个接口就意味着丢失一个 IP。如果您想要故障转移,想一个强大的终端系统模型,其中 IP 地址可以承受物理接口丢失的影响 - 否则所有 TCP 连接即使可以保存也会中断。
答案2
添加NETWORK
和BROADCAST
行/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