一:add

route add命令的主要作用是添加静态路由,通常的格式是:
route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 3 IF 2
参数含义:^destination ^mask ^gateway metric^ ^interface
destination【网段地址】
mask【子网掩码】
gateway【网关地址】
metric 【路由跳数】
if【端口号】
一般情况下,不涉及本机地址,除非你要做测试。

其中:
可以省略【路由跳数】参数;
当通往该网关地址的路径唯一时,【端口号】参数可以省略。(因为在多端口的路由交换设备上,可能存在通往同一个IP地址的多条备份路径。)
mask 是关键字,不能省略。

route add 134.105.0.0 mask 255.255.0.0 134.105.64.1
意思是:所有需要发往134.105.0.0/16地址段的IP数据包,全部由134.105.64.1路径转发。

这个命令在大型IP网络组建时经常用到,在不同厂商的设备上命令格式可能不同,但原理是一样的。

如果有多条路由,根据不同的路由协议(比如rip, ospf等)的规定,一般优先选择网段地址小的路由。比如,当以下两条路由同时被添加的时候:
route add 134.105.0.0 mask 255.255.0.0 134.105.64.1
route add 134.105.128.0 mask 255.255.128.0 134.105.0.1
目标地址是134.105.128.1的IP包会优先选择第二条路由。


#! /bin/bash
sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 172.24.16.1 metric 5

多网卡:
不久前,我单位通过光纤专用线路,以局域网方式接入了Internet。由于没有采用路由器,因此内部网络用户对Internet和内部城域网的所有访问均通过代理服务器完成,采用完全代理方式。在代理服务器上安装了三块网卡,两块网卡采用公网IP地址,接入Internet和城域网;另
一块网卡则采用私有IP地址,通过代理服务器实现内部网与Internet、城域网的连接。

网络基本情况
根据不同的使用需要,将不同部门、不同机房划分为若干子网,使用不同网段的私有IP地址。因此,网络中存在不同网段的信息包经过代理服务器的路由问题。
其中代理服务器对内部网卡的IP是192.168.4.9,连接城域网的网卡IP是10.99.2.2,连接Internet的网卡IP是211.167.148.150。另外机房也使用了代理,两块网卡的IP分别是192.168.4.96和192.168.0.1。
问题一
192.168.4.0这一网段的子网能正常访问外部网络,网段为192.168.0.0的机房能访问校园网,却不能连接外部网络。通过ping命令检查,能ping通192.168.4.1等主机,但是在ping代理服务器(192.168.4.9)时,得到“Request timed out”的反应,看来是192.168.4.9这台主机的回应包未能被正确地路由到192.168.0.0网段。
首先将对内网卡设置默认网关192.168.4.96,这样设置以后,虽然机房的计算机能访问外部网络,但是速度很慢。同时,以前能正常访问外部网络的192.168.4.0网段,访问速度也变得出奇的慢。员工们也开始埋怨,这是什么宽带,比家里拨号的速度还要慢!

看来这种方法是不可行的。通过Route print命令,观察代理服务器的路由,有这么一条:
Network Destination Netmask Gateway 0.0.0.0 0.0.0.0 192.168.4.96 Interface Metric 192.168.4.96
通过分析我们可以知道,关键是上面那条路由有问题,它的目标地址是0.0.0.0,所以所有的回应包被送到了网关192.168.4.96。而我们的要求是192.168.0.0网段的回应包发到192.168.4.96,其他的就直接发到对应的主机。这时笔者想到,如果将上面路由中的目标地址改为192.168.0.0,是不是可以实现这一目的呢?
路由配置方法
通过查找相关资料,笔者发现只要把机房与当前代理服务器所在的网关地址做一下路由即可。当前的内网划分了两个VLAN,服务器所在VLAN的网关是192.168.4.9,机房网关接入内网网卡IP是192.168.4.96。需要运行的命令是:
route -p delete 0.0.0.0 mask 0.0.0.0 192.168.4.96 route -p add 192.168.0.0 mask 255.255.255.0 192.168.4.96
经过调试,将机房内部网卡的网关设置为192.168.0.1,至此,以前出现的网速慢的问题得到解决。
问题二
后来想想,其实这个问题也是一直存在的,只不过由于以前一直被网速慢的问题困扰,所以没有注意到。网络总是出现停顿,而QQ的使用却很正常。
比较了使用两块网卡和三块网卡工作时的路由情况,发现其实这个问题和上面的问题是类似的,都是因为网关的设置造成数据包路由信息发生混乱,通过禁用城域网网卡虽然解决了经常断网的问题,但是不能访问城域网,所以决定修改路由:
route -p delete 0.0.0.0 mask 0.0.0.0 10.99.2.1
经过这次实践,发现内部网卡的网络属性不能设置网关和DNS服务器,不然会造成数据包路由信息发生混乱。通过修改路由,采用三网卡代理时出现的网络问题得到解决。用Route命令手工修改路由简单实用,希望能够对广大中小企业用户有所启示。
route命令主要用于手动配置静态路由表
例:增加一条通过网关到达令一子网的路由
#route add net remote_net_ip gateway_ip 1
  其中add代表要增加路由,net表示路由到达的是一个网络而不是一台主机,1代表远端网络需通过网关才能到达
(直接通过网络接口相连时,该参数用0)
命令格式:
#route add -net remote_net_ip gateway_ip -netmask netmask
#route add -host host_ip local_interface_ip -interface
使用"delete","change"命令参数可以对路由表中的路由信息进行删除和修改
使用"netstat -rn"命令查看当前的路由信息
如果静态路由表配置错误的话,不管你的网卡参数在怎么设置的准确无误也一样无法连接网络
利用命令 netstat -r 或 route print 可以查看本机路由表(图1,2)
Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.78 20
第一个0.0.0.0表示目标IP
第二个0.0.0.0表示子掩码
192.168.1.1是本机网关
192.168.1.78是本机IP
那个20表示度量值
这个路由条目就表示本机对所有网段的访问都通过192.168.1.1这个网关
如果我们想定义路由条目的话(同时也想整下别人的话)
route delete 0.0.0.0 //首先对目标IP 0.0.0.0(也就表示所有网段)访问时指向的网关进行删除
route add 0.0.0.0 mask 0.0.0.0 192.168.1.254
//建立一组新的路由条目,重新建立对目标IP 0.0.0.0(也就表示所有网段)访问时指向的网关,注意这里的网关必须和本机IP同一个网段,比如我的本机IP是192.168.1.78,那么这里的网关就必须是192.168.1.X,不然回提示出错(图3),但是本次建立的路由条目会在下次重起时自动消失还原,如果想永久建立的话需要加上一个 -p 参数
其实 route 的最大魅力就在于可以跨网段访问,比如你所在在的网络存在两个网络,外网(192.168.1.1)内网(10.0.0.1)
本机IP可以设置很多个,在TCP/IP属性里点高级添加(图4),但是默认的网关只能有一个,所以要想外网内网一起访问我们只能借助于route命令,由于默认的是访问外网的路由条目,所以我们只需要对10.0.0.0网段访问指向的网关进行永久建立
route add 10.0.0.0 mask 255.0.0.0 10.0.0.1 -p
屏蔽IP地址
通常情况下,使用防火墙来阻断因特网交通是最好的办法。但是,低端防火墙,比如Internet Connection Firewall并不能过滤单个IP地址。有一个过滤单个IP地址的办法是调整电脑上的路由表。路由命令行工具可以解决这个问题。这是一个较难使用的工具。不懂路由知识而贸然调整可能会导致电脑与网络失去连接。下面这样的命令可以阻断与IP地址为220.189.126.2的通信:
route –p add 220.189.126.2 MASK 255.255.255.255 192.168.1.0 METRIC 1 IF 2
需要根据你的计算机调整接口号码,目的地IP应改为本地网络上以前不存在的一个地址。
Route命令详解
在本地 IP 路由表中显示和修改条目。
语法
route [-f] [-p] [Command [Destination] [mask Net mask] [Gateway] [metric Metric]] [if Interface]]
参数
-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_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes。
下表列出了有效的命令:
Add:添加路由
Change:更改现存路由
Delete:删除路由
Print:打印路由
Destination:指定路由的网络目标地址。目标地址可以是一个 IP 网络地址(其中网络地址的主机地址位设置为 0),对于主机路由是 IP 地址,对于默认路由是 0.0.0.0。mask subnetmask指定与网络目标地址相关联的网掩码(又称之为子网掩码)。对于主机路由是 255.255.255.255 ,对于默认路由是 0.0.0.0。如果忽略,则使用子网掩码 255.255.255.255。定义路由时由于目标地址和子网掩码之间的关系,目标地址不能比它对应的子网掩码更为详细。换句话说,如果子网掩码的一位是 0,则目标地址中的对应位就不能设置为 1。
Gateway:指定过由网络目标和子网掩码定义的可达到的地址集的前一个或下一个跃点 IP 地址。对于本地连接的子网路由,网关地址是分配给连接子网接口的 IP 地址。对于要经过一个或多个路由器才可用到的远程路由,网关地址是一个分配给相邻路由器的、可直接达到的 IP 地址。
Metric:为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。
if Interface:指定目标可以到达的接口的接口索引。使用 route print 命令可以显示接口及其对应接口索引的列表。对于接口索引可以使用十进制或十六进制的值。对于十六进制值,要在十六进制数的前面加上 0x。忽略 if 参数时,接口由网关地址确定。
路由表中跃点数 一列的值较大是由于允许 TCP/IP 根据每个 LAN接口的 IP 地址、子网掩码和默认网关的配置自动确定路由表中路由的跃点数造成的。默认启动的自动确定接口跃点数确定了每个接口的速度,调整了每个接口的路由跃点数,因此最快接口所创建的路由具有最低的跃点数。要删除大跃点数,请在每个 LAN 连接的 TCP/IP 协议的高级属性中禁用自动确定接口跃点数。
如果是 print 或 delete 命令,可以忽略 Gateway 参数,使用通配符来表示目标和网关。Destination 的值可以是由星号 () 指定的通配符。如果指定目标含有一个星号 () 或问号 (?),它被看作是通配符,只打印或删除匹配的目标路由。星号代表任意一字符序列,问号代表任一字符。例如, 10..1, 192.168.、 127.* 和 224 都是星号通配符的有效使用。
使用了无效的目标和子网掩码(网掩码)值的组合,会显示“Route:bad gateway address netmask”错误消息。目标中有一位或多位设置为 1,而其在子网掩码中的对应位设置为0时会发生这个错误。可以通过二进制表示法表示目标和子网掩码来检查这种情况。以二进制表示的子网掩码包括表示目标网络地址部分的一连串的 1 和表示目标主机地址部分的一连串的 0 两个部分。查看目标以确定目标的主机地址部分(由子网掩码所定义)是否有些位设置成了 1。
只有 Windows NT 4.0、Windows 2000、Windows Millennium Edition 和 Windows XP 的 route 命令支持 -p 参数。Windows 95 或 Windows 98 的 route 命令不支持该参数。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
route命令的常用举例:
要显示 IP 路由表的完整内容,请键入:Route print
要显示 IP 路由表中以 10. 开始的路由,请键入:Route print 10.*
要添加默认网关地址为 192.168.12.1 的默认路由,请键入:
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
要添加目标为 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
要添加目标为 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
要添加目标为 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
要添加目标为 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
要删除目标为 10.41.0.0,子网掩码为 255.255.0.0 的路由,请键入:
route delete 10.41.0.0 mask 255.255.0.0
要删除 IP 路由表中以 10. 开始的所有路由,请键入:Route delete 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
过修改文件/etc/defaultrouter可以设置一些默认路由

二:del


结果是自上而下, 就是说, 哪条在前面, 哪条就有优先, 前面都没有, 就用最后一条default
举例, 添加一条路由(发往192.168.62这个网段的全部要经过网关192.168.1.1)
route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.1.1
删除的时候不用写网关

linux下添加路由的方法:
一:使用 route 命令添加
使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法:
//添加到主机的路由

//添加到网络的路由

//添加默认网关

//删除路由

二:在linux下设置永久路由的方法:二:在linux下设置永久路由的方法:
1.在/etc/rc.local里添加
方法:
route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.3.254
2.在/etc/sysconfig/network里添加到末尾
方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev
3./etc/sysconfig/static-router :
any net x.x.x.x/24 gw y.y.y.y

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐