www.cnblogs.com/ruiyqinrui

开源、架构、Linux C/C++/python AI BI 运维开发自动化运维。 春风桃李花 秋雨梧桐叶。“力尽不知热 但惜夏日长”。夏不惜,秋不获。@ruiY--秦瑞

python爬虫,C编程,嵌入式开发.hadoop大数据,桉树,onenebula云计算架构.linux运维及驱动开发.

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

xp多网卡静态路由设置方法

一、多个IP都在同一网段或VALN。这类情况没什么好说的,在各块网卡的本地连接属性里设置好IP地址、子网掩码和默认网关即可。

二、多个IP属于不同网段或VLAN。这时如果按照通常的方法设置IP地址,填好各网段的子网掩码和默认网关,就会发现服务器所在的多个网段中,只有一个网段可以正常通信。

这个问题我也是最近才碰到的。经过Google和百度一番,得出原因:路由冲突。

我们知道,Windows系统下为网络连接填写默认网关等于为本机添加一条默认静态路由。打开“本地连接属性”--“Internet协议(TCP/IP)属性”,点击“高级”,会看到默认网关一栏里有个“跃点数”,这个跃点数即跳数(默认为自动,数值为20),可以理解为网关的优先级,也就是路由的优先级,此数值越小路由优先级越高。比如,假定你网卡1的IP地址设置为地址1(192.168.1.2,掩码255.255.255.0,默认网关192.168.1),此时打开CMD,输入route print,可以看到本机路由表。我们可以看到一条下一跳地址为默认网关的路由。
这条路由的意义为:只要包的目的地址不在本网段,不管目的地址是什么,都把包抛给默认网关,由网关负责转发。由于我们没有修改跃点数,所以可以看到metric为20,即本条路由的优先级为20。

同理,如果你又插了另一块网卡2,IP地址设为地址2(172.30.0.2,掩码255.255.255.0,默认网关172.30.0.1),系统同样会添加一条静态路由至本机路由表:

0.0.0.0 0.0.0.0 172.30.0.1

很明显这两条路由冲突,肯定只有一条会生效,因此肯定只有一个网段可以正常通信了。

既然知道了原因是路由冲突,咱想办法不让它冲突就行了呗。方法是:不填写默认网关,手动添加路由。以双网卡为例,可以两个都不填,也可以只填一个,总之目的就是设置好路由,让包被发送到正确的网关。我们先把网卡1和2的默认网关都删掉,再看路由表,刚才那两条路由都不见了。然后我们用route add命令来手动添加路由。首先为192网段添加:比如我们向整个192.168.0.0网段中的其他网段发送数据包时,都需要经本网段网关192.168.1.1进行转发,则我们在CMD中输入如下命令:

route -p add 192.168.0.0 mask 255.255.0.0 192.168.1.1 metric 1

其中-p参数是添加长效路由的意思;192.168.0.0是目的地址;mask 255.255.0.0是目的地址的掩码;192.168.1.1是下一跳地址,即网关。添加本条路由后,192段的通信可以正常进行。

接下来为172段添加:比如我们向整个172.30.0.0网段中的其他网段发送数据包时,都需要经本网段网关172.30.0.1进行转发,则我们在CMD中输入如下命令:

route -p add 172.30.0.0 mask 255.255.0.0 172.30.0.1 metric 1

添加本条路由后,172段的通信可以正常进行。 

我们刚才添加的两条路由各自为发向192段和172段的包指明了路由,作用跟默认网关是一样的,但是并不冲突,因此可以实现两个网段同时通信。

另外还有一种情况,比如:上例中本机的网卡1用来连接内网,内网的范围是192.168.0.0 255.255.255.0;网卡2通过外网路由器172.30.0.1上外网。此时我们手动添加的两条路由,第一条不需变化,仍为

route -p add 192.168.0.0 mask 255.255.0.0 192.168.1.1 metric 1

第二条需要改为

route -p add 0.0.0.0 mask 0.0.0.0 172.30.0.1 metric 1 即相当于为本地连接2填写了默认网关。

这两条路由虽然有冲突的部分,但由于路由的最长匹配原则,仍然可以一起使用:发往192段的包,经过路由匹配后发现路由1最适合自己,就不会再与路由2进行匹配了;发往其他网段(外网)的包则会通过路由2转发出去。

好了,以上就是多网卡的路由配置了。下面是路由命令的用法,直接拷过来的,有兴趣的就看看吧

Route命令详解

   1.具体功能
       该命令用于在本地IP路由表中显示和修改条目。使用不带参数的ROUTE可以显示帮助。
           2.语法详解
       route [-f] [-p] [command [destination] [mask netmask] [gateway] [metric
       metric] [if interface]
           3.参数说明
       -f
       清除所有不是主路由(子网掩码为255.255.255.255的路由)、环回网络路由(目标为127.0.0.0,子网掩码为255.255.255.0的路由)或多播路由(目标为224.0.0.0,子网掩码为240.0.0.0的路由)的条目的路由表。如果它与命令之一(例如Add、Change或Delete)结合使用,表会在运行命令之前清除。

       -p
       与Add命令共同使用时,指定路由被添加到注册表并在启动TCP/IP协议的时候初始化IP路由表。默认情况下,启动TCP/IP协议时不会保存添加的路由,与Print命令一起使用时,则显示永久路由列表。所有其他的命令都忽略此参数。永久路由存储在注册表中的位置是HKEY_LOCAL_MACHSYSTEMCurrentControlSetServicesTcpipParametersPersistentRoutes。

       command 指定要运行的命令。下表列出了有效的命令。
       destination
       指定路由的网络目标地址。目标地址可以是一个IP网络地址(其中网络地址的主机地址位设置为0),对于主机路由是IP地址,对于默认路由是0.0.0.0。mask
       subnetmask
       指定与网络目标地址相关联的网掩码(又称子网掩码)。子网掩码对于IP网络地址可以是一适当的子网掩码,对于主机路由是255.255.255.255
对于默认路由是0.0.0.0。如果忽略,则使用子网掩码255.255.255.255。定义路由时由于目标地址和子网掩码之间的关系,目标地址不能比它对应的子网掩码更为详细。换句话说,如果子网掩码的一位是0,则目标地址中的对应位就不能设置为1。

       gateway
       指定超过由网络目标和子网掩码定义的可达到的地址集的前一个或下一个跃点IP地址。对于本地连接的子网路由,网关地址是分配给连子网接口的IP地址。对于要经过一个或多个路由器才可用到的远程路由,网关地址是一个分配给相邻路由器的、可直接达到的IP地址。

       metric metric
       为路由指定所需跃点数的整数值(范围是1~9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。

       if interface 指定目标可以到达的接口的接口索引。使用Route
       print命令可以显示接口及其对应接口索引的列表。对于接口索引可以使用十进制或十六进制的值。对于十六进制值,要在十六进制数的前面加上0x。忽略if参数时,接口由网关地址确定。

       注意:路由表中跃点数一列的值较大是由于允许TCP/IP根据每个LAN接口的IP地址、子网掩码和默认网关的配置自动确定路由表中路由的跃点数造成的。默认启动的自动确定接口跃点数确定了每个接口的速度,调整了每个接口的路由跃点数,因此最快接口所创建的路由具有最低的跃点数。要删除大跃点数,请在每个LAN连接的TCP/IP协议的高级属性中禁用自动确定接口跃点数。

       如果在systemrootSystem32DriversEtc文件夹的本地网络文件中存在适当的条目,名称可以用于Destination。只要名称可以通过“域名系统”(DNS)查询这样的标准主机名解析技术分解为IP地址,就可以将其用于Gateway,DNS查询使用存储在systemrootSystem32DriversEtc
       文件夹下的本地主机文件和NetBIOS 名称解析。
       如果是Print或Delete命令,可以忽略Gateway参数,使用通配符来表示目标和网关。Destination的值可以是由星号(*)指定的通配符。如果指定目标含有一个星号(*)或问号(?),它被看作是通配符,只打印或删除匹配的目标路由。星号代表任意一字符序列,问号代表任一字符。例如,10.*.1、192.168.*、127.*和*224*都是星号通配符的有效使用。

       使用了无效的目标和子网掩码(网掩码)值的组合,会显示“Route bad gateway address
       netmask”错误消息。目标中有一位或多位设置为1,而其在子网掩码中的对应位设置为0时会发生这个错误。可以通过二进制表示法表示目标和子网掩码来检查这种情况。以二进制表示的子网掩码包括表示目标网络地址部分的一连串的1和表示目标主机地址部分的一连串的0两个部分。查看目标以确定目标的主机地址部分(由子网掩码所定义)

       是否有些位设置成了1。
       Windows 98 的Route命令不支持-p参数。
       只有当TCP/IP协议在网络连接中安装为网络适配器属性的组件时,该命令才可用。
           4.例举说明
       例子1:要显示IP路由表的完整内容,执行以下命令:
       route print
       例子2:要显示IP路由表中以10.开始的路由,执行以下命令:
       route print 10.*
       例子3:要添加默认网关地址为192.168.12.1的默认路由,执行以下命令:
       route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
       例子4:要添加目标为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1的路由,执行以下命令:
       route add 10.41.0.0 mask 255.255.0.0 10.27.0.1
       例子5:要添加目标为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1的永久路由,执行以下命令:
       route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1
       例子6:要添加目标为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1,跃点数为7的路由,执行以下命令:
       route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7
       例子7:要添加目标为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1,接口索引为0x3的路由,执行以下命令:

       route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3
       例子8:要删除目标为10.41.0.0,子网掩码为255.255.0.0的路由,执行以下命令:
       route delete 10.41.0.0 mask 255.255.0.0
       例子9:要删除IP路由表中以10.开始的所有路由,执行以下命令:
       route delete 10.*
       例子10:要将目标为10.41.0.0,子网掩码为255.255.0.0的路由的下一个跃点地址由10.27.0.1更改为10.27.0.25,执行以下命令:

       route change 10.41.0.0 mask 255.255.0.0 10.27.0.25

 

 

route delete 0.0.0.0 mask 0.0.0.0

route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1

 

posted on 2015-10-22 09:27  秦瑞It行程实录  阅读(1600)  评论(0编辑  收藏  举报
www.cnblogs.com/ruiyqinrui