Linux上两个网卡,配置相同网段的IP地址,分别为IP1和IP2;如果要正常使用,请按照以下方法配置路由策略:
说明:以下均为linux命令行执行的命令
#echo 1
>/proc/sys/net/ipv4/conf/all/arp_filter
解释:
设置/proc/sys/net/ipv4/conf/all/arp_filter为1。
arp_filter
:默认值为False(0)
1--允许多个网络介质位于同一子网段内(多网卡在同一网段内),做负载均衡的时候使用上述命令。
目的地址与源地址不同段,需要添加网关
#ip route add to
10.20.30.0/24 via 192.168.24.1 dev eth0 table
10
#ip route add to
10.20.30.0/24 via 192.168.24.1 dev eth1 table
20
或
#route add 10.20.30.0
mask 255.255.255.0
192.168.24.1
注:这种方式不可取,流量会打到192.168.24.1的网关去
不走网关
#ip route add to 192.168.24.0/24 dev eth4
table 11
#ip route add to 192.168.24.0/24 dev eth5
table 21
#ip rule add from 192.168.24.1222/32
table 11
#ip rule add from 192.168.24.223/32 table
21
注:通过验证在局域网内不需要走网关,但是测试发现双网卡是实现了但是没有达到理想的效果。
解释:
ip route:
是设置路由的命令
add:
添加路由,其后可以带to也可以不带
via:
经由
192.168.24.1:下一跳地址(24.1是网关)
dev:
指定由那一块网卡连线出去,后面接
eth0 等.
eth0:
网络接口名。
table:后接多少号表
11:路由表号(自己随便写的,但是有上限好像是999)
mask:子网掩码
ip rule:
路由规则命令
from:
源地址
192.168.24.222/32:地址
删除命令:route delete -net 192.168.24.0
netmask 255.255.255.0 dev eth0
以下是我同事整理的:
linux上双网卡(eth0,eth1)配置相同网段IP(192.168.12.220,192.168.12.222),默认情况是,无论连接那个网卡,连接都只会从同一网卡出入(加入eth0),并且局域网内的其他主机显示两个IP对应的mac地址为同一个。为了实现连接那个网卡IP,网络连接和流量就从那个网卡出入,必须进行网卡路由设置。
图1 网络结构图
默认情况
192.168.12.55 (arp -a)的显示结
从192.168.12.55连接192.168.12.220的流程图:
从192.168.12.55连接192.168.12.222的流程图:(同上)
从10.130.36.234连接192.168.12.220的流程图:
从10.130.36.234连接192.168.12.222的流程图:(同上)
希望的情况:
192.168.12.55 (arp -a)的显示结果:
从192.168.12.55连接192.168.12.220的流程图:
从192.168.12.55连接192.168.12.222的流程图:
从10.130.36.234连接192.168.12.220的流程图:
从10.130.36.234连接192.168.12.222的流程图
解决方法:
要想获得希望的情况,需对linux服务器进行一些路由表的配置。操作命令如下:
echo "220 local220"
>> /etc/iproute2/rt_tables
echo
"222 local222"
>> /etc/iproute2/rt_tables
ip route add
192.168.12.0/24 dev eth0 src 192.168.12.220 table
local220
ip route add
192.168.12.0/24 dev eth1 src 192.168.12.222 table
local222
ip route add
default dev eth0 table local220
ip route add default dev
eth1 table local222
ip rule add from
192.168.12.220 table local220
ip rule add from
192.168.12.222 table local222
ip route flush
cache
解释:
echo "220
local220" >> /etc/iproute2/rt_tables
把路由表序号和对应的路由表名字添加到/etc/iproute2/rt_tables中
ip route add 192.168.12.0/24 dev eth0 src
192.168.12.220 table local220
从192.168.12.220发送到192.168.12.0/24网段的数据从eth0发出,把该路由项添加到路由表local220中
ip route add default dev eth0 table
local220
在路由表中添加默认路由,默认路由从eth0进出
ip rule add from 192.168.12.220 table
local220
添加路由策略。来自192.168.12.220的路由要求使用路由表local220
ip route flush cache
把新添加的路由策略和路由表刷新到缓存中,即时生效