Centos

CentOS 錯誤的傳出 IP 地址

  • August 12, 2011

我有一個帶有子界面的 Centos 5 盒子:

ifconfig eth0 10.1.1.1 255.255.255.255
ifconfig eth0:1 10.1.1.2 255.255.255.255

在這個伺服器所在的環境中,網路遮罩需要是 32 位的。所以為了指定預設路由,我們讓伺服器知道網關在哪裡,然後預設路由到它:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.1.1.10       0.0.0.0         255.255.255.255 UH        0 0          0 eth0
0.0.0.0         10.1.1.10    0.0.0.0         UG        0 0          0 eth0

所以10.1.1.10是預設網關,出介面eth0

但是,所有離開伺服器的數據包都具有與 eth0:1 關聯的 IP 地址。他們需要在 eth0 上擁有 IP。

路由在 route-eth0 中定義:

10.1.1.10/32 dev eth0
default via 10.1.1.10

我試圖在 ifcfg-eth0 中強制解決 GATEWAY 和 SRCADDR 的問題:

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.1.1.1
SRCADDR=10.1.1.1    
NETMASK=255.255.255.255
GATEWAY=10.1.1.10

ifcfg-eth0:1 中沒有定義網關:

DEVICE=eth0:1
IPADDR=10.1.1.2
NETMASK=

eth0 IP 地址是用於 /etc/hosts 中的 fqdn 的地址。如果我 ping fqdn,我會得到 eth0 IP 地址。

有人可以告訴我如何強制傳出數據包使用綁定到 eth0 的 IP,而不是綁定到 eth0:1 的 IP 作為源 IP。

在 ifcfg-eth0:1 文件中未設置網路遮罩將使 Linux 預設為 255.0.0.0,因為它是舊 A 類,並且能夠訪問該子介面上的網關。

您至少需要為 eth0 上的 IP 提供 /28 前綴遮罩,以便與預設網關位於同一子網中(對於您在 .10 上使用網關描述的場景)。將 eth0 的網路遮罩更改為 255.255.255.240,查看是否可以 ping 預設網關,然後您可以使用 /32 前綴 (255.255.255.255) 向該設備添加任何其他 IP 地址而不會出現問題。

引用自:https://serverfault.com/questions/300406