您的位置:首页 > 理论基础

确定使用多张网卡中的一张上网

2014-01-01 11:07 274 查看
确定使用多张网卡中的一张上网作者:Julian2005-04-28 17:23分类:默认分类标签: 对于两张网卡的问题,网上基本都是再说,一台机器两张网卡:其中一张链接内网,一张链接外网,该如何指定路由表。没有提到过如何在一台有两张网卡的机器上,如何使用其中一张网卡上网的方法。问题的原因,是我在一台有两张网卡的服务器上操作:每张网卡各对应一个独立ip和一个webserver,一个ip A链接着国际网,一个ip B只链接着国内网。所以当在服务器上需要链接到国外网络的时候就狠不方便。因为似乎是B地址小于A的缘故,总是默认使用B去上网。

现在说明解决的办法:
使用arp -a查询两张网卡所对应的interface值

使用route -p add 0.0.0.0 mask 0.0.0.0 (网关ip) if (A的interface值),设置默认的路由路径

这样就解决问题了。

参考资料:
route命令

附上常用网络命令:

ARP

  ARP是一个重要的TCP/IP协议,并且用于确定对应 IP地址的网卡物理地址。实用arp命令,我们能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容。此外,使用arp命令,也可以用人工方式输入静态的网卡物理/IP地址对,我们可能会使用这种方式为缺省网关和本地服务器等常用主机进行这项作,有助于减少网络上的信息量。

  按照缺省设置,ARP高速缓存中的项目是动态的,每当发送一个指定地点的数据报且高速缓存中不存在当前项目时,ARP便会自动添加该项目。一旦高速缓存的项目被输入,它们就已经开始走向失效状态。例如,在Windows NT/2000网络中,如果输入项目后不进一步使用,物理/IP地址对就会在2至10分钟内失效。因此,如果ARP高速缓存中项目很少或根本没有时,请不要奇怪,通过另一台计算机或路由器的ping命令即可添加。所以,需要通过arp命令查看高速缓存中的内容时,请最好先ping 此台计算机(不能是本机发送ping命令)。

  ARP常用命令选项:

  ·arp -a或arp -g

  用于查看高速缓存中的所有项目。-a和-g参数的结果是一样的,多年来-g一直是UNIX平台上用来显示ARP高速缓存中所有项目的选项,而Windows用的是arp -a(-a可被视为all,即全部的意思),但它也可以接受比较传统的-g选项。

  ·arp -a IP

  如果我们有多个网卡,那么使用arp -a加上接口的IP地址,就可以只显示与该接口相关的ARP缓存项目。

  ·arp -s IP 物理地址

  我们可以向ARP高速缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态,或者在出现错误时,人工配置的物理地址将自动更新该项目。

  ·arp -d IP

  使用本命令能够人工删除一个静态项目。

  例如我们在命令提示符下,键入 Arp -a;如果我们使用过 Ping 命令测试并验证从这台计算机到 IP 地址为 10.0.0.99 的主机的连通性,则 ARP 缓存显示以下项:

  Interface:10.0.0.1 on interface 0x1

  Internet AddressPhysical AddressType

  10.0.0.99 00-e0-98-00-7c-dc dynamic

  在此例中,缓存项指出位于 10.0.0.99 的远程主机解析成 00-e0-98-00-7c-dc 的媒体访问控制地址,它是在远程计算机的网卡硬件中分配的。媒体访问控制地址是计算机用于与网络上远程 TCP/IP 主机物理通讯的地址。

  至此我们可以用ipconfig和ping命令来查看自己的网络配置并判断是否正确、可以用netstat查看别人与我们所建立的连接并找出ICQ使用者所隐藏的IP信息、可以用arp查看网卡的MAC地址。

Tracert

如果有网络连通性问题,可以使用 tracert 命令来检查到达的目标 IP 地址的路径并记录结果。tracert 命令显示用于将数据包从计算机传递到目标位置的一组 IP 路由器,以及每个跃点所需的时间。如果数据包不能传递到目标,tracert 命令将显示成功转发数据包的最后一个路由器。当数据报从我们的计算机经过多个网关传送到目的地时,Tracert命令可以用来跟踪数据报使用的路由(路径)。该实用程序跟踪的路径是源计算机到目的地的一条路径,不能保证或认为数据报总遵循这个路径。如果我们的配置使用DNS,那么我们常常会从所产生的应答中得到城市、地址和常见通信公司的名字。Tracert是一个运行得比较慢的命令(如果我们指定的目标地址比较远),每个路由器我们大约需要给它15秒钟。

  Tracert的使用很简单,只需要在tracert后面跟一个IP地址或URL,Tracert会进行相应的域名转换的。

  tracert 最常见的用法:

  tracert IP address [-d] 该命令返回到达 IP 地址所经过的路由器列表。通过使用 -d 选项,将更快地显示路由器路径,因为 tracert 不会尝试解析路径中路由器的名称。

  Tracert一般用来检测故障的位置,我们可以用tracert IP在哪个环节上出了问题,虽然还是没有确定是什么问题,但它已经告诉了我们问题所在的地方,我们也就可以很有把握的告诉别人----某某地方出了问题。

Route

大多数主机一般都是驻留在只连接一台路由器的网段上。由于只有一台路由器,因此不存在使用哪一台路由器将数据报发表到远程计算机上去的问题,该路由器的IP地址可作为该网段上所有计算机的缺省网关来输入。

  但是,当网络上拥有两个或多个路由器时,我们就不一定想只依赖缺省网关了。实际上我们可能想让我们的某些远程IP地址通过某个特定的路由器来传递,而其他的远程IP则通过另一个路由器来传递。

  在这种情况下,我们需要相应的路由信息,这些信息储存在路由表中,每个主机和每个路由器都配有自己独一无二的路由表。大多数路由器使用专门的路由协议来交换和动态更新路由器之间的路由表。但在有些情况下,必须人工将项目添加到路由器和主机上的路由表中。Route就是用来显示、人工添加和修改路由表项目的。

  一般使用选项:

  ·route print

  本命令用于显示路由表中的当前项目,在单路由器网段上的输出;由于用IP地址配置了网卡,因此所有的这些项目都是自动添加的。

  ·route add

  使用本命令,可以将信路由项目添加给路由表。例如,如果要设定一个到目的网络209.98.32.33的路由,其间要经过5个路由器网段,首先要经过本地网络上的一个路由器,器IP为202.96.123.5,子网掩码为255.255.255.224,那么我们应该输入以下命令:

  route add 209.98.32.33 mask 255.255.255.224 202.96.123.5 metric 5

  ·route change

  我们可以使用本命令来修改数据的传输路由,不过,我们不能使用本命令来改变数据的目的地。下面这个例子可以将数据的路由改到另一个路由器,它采用一条包含3个网段的更直的路径:

  route add 209.98.32.33 mask 255.255.255.224 202.96.123.250 metric 3

  ·route delete

  使用本命令可以从路由表中删除路由。例如:route delete 209.98.32.33

NBTStat

使用 nbtstat 命令释放和刷新 NetBIOS 名称。NBTStat(TCP/IP上的NetBIOS统计数据)实用程序用于提供关于关于NetBIOS的统计数据。运用NetBIOS,我们可以查看本地计算机或远程计算机上的NetBIOS名字表格。

  常用选项:

  ·nbtstat -n

  显示寄存在本地的名字和服务程序。

  ·nbtstat -c

  本命令用于显示NetBIOS名字高速缓存的内容。NetBIOS名字高速缓存用于寸放与本计算机最近进行通信的其他计算机的NetBIOS名字和IP地址对。

  ·nbtstat -r

  本命令用于清除和重新加载NetBIOS名字高速缓存。

  ·nbtstat -a IP

  通过IP显示另一台计算机的物理地址和名字列表,我们所显示的内容就像对方计算机自己运行nbtstat -n一样。

  ·nbtstat -s IP

  显示实用其IP地址的另一台计算机的NetBIOS连接表。

  例如我们在命令提示符下,键入:nbtstat -RR 释放和刷新过程的进度以命令行输出的形式显示。该信息表明当前注册在该计算机的 WINS 中的所有本地 NetBIOS 名称是否已经使用 WINS 服务器释放和续订了注册

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

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

到这里两块网卡终于都用上了..:)汗......
原文出处:http://juni.bokee.com/1356244.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息