为了让设备能访问另一个子网,需要在设备里增加路由到子网络,下面是一些资料。基本操作如下:
一般来说,都是为了能访问别的子网才设置路由的,比如说,你的主机处于192.168.10.0/24,而你想访问192.168.20.0/24网的主机,当然你知道一个网关IP,例如192.168.10.1(必须和你主机处于同一子网),那么,你可以这样配置路由。
添加路由
route add-net 192.168.20.0 netmask 255.255.255.0gw192.168.10.1
查看路由状态
route -n
删除路由
route del -net192.168.20.0 netmask255.255.255.0
摘自鸟哥的私房菜
路由修改route
我们在网路基础的时候谈过关于路由的问题,两部主机之间一定要有路由才能够互通TCP/IP的协定,否则就无法进行连线啊!
一般来说,只要有网路介面,该介面就会产生一个路由,例如在鸟哥实验室内部的主机有一个eth0及lo,所以:
[root@linux~]#route[-nee]
[root@linux~]#routeadd[-net|-host][网域或主机]netmask[mask][gw|dev]
[root@linux~]#routedel[-net|-host][网域或主机]netmask[mask][gw|dev]
观察的参数:
-n:不要使用通讯协定或主机名称,直接使用IP或portnumber;
-ee:使用更详细的资讯来显示
增加(add)与删除(del)路由的相关参数:
-net:表示后面接的路由为一个网域;
-host:表示后面接的为连接到单部主机的路由;
netmask:与网域有关,可以设定netmask决定网域的大小;
gw:gateway的简写,后续接的是IP的数值喔,与dev不同;
dev:如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接eth0等
范例一:单纯的观察路由状态
[root@linux~]#route-n
KernelIProutingtable
DestinationGatewayGenmaskFlagsMetricRefUseIface
192.168.10.00.0.0.0255.255.255.0U000eth0
169.254.0.00.0.0.0255.255.0.0U000eth0
0.0.0.0192.168.10.300.0.0.0UG000eth0
[root@linux~]#route
KernelIProutingtable
DestinationGatewayGenmaskFlagsMetricRefUseIface
192.168.10.0*255.255.255.0U000eth0
169.254.0.0*255.255.0.0U000eth0
defaultserver.cluster0.0.0.0UG000eth0
由上面的例子当中仔细观察route与route-n的输出结果,你可以发现有加-n参数的主要是显示出IP,至于使用route而已的话,显示的则是『主机名称』喔!也就是说,在预设的情况下,route会去找出该IP的主机名称,如果找不到呢?就会显示的钝钝的(有点小慢),所以说,鸟哥通常都直接使用route-n啦!由上面看起来,我们也知道default=0.0.0.0/0.0.0.0,而上面的资讯有哪些你必须要知道的呢?
·Destination,Genmask:这两个玩意儿就是分别是network与netmask啦!所以这两个咚咚就组合成为一个完整的网域囉!
·Gateway:该网域是通过那个gateway连接出去的?如果显示0.0.0.0表示该路由是直接由本机传送,亦即可以透过区域网路的MAC直接传讯;如果有显示IP的话,表示该路由需要经过路由器(通讯闸)的帮忙才能够传送出去。
·Flags:总共有多个旗标,代表的意义如下:
oU(routeisup):该路由是启动的;
oH(targetisahost):目标是一部主机(IP)而非网域;
oG(usegateway):需要透过外部的主机(gateway)来转递封包;
oR(reinstateroutefordynamicrouting):使用动态路由时,恢复路由资讯的旗标;
oD(dynamicallyinstalledbydaemonorredirect):已经由服务或转port功能设定为动态路由
oM(modifiedfromroutingdaemonorredirect):路由已经被修改了;
o!(rejectroute):这个路由将不会被接受(用来抵挡不安全的网域!)
·Iface:这个路由传递封包的介面。
此外,观察一下上面的路由排列顺序喔,依序是由小网域(192.168.10.0/24是ClassC),逐渐到大网域(169.254.0.0/16ClassB)最后则是预设路由(0.0.0.0/0.0.0.0)。然后当我们要判断某个网路封包应该如何传送的时候,该封包会经由这个路由的过程来判断喔!举例来说,我上头仅有三个路由,若我有一个传往192.168.10.20的封包要传递,那首先会找192.168.10.0/24这个网域的路由,找到了!所以直接由eth0传送出去;如果是传送到Yahoo的主机呢?Yahoo的主机IP是202.43.195.52,我通过判断
1)不是192.168.10.0/24,
2)不是169.254.0.0/16结果到达
3)0/0时,OK!传出去了,透过eth0将封包传给192.168.10.30那部gateway主机啊!所以说,路由是有顺序的。因此当你重复设定多个同样的路由时,例如在你的主机上的两张网路卡设定为相同网域的IP时,会出现什么情况?会出现如下的情况:
KernelIProutingtable
DestinationGatewayGenmaskFlagsMetricRefUseIface
192.168.10.00.0.0.0255.255.255.0U000eth0
192.168.10.00.0.0.0255.255.255.0U000eth1
也就是说,由于路由是依照顺序来排列与传送的,所以不论封包是由那个介面(eth0,eth1)所接收,都会由上述的eth0传送出去,所以,在一部主机上面设定两个相同网域的IP本身没有什么意义!有点多此一举就是了。除非是类似虚拟主机(Xen,VMware等软体)所架设的多主机时,才会有这个必要~
范例二:路由的增加与删除
[root@linux~]#routedel-net169.254.0.0netmask255.255.0.0deveth0
#上面这个动作可以删除掉169.254.0.0/16这个网域!
#请注意,在删除的时候,需要将路由表上面出现的资讯都写入
#包括netmask,dev等等参数喔!注意注意
[root@linux~]#routeadd-net192.168.100.0netmask255.255.255.0deveth0
#透过routeadd来增加一个路由!请注意,这个路由必须要能够与你互通。
#举例来说,如果我下达底下的指令就会显示错误:
#routeadd-net192.168.200.0netmask255.255.255.0gw192.168.200.254
#因为我的环境内仅有192.168.10.100这个IP,所以不能与192.168.200.254
#这个网段直接使用MAC互通!这样说,可以理解喔!?
[root@linux~]#routeadddefaultgw192.168.10.30
#增加预设路由的方法!请注意,只要有一个预设路由就够了喔!
#在这个地方如果您随便设定后,记得使用底下的指令重新设定你的网路
#/etc/init.d/networkrestart
如果是要进行路由的删除与增加,那就得要参考上面的例子了,其实,使用manroute里面的资料就很丰富了!仔细查阅一下囉!你只要记得,当出现『SIOCADDRT:Networkisunreachable』这个错误时,肯定是由于gw后面接的IP无法直接与您的网域沟通(Gateway并不在你的网域内),所以,赶紧检查一下是否输入错误啊!加油吧!
# route 命令添加的路由,机器重启或者网卡重启后就没掉了,在linux下设置永久路由的方法:
1.在/etc/rc.local里添加
2.在/etc/sysconfig/network里添加到末尾
3./etc/sysconfig/static-router :
any net x.x.x.x/24 gw y.y.y.y
===========================================================================================WINDOWS下的route命令:
简单的的操作如下,
查看路由状态:routeprint
只查看ipv4(ipv6)路由状态:route print-4(-6)
添加路由:route add 目的网络 mask 子网掩码 网关——重启机器或网卡失效
route add 192.168.20.0 mask 255.255.255.0192.168.10.1
添加永久:route -p add目的网络 mask子网掩码网关
route -p add 192.168.20.0 mask 255.255.255.0192.168.10.1
删除路由:route delete 目的网络 mask 子网掩码
route delete 192.168.20.0 mask255.255.255.0