双网卡问题

Ubuntu 10.04 下的建立双网卡,其中 eth0 分配外网 ip,eth1 分配私网 ip。最初的 interface 文件如下:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 111.111.111.11
netmask 255.255.255.224
gateway 111.111.111.1

auto eth1
iface eth1 inet static
address 192.168.1.57
netmask 255.255.255.0
gateway 192.168.1.254

重启网络后,可以从本机 ping 通,但是从外面 ping 公网 ip 却 ping 不通,出错在路由的选择上:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
111.111.111.0   0.0.0.0         255.255.255.224 U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eth1
0.0.0.0         111.111.111.1   0.0.0.0         UG    100    0        0 eth0

可以看到默认路由优先从 192.168.1.254 出去了,可以将其删除:

# route del  -net 0.0.0.0  netmask 0.0.0.0 gw  192.168.1.254
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
111.111.111.0   0.0.0.0         255.255.255.224 U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
0.0.0.0         111.111.111.1   0.0.0.0         UG    100    0        0 eth0

或者将 interface 中 eth1 的 gateway 给注释掉就可以了。

同理,在 CentOS 6.0 上,网络配置默认变成了这样的:

CE="eth0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE=Ethernet
BOOTPROTO=none
IPADDR=111.111.111.111
PREFIX=26
GATEWAY=111.111.111.1
DNS1=203.196.0.6
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"

可以看到在上述的描述中,有一个 DEFROUTE,如果该接口是公网的,可将其设置为 yes,如果是私网的,单单注视掉是没有用的,需要将其手动设置为 no。