资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验,17,IP,路由的配置,一、实验目的,二、实验工具与设备,三、实验预备知识,四、实验内容和步骤,五、实验总结,一、实验目的,1,掌握路由器的基本原理。,2,掌握,NAT,的基本原理。,3,掌握将,Linux,配置为路由器的方法。,4,掌握,IP,伪装的原理及配置方法。,二、实验工具与设备,1,交换机(或者集线器)。,2,带多网卡(至少两块网卡)的装有,Red Hat Linux 9.0,系统的,PC,一台。,3,带网卡的,PC,若干台(系统为,Windows,或,Linux,均可)。,4,网线若干。,5,能接入,Internet,的信息点(至少一个)。,6,Red Hat Linux 9.0,安装光盘。,三、实验预备知识,1,路由器概述,路由器是用于连接逻辑上分开的网络,所谓逻辑网络,是指一个单独的网络或一个子网。路由器的最基本功能是路由,对一个具体的路由器来说,路由是将从一个接口接收到的数据包,转发到另外一个接口的过程。该过程类似交换机的交换功能,由于工作在数据链路层,称为交换;路由器工作在网络层,称之为路由;对于一个网络来说,路由是将数据包从一个端点(主机)传输到另外一个端点(主机)的过程。,路由的工作方法分为两个基本步骤:第一个步骤为路由选择,路由器根据到达数据包的目标地址和路由表内容进行路径选择;第二个步骤为包转发,根据选择的路径,将包从某个接口转发出去。为完成这两个步骤,在路由器中保存着各种传输路径的相关数据,路由表(,Routing Table,),以供路由器进行路径选择。路由表中保存着路由来源、目标网段、管理距离,/,量度值、下一跳,IP,地址、存活时间、下一跳接口等信息。路由表是路由器进行路径抉择的基础,路由表内容(路由表项,又称为路由)的来源有两个:静态配置和路由协议动态学习。,(,1,)静态路由表配置,静态路由表是手工配置的路由,使得数据包的传送按预定的路径进行。静态路由的优点是速度快、基本上不占用系统开销,缺点是当网络发生变化时必须手工更改,不适合大型网络。,(,2,)动态路由表配置,动态路由表是路由器根据网络运行情况自动更新、调整路由表的信息。路由器可以由动态路由选择协议(如,RIP,、,OSPF,等)提供的功能自动学习和记忆网络运行的情况,及时维护与更新路由器信息。动态路由的优点是一旦正常工作就不需要手工维护,可以根据网络的变化而自动更新维护,特别适合大型的网络,缺点是占用的开销大。,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,命令中参数的意义如下。,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,)删除缺省路由(默认网关),假设需要删除网关,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/24,eth1:192.168.10.1/24,eth2:172.16.1.1/16,网络拓扑结构如图,17-1,所示。,网络参数的具体配置可参阅实验三的预备知识,这里不再重复。,注意:,eth0,、,eth1,、,eth2,分别表示主机上安装的三块网卡,其中,,eth0,连接网络,211.66.80.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,数据报的报头有目的,IP,地址和源,IP,地址,如图,17-2,所示。当数据报中目的网络的,IP,地址不在系统的路由表中时,系统通过缺省路由把这些数据报发往上一级网关。该缺省路由根据具体的网络情况设定,这里假设是,211.66.80.10,。增加该缺省路由的命令如下:,route add default,gw,211.66.80.10,这样,路由器的静态路由表建立完成。在命令行输入命令,route,查看路由表,应有以下结果:,Kernel IP routing,tablee,Destination,Gateway,Gennask,Flags,Metric,Ref,Use,Iface,211.66.80.0,255.255.255.0,U,0,0,0,eth0,192.168.10.0,255.255.255.0,U,0,0,0,eth1,172.16.0.0,255.255.0.0,0,0,0,0,eth2,default,211.66.80.10,0.0.0.0,UG,0,0,0,eth0,最后,还需要为系统打开,IP,转发功能,路由器才能真正开始工作。,打开,IP,转发的命令:,/proc/sys/net/ipv4/echo 1 /proc/sys/net/ipv4/,ip,_forward,至此,路由器基本配置完成。如果路由器连接的网络都是使用,Internet,上的合法,IP,,路由器已经能正常工作了,各个网络也可以通过该路由器相互访问。,Version Number,Header Length,Type of Service,(服务类型),Datagram,Length,(数据包长度),Identification,(标识),0,DF,MF,Fragment Offset,(数据块偏移),Time to Live,(,TTL,)(生存时间),Transport Protocol,(传输协议),Header Checksum,(标题检查和),Sending Address,(发送端地址),Destination Address,(目的地地址),Options,(现在项),Padding,(填充),图,17-2 IP,数据包包头图示,注意:从,IP,地址的范围可知,路由器,eth0,接口连接的是,Internet,上一个真实的合法的网络,另外的两个接口连接的是私有网络,当这些私有网络向,Internet,访问时,会出现问题。这时,就需要路由器打开地址转换功能(,NAT,)来解决这个问题。,4,Linux,的,NAT,功能,IP,数据包的包头结构如图,17-2,所示,每个,IP,数据报的报头都有一个源发送地址(,Sending Address,),简称源地址;一个目的地址(,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.10,IP,数据包到达,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,而言是不可识别(因为网络非直接连接)的,只能再发往上一级网关。因此,响应的,IP,数据包不能如期返回。这也是为什么一般情况下用私有,IP,地址(保留地址)是无法访问,Internet,的原因。,如果希望用内部,IP,也能直接访问,Internet,,最有效的方法是利用,Linux,的路由器的地址转换功能。对于私有网络发送的数据包,路由器将源地址转换为合法的地址,再发送出去;返回的数据包再由路由器将目标地址转换成内部主机的,IP,地址,这样就可以解决问题了。,具体的工作原理如下:,从客户机执行命令:,ping 211.66.80.10,图,17-3,表示,IP,数据包的走向以及地址转换的过程。,图,17-3,地址转换过程,在,Linux,环境中,完成该地址转换一般使用,iptables,命令。,iptables,命令是,Linux,环境功能非常强大的,IP,防火墙管理命令,其规则很多,用法也很灵活。限于篇幅,这里不作很详细的介绍。,iptalbes,是用来设置、维护和检查,Linux,内核的,IP,包过滤规则。可以定义不同的表(,tables,),每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对相应的,IP,数据包进行匹配:每条规则指定应当如何处理与之相匹配的,IP,数据包。,防火墙的规则指定所检查包的特征和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,则下一条规则由目标值确定。该目标值可以是用户定义的链名,或是某个专用值,如,ACCEPT,(通过)、,DROP,(删除)、,QUEUE,(排队)或,RETURN,(返回)。其中,,ACCEPT,表示让这个包通过;,DROP,表示将这个包丢弃;,QUEUE,表示把这个包传递到用户空间;,RETURN,表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建链的末端,或遇到内建链的规则是,RETURN,,包的去向由链准则指定的目标决定。,系统内核一般包含如下三个表(用户也可自己定义不同的表)。,filter,表:默认的表,包含内建的链,INPUT,(处理进入的包)、,FORWORD,(处理通过的包)和,OUTPUT,(处理本地生成的包)。,nat,表:主要作用是用于地址转换,由三个内建的链构成:,PREROUTING(,修改到来的包,),、,OUTPUT,(修改路由之前本地的包)和,POSTROUTING,(修改准备出去的包)。,mangle,表:用来对指定的包进行修改,有两个内建规则:,PREROUTING,(修改路由之前进入的包)和,OUTPUT,(修改路由之前本地的包)。,实例:在前面介绍的路由器基础上,结合,iptalbes,实现地址转换(,NAT,)。,在路由器内部,,eth0,和,eth1,之间的,IP,是可以相互转发的,还需要在,eth0,上实现,IP,地址的转换,对准备离开,eth0,的,IP,数据包进行地址转换。,实现方法:在前面配置的路由器基础上,运行以下命令(在,eth0,上实现,I
展开阅读全文