1、实验17 IP路由的配置,一、实验目的 二、实验工具与设备 三、实验预备知识 四、实验内容和步骤 五、实验总结,一、实验目的,1掌握路由器的基本原理。 2掌握NAT的基本原理。 3掌握将Linux配置为路由器的方法。 4掌握IP伪装的原理及配置方法。,二、实验工具与设备,1交换机(或者集线器)。 2带多网卡(至少两块网卡)的装有Red Hat Linux 9.0系统的PC一台。 3带网卡的PC若干台(系统为Windows或Linux 均可)。 4网线若干。 5能接入Internet的信息点(至少一个)。 6Red Hat Linux 9.0安装光盘。,三、实验预备知识,1路由器概述路由器是用于
2、连接逻辑上分开的网络,所谓逻辑网络,是指一个单独的网络或一个子网。路由器的最基本功能是路由,对一个具体的路由器来说,路由是将从一个接口接收到的数据包,转发到另外一个接口的过程。该过程类似交换机的交换功能,由于工作在数据链路层,称为交换;路由器工作在网络层,称之为路由;对于一个网络来说,路由是将数据包从一个端点(主机)传输到另外一个端点(主机)的过程。,路由的工作方法分为两个基本步骤:第一个步骤为路由选择,路由器根据到达数据包的目标地址和路由表内容进行路径选择;第二个步骤为包转发,根据选择的路径,将包从某个接口转发出去。为完成这两个步骤,在路由器中保存着各种传输路径的相关数据路由表(Routin
3、g Table),以供路由器进行路径选择。路由表中保存着路由来源、目标网段、管理距离/量度值、下一跳IP地址、存活时间、下一跳接口等信息。路由表是路由器进行路径抉择的基础,路由表内容(路由表项,又称为路由)的来源有两个:静态配置和路由协议动态学习。,(1)静态路由表配置静态路由表是手工配置的路由,使得数据包的传送按预定的路径进行。静态路由的优点是速度快、基本上不占用系统开销,缺点是当网络发生变化时必须手工更改,不适合大型网络。,(2)动态路由表配置动态路由表是路由器根据网络运行情况自动更新、调整路由表的信息。路由器可以由动态路由选择协议(如RIP、OSPF等)提供的功能自动学习和记忆网络运行的
4、情况,及时维护与更新路由器信息。动态路由的优点是一旦正常工作就不需要手工维护,可以根据网络的变化而自动更新维护,特别适合大型的网络,缺点是占用的开销大。,2用Linux构建路由器Linux系统完全可以将一台Linux主机配置成一台性能优秀的路由器。以下介绍一些Linux提供的路由设置命令。 (1)显示静态路由表命令:route 该命令可将系统中的路由表显示出来。,(2)增加静态路由:route add 例如,增加一条目的网络为192.168.1.0的路由,命令如下: route add net 192.168.1.0 netmask 255.255.255.0 dev eth0 命令中参数的意
5、义如下。 add:增加一静态路由。 -net:指定目的网络。 netmask:目的网络的子网掩码。 dev:连接目的网络的网络接口,有时此项不需要写,Linux能自动识别。,(3)删除静态路由记录:route del 例如,增加一条目的网络为192.168.1.0的路由,命令如下: route del net 192.168.1.0 netmask 255.255.255.0 (4)增加缺省路由(默认网关) 假设网关的IP地址是192.168.1.254,增加缺省路由的命令如下: route add default gw 192.168.1.254,(5)删除缺省路由(默认网关) 假设需要删除
6、网关192.168.1.254记录,删除缺省路由命令如下: route del default gw 192.168.1.254,3实例:用Linux搭建路由器假设Linux主机安装了Red Hat Linux 9.0(服务器安装模式),并安装了三块网卡(网络适配器),IP地址配置如下:eth0:211.66.80.52/24eth1:192.168.10.1/24eth2 :172.16.1.1/16网络拓扑结构如图17-1所示。,网络参数的具体配置可参阅实验三的预备知识,这里不再重复。注意:eth0、eth1、eth2分别表示主机上安装的三块网卡,其中,eth0连接网络211.66.80.
7、0/24,eth1连接网络192.168.10.0/24,eth2连接网络172.16.0.0/16。,图17-1 网络拓扑结构,用以下三条命令为路由表增加三条静态路由: route add -net 211.66.80.0 netmask 255.255.255.0 dev eth0 route add -net 192.168.10.0 netmask 255.255.255.0 dev eth1 route add -net 172.16.0.0 netmask 255.255.0.0 dev eth2,如果系统还需要和更多的网络连接,则需要为系统增加一条缺省路由。在IP数据报的报头有目
8、的IP地址和源IP地址,如图17-2所示。当数据报中目的网络的IP地址不在系统的路由表中时,系统通过缺省路由把这些数据报发往上一级网关。该缺省路由根据具体的网络情况设定,这里假设是211.66.80.10。增加该缺省路由的命令如下:,route add default gw 211.66.80.10 这样,路由器的静态路由表建立完成。在命令行输入命令route查看路由表,应有以下结果: Kernel IP routing tablee,最后,还需要为系统打开IP转发功能,路由器才能真正开始工作。打开IP转发的命令:/proc/sys/net/ipv4/echo 1 /proc/sys/net/
9、ipv4/ip_forward至此,路由器基本配置完成。如果路由器连接的网络都是使用Internet上的合法IP,路由器已经能正常工作了,各个网络也可以通过该路由器相互访问。,图17-2 IP数据包包头图示,注意:从IP地址的范围可知,路由器eth0接口连接的是Internet上一个真实的合法的网络,另外的两个接口连接的是私有网络,当这些私有网络向Internet访问时,会出现问题。这时,就需要路由器打开地址转换功能(NAT)来解决这个问题。,4Linux的NAT功能IP数据包的包头结构如图17-2所示,每个IP数据报的报头都有一个源发送地址(Sending Address),简称源地址;一个
10、目的地址(Destination Address)。假设用户在客户机192.168.10.2上运行命令:ping 211.66.80.10,此时,IP数据包的源地址是211.66.80.10,目的地址是192.168.10.2,IP数据包的走向如下: 192.168.10.2192.168.10.1211.66.80.52211.66.80.10IP数据包到达211.66.80.10并由211.66.80.10响应而返回IP数据包。返回时,其源地址是211.66.80.10,目的地址是192.168.10.2,而目的地址192.168.10.2对于网关211.66.80.10而言是不可识别(因
11、为网络非直接连接)的,只能再发往上一级网关。因此,响应的IP数据包不能如期返回。这也是为什么一般情况下用私有IP地址(保留地址)是无法访问Internet的原因。,如果希望用内部IP也能直接访问Internet,最有效的方法是利用Linux的路由器的地址转换功能。对于私有网络发送的数据包,路由器将源地址转换为合法的地址,再发送出去;返回的数据包再由路由器将目标地址转换成内部主机的IP地址,这样就可以解决问题了。具体的工作原理如下:从客户机执行命令:ping 211.66.80.10图17-3表示IP数据包的走向以及地址转换的过程。,图17-3 地址转换过程,在Linux环境中,完成该地址转换一
12、般使用iptables命令。iptables 命令是Linux环境功能非常强大的IP防火墙管理命令,其规则很多,用法也很灵活。限于篇幅,这里不作很详细的介绍。iptalbes是用来设置、维护和检查Linux内核的IP包过滤规则。可以定义不同的表(tables),每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对相应的IP数据包进行匹配:每条规则指定应当如何处理与之相匹配的IP数据包。,防火墙的规则指定所检查包的特征和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,则下一条规则由目标值确定。该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT(通过)、D
13、ROP(删除)、QUEUE(排队)或RETURN(返回)。其中,ACCEPT 表示让这个包通过;DROP表示将这个包丢弃;QUEUE表示把这个包传递到用户空间;RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建链的末端,或遇到内建链的规则是RETURN,包的去向由链准则指定的目标决定。,系统内核一般包含如下三个表(用户也可自己定义不同的表)。 filter表:默认的表,包含内建的链INPUT(处理进入的包)、FORWORD(处理通过的包)和OUTPUT(处理本地生成的包)。 nat表:主要作用是用于地址转换,由三个内建的链构成:PREROUTING (修改到来的包)
14、、OUTPUT(修改路由之前本地的包)和POSTROUTING(修改准备出去的包)。 mangle表:用来对指定的包进行修改,有两个内建规则:PREROUTING(修改路由之前进入的包)和OUTPUT(修改路由之前本地的包)。,实例:在前面介绍的路由器基础上,结合iptalbes实现地址转换(NAT)。在路由器内部,eth0和eth1之间的IP是可以相互转发的,还需要在eth0上实现IP地址的转换,对准备离开eth0的IP数据包进行地址转换。实现方法:在前面配置的路由器基础上,运行以下命令(在eth0上实现IP伪装):iptables -t nat -A POSTROUTING -o eth0
15、 -j MASQUERADE -t nat:指定nat表。, -A POSTROUTING:指定nat表中的POSTROUTING链。POSTROUTING链是在数据发送之间处理的链。本例指IP数据包从eth0发送出来以前。 -o eth0:在数据从网络接口eth0出去时进行处理。 j MASQUERADE:对数据包进行的动作。其中,MASQUERADE是伪装的意思,即将数据包中的源IP地址伪装(转换)。 Linux的路由功能很强,iptables又是一个很好的防火墙管理命令。因此,在Linux完全可以实现硬件路由和硬件防火墙所具备的功能,而且更方便、更高效。,四、实验内容和步骤,1实验环境的
16、构建 (1)将装有多个网卡的计算机作为服务器,将其中一个网卡eth0接入Internet,IP地址假设为211.66.80.52,网关为211.66.80.10;另外的网卡接不同的内部网络。若有条件,最好有多个内部网络,实验的效果会好些,但至少要接一个内部网络。 假设实验环境如图17-4所示。其中,网卡eth0接入Internet,网卡eth1和eth2分别连接192.168.10.0/24和172.168.0.0/16网络,eth1的IP地址为192.168.10.1/24,eth2的IP地址为172.16.1.1/16。,图17-4 实验环境的构建,(2)确认同一网络的连通。 (3)IP地
17、址为192.168.10.0.24的网络内的主机,设置192.168.10.1为网关;172.168.0.0/16网络内的主机,设置172.168.0.1为网关。 (4)确认网络内的主机能ping通自己的网关。,2在服务器端(安装有多网卡的Linux PC)添加路由表信息 运行以下命令: route add net 211.66.80.0 netmask 255.255.255.0 dev eth0 route add net 192.168.10.0 netmask 255.255.255.0 dev eth1 route add net 172.16.0.0 netmask 255.255
18、.0.0 dev eth2 查看当前路由信息表。,3添加缺省路由 缺省路由根据具体的网络情况来设定,这里假设是211.66.80.10。 运行以下命令: route add default gw 211.66.80.10 查看当前路由信息表。,4打开IP转发,运行以下命令: /proc/sys/net/ipv4/echo 1 /proc/sys/net/ipv4/ip_forward 检查192.168.10.0/24和172.168.0.0/16网络之间能否用ping命令互相通信。,5在eth0上进行IP伪装,运行以下命令: iptables t nat A POSTROUTING o eth0 j MASQUERADE 顺利完成以上步骤后,内部网络可以通过路由器访问Internet,而且内部网络之间也可以通过第三层网络协议相互访问。,五、实验总结,1写出实验总结。 2路由器工作在OSI模型第几层?这一层的协议主要有哪些? 3如果不打开IP转发,两个内部网络间能否相互访问?由此可知IP转发的作用是什么? 4如果没有在eth0上进行IP伪装,内部网络能够访问Internet吗? *5试述NAT的基本原理。,