免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 37329 | 回复: 15

linux下多网卡配置同网段IP问题 [复制链接]

论坛徽章:
0
发表于 2009-12-02 09:44 |显示全部楼层
20可用积分
在一台linux(centos5.2,内核2.6.18)上安装了双网卡,并分别配置了同网段的两个IP(eth0 192.168.0.69 ,eth1 192.168.0.78)两个IP,两块网卡分别连接了网线接到同一个交换机上,从其他内网机器ping两个IP都通,但是arp -a两个IP都是eth0的mac
这时候,拔掉eth1上的网线,情况跟2跟网线插着一样,2个IP都能ping通,但是如果只插eth1的网线,拔掉eth0的网线,那么2个IP都ping不通。
但在该linux上,如果用ping -I eth1 192.168.0.1指定了eth1网卡ping内网机器,或者将网卡eth0从启的话是可以ping通的

在网上查找了相关的说法,有说是跟路由有关系的,有说是跟ARP有关的
找了多种方法尝试,想要在eth1接线,拔了eth0以后,还能够ping通eth1 还是没实现


bond网卡绑定(只有一个IP,而且实际生效的只有一个网卡(mode=1,主从模式))
brctl网桥,为桥设置多IP(接同一路由会成环,卡死)http://linux.chinaunix.net/bbs/thread-1008981-1-1.html
添加静态路由(静态路由适用于网络环境固定的网络,不能对网络结构的改变做出反应)
设置ARP过滤(设置成功,但没效果,不知道原因)http://www.360doc.com/showWeb/0/0/10130522.aspx

设置策略路由 (方法不明,没试过)http://bbs2.chinaunix.net/thread-1042129-1-1.html

各种方法均没见效,请老鸟们帮忙分析分析,给个方法

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
发表于 2009-12-02 10:32 |显示全部楼层
为什么要同一个网段?

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
发表于 2009-12-02 10:35 |显示全部楼层
不用分析了。在LINUX的网络问题版分析的已经很细了。

记得帖子好像是我发的,你搜一下吧。

论坛徽章:
0
发表于 2009-12-02 12:49 |显示全部楼层

回复 #1 myeer 的帖子

将eth0网卡设网关,eth1不设网关,同时在eth1上加条路由。

论坛徽章:
0
发表于 2009-12-02 15:31 |显示全部楼层
你可能是只在路由里面设置了走eth0的路由,没有对eth1上设置路由。
你可以用策略路由,先将默认网关走eth0的设一个高的优先级。将默认网关走eth1的设一个普通的优先级。
命令如下:
ip rule add table 200
ip route add default dev eth0 via gw table 200 (gw是你的网关)
ip route add default dev  eth1 via gw

这样设置以后,在两条线都接通的情况下,会优先从eth0走
如果eth0断了,会改成从eth1走。

不过由个问题是当eth0断了以后,ip route add default dev eth0 via gw table 200
这条路由就消失了,在接上eth0以后要重新加入这条路由。

论坛徽章:
0
发表于 2010-12-29 16:14 |显示全部楼层
本帖最后由 jzz_zh 于 2010-12-29 17:56 编辑
不用分析了。在LINUX的网络问题版分析的已经很细了。

记得帖子好像是我发的,你搜一下吧。



另外一个讨论,在这儿:
http://linux.chinaunix.net/bbs/viewthread.php?tid=1022090

最近我也遇到类似问题了

我的测试环境是:
1 2块板载Broadcom 卡(eth0,eth1),一块Intel 卡(上面有2个网口:eth2,eth3)
2 eth0 ,eth2 我都定义为同一网段的 内网IP,ech1 ech3 是公网IP

我的测试结果: eth2的内网IP MAC地址 是在不停变化中的,我看到经常会漂移到 eth0,eth3 的MAC上。

我的判断也是 和Linux内核有关系,从网络结构上看 我姑且叫做自动路由 : 因为默认启动网卡,网关机上会有2条同样的路由,只是出口一个是eth0,一个是eth2
在此 借一下其它CU网友的图:


我的猜想: 这样是否因为有环路的危险,所以 Linux内部就做了处理,会强制修改eth2的MAC,全部从eth0出去?

eth0,eth2做网关的情况下,实际IP包经常会都走向eth0,所以无法根据网卡做策略路由
只能根据 请求者的IP或者网卡MAC 做不同的 策略 路由
我想到的另外一个方法就是: 再增加一台服务器做网关(还是一个内网 网段),还没有做测试。

网桥也许是个好办法

论坛徽章:
0
发表于 2010-12-30 00:16 |显示全部楼层
看看 别人的测试, 别人的分析似乎有些道理: http://www.linuxfly.org/post/548/

论坛徽章:
0
发表于 2010-12-30 13:00 |显示全部楼层
找到答案了: http://linux.chinaunix.net/bbs/viewthread.php?tid=895346

我的解决方案:

echo "210    local100" >> /etc/iproute2/rt_tables
echo "220    local200" >> /etc/iproute2/rt_tables

ip route add 192.168.1.0/24 dev eth0 src 192.168.1.1 table local100
ip route add 192.168.1.0/24 dev eth2 src 192.168.1.253 table local200
ip route add default dev eth0 table local100
ip route add default dev eth2 table local200

ip rule add from 192.168.1.1 table local100
ip rule add from 192.168.1.253 table local200

ip route flush cache


我的理解是: linux内核 在响应外部ARP请求的时候, 2块网卡 在同一个路由里面,因此 都有机会去响应arp请求
因此出现了 MAC地址错乱的情况
现在 的思路就是 把2块网卡 分到2个不同的路由表中, 这样就不出现 MAC地址冲突的事情了

这次的事情 也让我把路由,arp这些基础 协议 重新看了看, 基础太不扎实了。。。。

一开始还 觉得是 内核做的什么 自动路由,解决防止环路问题 这些高深的 关注点上了。。。。

论坛徽章:
0
发表于 2011-02-09 12:36 |显示全部楼层
不用分析了。在LINUX的网络问题版分析的已经很细了。

记得帖子好像是我发的,你搜一下吧。
ssffzz1 发表于 2009-12-02 10:35



    没搜到呢!

论坛徽章:
0
发表于 2011-02-09 15:24 |显示全部楼层
学习了。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP