CentOS Wrong Outgoing IP Address

addresscentosiproute

I have a Centos 5 box with a sub interface:

ifconfig eth0 10.1.1.1 255.255.255.255
ifconfig eth0:1 10.1.1.2 255.255.255.255

The netmasks need to be 32bit in the environment this server is in. So in order to specify the default route, we let the server know where the gateway is, and then default route to it:

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

So 10.1.1.10 is the default gateway, and it is out interface eth0

However, all packets that leave the server have the IP address associated with eth0:1. They need to have the IP on eth0.

The routing is defined in route-eth0:

10.1.1.10/32 dev eth0
default via 10.1.1.10

And I have tried to force the issue with GATEWAY and SRCADDR in ifcfg-eth0:

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

No gateway is defined in ifcfg-eth0:1:

DEVICE=eth0:1
IPADDR=10.1.1.2
NETMASK=

The eth0 IP address is the one used for the fqdn in /etc/hosts. If I ping the fqdn, I get the eth0 IP address.

Could some let me know how I can force outgoing packets to use the IP bound to eth0 rather than the IP bound to eth0:1 as the source IP.

Best Answer

Not having a netmask set in the ifcfg-eth0:1 file will make Linux default to 255.0.0.0 as it's a legacy class A and it will be able to reach the gateway on that subinterface.

Related Topic