Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

linux双网卡,一块没流量的解决方法

[复制链接]
江小刀 发表于 2004-3-22 21:03:40 | 显示全部楼层 |阅读模式
linux双网卡怎么设置我就不说了,我这里说的是linux双网卡的流量问题...
可能这个问题很偏们..你们也许用不上..我还是要说..


问题描述,一个linux主机,上面两个网卡..:)

route -n的输出是这样的.

  代码:        [复制到剪贴板]  
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
61.132.43.128   0.0.0.0         255.255.255.192 U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         61.132.43.134   0.0.0.0         UG    0      0        0 eth0

这里解释一下...第一行是说,你要访问61.132.43.128这个网段,掩码是255.255.255.192的话..从eth1这个网卡出去..
第二行是关于本机的,访问自己从lo这个虚拟的本地网卡走..
第三行是说你要去任何地方的话..从网关61.132.43.134出去.并且网卡是eth0

到这里我们看到了..我们除了去61.132.43.128这个网络是从eth1走以外..去其他地方都是从eth0走...

这样是不是很浪费了双网卡??没错..是很浪费..因为不论你用那种监测工具查看流量..都是eth0有..而其他网卡没有...天哪...为此我是煞费苦心..甚至怀疑网卡是不是坏了..因为在win2k上这种事情是不可能发生的..:)

那我们怎么解决这个问题呢?有人也许会说给个不同网关让另一块网卡用其他网关不就可以..是这个是可以..但是问题是我的ip都是在同一个网段..那来的不同网关.?网关就一个61.132.43.134...

还好linux系统给我们提供了一个很好的路由套件---iproute2

我们来熟悉一下..iproute2由几个常见的命令..
ip ro ls   ip就是ip命令啦,ro就是route的所写,ls是list的缩写...
整个命令就是列出系统的路由表..这个可和route -n的效果差不多..但是更为清楚系统的route是如何的..

我们来看看吧:

  代码:        [复制到剪贴板]  
[root@localhost root]# ip ro ls
61.132.43.128/26 dev eth1  proto kernel  scope link  src 61.132.43.136
127.0.0.0/8 dev lo  scope link
default via 61.132.43.134 dev eth0

是不是一样呢?由几个地方不同..第一条多了一个src,增加了对源数据包的选择,而且子网掩码也变成/26的形式..(参考ip地址的书籍)
最后一个仍然是网关...


现在我们只要稍稍动手把从61.132.43.136出来的流量让他不要从eth0出去..然他走eth1
我们加一条自定义的路由表

  代码:        [复制到剪贴板]  
ip ro add default via 61.132.43.134 table 200

这里只是加了一条默认路由到一个自定义的路由表200中,最大数值是255,但是你不要用255,因为那是系统默认用了..你用200以下就可以.
具体的路由表在/etc/iproute2/rt_tables中

查看刚才建立的路由表可以用ip ro ls table 200

  代码:        [复制到剪贴板]  
[root@localhost root]# ip ro ls table 200
default via 61.132.43.134 dev eth1

看到了吗?虽然我没有指定dev是什么.但是系统自动分配了一个eth1给这个路由表,因为eth0已经用在主路由表中了..
这也说明了,的确不能在同一个路由表中由相同的网关..虽然可以设置,但是具体没什么作用.

然后我们要用一个规则把,匹配的数据包引导到刚刚建立的路由表中..:)

  代码:        [复制到剪贴板]  
ip ru add from 61.132.43.136 table 200

这里ru是rule的缩写.from是一个匹配的动作.就是所源地址是61.132.43.136的包..请走自定义路由表200的设置..:)

查看一下

  代码:        [复制到剪贴板]  
[root@localhost root]# ip ru ls
0:      from all lookup local
32765:  from 61.132.43.136 lookup 200
32766:  from all lookup main
32767:  from all lookup 253

到这里两块网卡终于都用上了..:)汗......
yecoo 发表于 2004-3-25 10:26:57 | 显示全部楼层
嘿嘿,偶来顶一下~
回复

使用道具 举报

rarara 发表于 2004-7-22 17:32:44 | 显示全部楼层
为什么我也这样做了,但还是不行呢?
回复

使用道具 举报

XYS19711 发表于 2006-3-18 21:08:13 | 显示全部楼层
看不大懂,是不是一台电脑可以通过不同的网卡连上不同的网络,如:eth0连接电信,eth1连接网通?
回复

使用道具 举报

XYS19711 发表于 2006-3-18 21:35:12 | 显示全部楼层
想请教一下:可不可以设成这样eth0连上网络,eth1连上内网(让内网的电脑也可以上网),56k modem (在家时可以连上公司的服务器上网)?
我现在装了双网卡,Linux 可以通过eth0上网,eth1我设成了192.168.1.1  255.255.255.0,但是内网可以ping通192.168.1.1,但是ping不通eth0上的IP地址,也无法上网,是不是Linux没有做bridge?我要如何做呢?
我现在的IP ROUTE 如下:
210.164.168.4/30 dev eth0  scope link
192.168.1.0/24 dev eth1  scope link
169.254.0.0/16 dev eth1  scope link
127.0.0.0/8 dev lo  scope link
default via 210.164.168.5 dev eth0
eth1怎么会有2个地址?而且192.168.1.1成了192.168.1.0/24
回复

使用道具 举报

桃源 发表于 2006-3-19 04:06:03 | 显示全部楼层
晕 这么麻烦呀?
回复

使用道具 举报

Nanu 发表于 2006-3-21 11:05:48 | 显示全部楼层
不错的文章!

==============================================

原帖由 XYS19711 于 2006-3-18 21:35 发表
想请教一下:可不可以设成这样eth0连上网络,eth1连上内网(让内网的电脑也可以上网),56k modem (在家时可以连上公司的服务器上网)?
我现在装了双网卡,Linux 可以通过eth0上网,eth1我设成了192.168.1.1   ...


这种需求没必要用路由去做了,太麻烦了。用iptables做NAT,非常方便。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-27 18:51 , Processed in 0.028177 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表