目标:
完成这一章,你能做以下的事情:
配置静态路由
配置一个默认路由
浏览路由表
路由的概念
局域网和广域网在物理上是由许多的网络段(IP地址的网络部分不同)组成,这些网络之间通过路由器相互连接。路由器的作用是发送网络间的数据包。路由就是是选择数据包发送的路径的过程。路由器就是实现这种选择功能的专用计算机。在一些文档中也将路由器说成网关。
可以想象一个大的网络中有很多的小网络,它们通过路由器相互互联,在两个远端各有一个主机。当一个主机想要发送一个数据包给另外一端的主机,它会将这个包发送到离它最近的一个路由器。当这个路由器接受到这个数据包,会选择下一个到达目标地址的路由器。当这个数据包到达那个路由器,这个路由器又会选择下一个路由器。数据包通过层层路由器的转发最终到达能够直接发送到目标主机的路由器上。
IP路由被看作是一种地址路由。意思是数据包的在网络中的传输只能依靠数据包中的目标地址。路由器就是根据这个地址来转发数据包。这又称为逐级跳。
路由表
通过使用网络掩码,一个IP地址可以被分割为网络部分和主机部分。路由器在判断数据包的目标地址是否存在于与它直接相连的网络中(此时不需要再转发)的时候,会先将目标地址的网络部分提取出来,并且与自己的IP地址相比较。如果两者一致,意味着这个数据包可以直接发送到目标主机,路由器将该包丢弃。
路由表中包括一些地址对。 每一对代表:
目标网络的网络地址 下一“跳”的IP地址,一般是路由器的IP地址
在路由表中列出的路由器的IP地址必须是本机器直接相连的。虽然路由寻找通常是用于寻找网络而不是用于寻找单独的主机。但在IP路由中允许建立单独主机的路由。单个主机路由让管理员在控制网络的使用和定制特殊路由的时候能更加灵活。建立一个特殊的针对单个独立的主机的路由在网络查错的时候非常有用。使用目标网络地址代替目标主机地址会使路由寻找更加有效,同时使路由表更小。有些路由器会自动汇聚,以简化路由表。
默认路由
路由器一般都支持一种或者多种动态路由协议,这些协议允许和网络中的其它的路由器动态地交换信息。这就让管理员免去了手工配置路由表中成百上千的的路由的繁琐工作。
网络中的单独的主机通常只需要维护本机路由表中的很少的记录。每个主机都能直接发送数据帧给同一网络中的其它主机。但是为了能发送数据到其它的网络,大多数的主机中都定义了一条最近的直接路由作为路由表中的默认路由。如果在路由表没有找到指定目标的路由信息的时候,就会使用这个默认路由。每个主机中只能定义一个默认路由。
静态路由
尽管路由协议都可以动态地交换路由信息,但在很多情况下没有必要。例如,两个网络只有一条路由互联时,就可以设置静态路由。静态路由是手工建立,不能动态修改和学习。
设置路由的命令
不同主机和路由器的配置命令不尽相同,具体命令和使用方法参见相应手册。下面的说明使用HP-UNIX中的命令。
route命令的语法:
-f 让route命令”flush(激活)"所有的路由。
-n 以数字(IP地址)的形式显出所有的以主机和网络的IP地址。默认网络地址被显示为"default"除外。
Add 在路由表中添加主机或者网络
delete 从路由表中删除指定的主机和网络地址
net 指出目标为一个网络 当目标地址为一个网络地址的时候使用这个参数 ,例如 192.45.3
host 指定目标为一个主机
dest 指出数据包会被发送到的主机或网络的IP地址。dest可以为一个主机名(或者在/etc/hosts中列出的别名),一个网络名(或者在/etc/networks中列出的别名),一个internet地址,或者关键字default。如果指定了default关键字,默认的网关条目会变为gateway。如果数据包的目标地址与路由表中的任何地址都不匹配,就会被送到这个gateway指定的地址。
Gateway 指出到达目标需要要通过的网关节点。这个地址必须使用IP地址或者一个主机名。
Count 一个整数,指明网关是本地主机还是远程主机。如果count大于0,网关就是一个远程主机。如果等于0,网关就是本地主机。默认为0。
配置默认路由:
# /usr/sbin/route add default 195.41.100.1 1
配置静态路由:
# /usr/sbin/route add net 195.41.216 195.41.216.2 1
检查路由表
# netstat -rn
Routing tables
Dest/Netmask Gateway Flags Refs Use Interface Pmtu
127.0.0.1 127.0.0.1 UH 0 414 lo0 4136
195.41.216 195.41.216.2UH 0 523 lan0 4136
195.41.30 195.41.30.2U 2 0 lan1 1500
default 195.41.100.1UG 0 0 lan2 1500
Flags(标记) Meaning(意义)
U UP(启动状态)
H HOST(主机)
空 network(网络)
G Gateway(网关)
路由表中有有效的路由和它们的状态。每一条路由的组成为:一个目标主机或者目标网络网络,一个子网掩码和网关用来转发数据包。Flags字段显示这条路由是否有效(UP)U,这个路由是否通向网关(G),这个路由是个主机路由还是网络路由(有或者没有H),这条路由是否动态创建的(D),是否为一个已经被修改网关路由(M),或者已经被标记为可以疑(?),原因可能是没有ARP的响应。
Refs字段显示当前正在活动的路由的数量。基于连接的协议通常在一个连接中需要维持一段路由,而非基于连接的协议在发送一个数据包的时候才会获得一个路由。use这个字段显示使用这条路由发送的数据包的数量。Interface字段表示这条路由使用的网卡。
实例
Route 1:
To network | Port | Next hop | How to build |
192.168.1.4/30 | 192.168.1.5 | - | input |
172.17.0.0/16 | 172.17.1.1 | - | input |
172.1.0.0/16 | 192.168.1.5 | - | study |
192.168.1.8/30 | 192.168.1.5 | - | study |
10.0.0.0/8 | 192.168.1.5 | - | Study |
195.41.212.0/24* | 172.17.1.1 | 172.17.19.7 | Input, static |
195.41.215.0/24* | 172.17.1.1 | 172.17.19.7 | Input, static |
Route 2:
To network | Port | Gnext hop | How to build |
192.168.1.4/30 | 192.168.1.6 | - | Input |
192.168.1.8/30 | 192.168.1.9 | - | Input |
172.1.0.0/16 | 172.1.1.1 | - | Input |
172.17.0.0/16 | 192.168.1.6 | - | Study |
10.0.0.0/8 | 192.168.1.9 | - | Study |
195.41.212.0/24** | 192.168.1.6 | 192.168.1.5 | Input,static |
195.41.215.0/24** | 192.168.1.6 | 192.168.1.5 | Input,static |
Route 3:
To network | Port | Gnext hop | How to build |
192.168.1.8/30 | 192.168.1.10 | - | Input |
10.0.0.0/8 | 10.1.1.1 | - | Input |
192.168.1.4/30 | 192.168.1.10 | - | Study |
172.1.0.0/16 | 192.168.1.10 | - | Study |
172.17.0.0/16 | 192.168.1.10 | - | Study |
195.41.212.0/24*** | 192.168.1.10 | 192.168.1.9 | Input,static |
195.41.215.0/24*** | 192.168.1.10 | 192.168.1.9 | Input,static |
* If possible for router, it is better to use default route: 0.0.0.0 172.17.1.1 172.17.19.7
** If possible for router, it is better to use default route: 0.0.0.0 192.168.1.6 192.168.1.5
*** If possible for router, it is better to use default route: 0.0.0.0 192.168.1.10 192.168.1.9
For all PCs, set default gateway to the router it is connected to. Additional to RAS, the following route should be set:
195.41.215.0/24**** | 195.41.212.211 | 195.41.212.210 | Input,static |
**** DO NOT set it as default route