实验目的
通过本实验,理解路由器的防火墙工作原理,掌握路由器的防火墙功能配置方法,主要包括网络地址转换功能和数据包过滤功能的配置。
培养根据具体环境与实际需求进行网络地址转换及数据包过滤的能力。
预备知识
网络地址转换
网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,广泛应用于各种类型Internet接入和各种类型的网络中。NAT不仅完美解决了lP地址不足的问题,而且还能够有效避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
NAT的实现方式有三种,静态转换StaticNat、动态转换DynamicNat和端口多路复用PAT。
1)静态NAT
静态NAT是将内部网络的私有IP地址转换为公有IP地址,IP地址对固定不变,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如WWW、FTP)的访问。
2)动态NAT
动态转换是将内部网络的私有IP地址转换为公用IP地址时,IP地址对不确定,是随机的,所有被授权访问Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。
3)端口PAT
端口多路复用是改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,PortAddressTranslation),采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自Internet的攻击。目前网络中应用最多的就是端口多路复用方式。
访问控制列表
访问控制列表(Access Control List,简称为 ACL),它使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。ACL 分很多种,不同场合应用不同种类的 ACL。
1)标准 ACL
标准 ACL 最简单,是通过使用 IP 包中的源 IP 地址进行过滤,表号范围 1-99 或 1300-1999;
2)扩展 ACL
扩展 ACL 比标准 ACL 具有更多的匹配项,功能更加强大和细化,可以针对包括协议类型、源地址、目的地址、源端口、目的端口、TCP 连接建立等进行过滤,表号范围 100-199 或 2000-2699;
3)命名 ACL
以列表名称代替列表编号来定义 ACL,同样包括标准和扩展两种列表。
在访问控制列表的学习中,要注意以下两个术语。
1)通配符掩码
一个 32 比特位的数字字符串,它规定了当一个 IP 地址与其他的 IP 地址进行比较时,该 IP 地址中哪些位应该被忽略。通配符掩码中的“1”表示忽略 IP 地址中对应的位,而“0”则表示该位必须匹配。两种特殊的通配符掩码是“255.255.255.255”和“0.0.0.0”,前者等价于关键字“any”,而后者等价于关键字“host”;
2)Inbound 和outbound
当在接口上应用访问控制列表时,用户要指明访问控制列表是应用于流入数据还是流出数据。
Inbound表示应用于流入数据。
Outbound表示应用于流出数据。
总之,ACL 的应用非常广泛,它可以实现如下的功能:
拒绝或允许流入(或流出)的数据流通过特定的接口;
为 DDR 应用定义感兴趣的数据流;
过滤路由更新的内容;
控制对虚拟终端的访问;
提供流量控制。
思科IOS使用
思科IOS是思科研发的网络操作系统软件,思科的交换机/路由器都安装了IOS软件。通过在IOS下的进行配置操作,可以管理和配置思科的网络设备,构建的各种网络。
通常,配置思科交换机/路由器有两种方法:
1)控制台(Console )
可以直接对交换机进行配置;
2)远程登录(Telnet)
通过TELNET程序对已经设置了IP的交换机进行远程配置,一般在通过控制台配置好交换机的IP后才可以进行。
在IOS中,有几种模式:用户模式、特权模式、全局模式、端口模式。它们之间呈现出递进关系:用户模式->特权模式->全局模式->端口模式。
1)用户模式
在控制台或/telnet方式进入交换机/路由器,首先进入的就是用户模式,在用户模式下用户将受到极大的限制,只能用来查看一些统计信息。其提示符为:
Switch>
2)特权模式
在用户模式下输入enable(可简写为en)命令就可以进入特权模式,用户在该模式下可以查看并修改Cisco设备的配置。其提示符变为:
Switch>en
Switch#
3)全局配置模式
在特权模式下输入config terminal(可简写conf t)命令即可,用户在该模式下可修改交换机的全局配置,如修改主机名。提示符也有相应变化:
Switch#conf t (中间包含空格)
Switch(config)#
4)接口模式
在全局配置模式下输入interface fastethernet 0/1(可简写int f0/1)就可以进入到接口模式,在这个模式下所做的配置都是针对f0/1这个接口所设定的。如设定IP等。注意提示符的变化:
Switch(config)#int f0/1
Switch(config-if)#
Packet Tracer
Packet Tracer 是由Cisco公司发布的一个辅助学习工具,为学习思科网络课程的初学者去设计、配置、排除网络故障提供了网络模拟环境。用户可以在软件的图形用户界面上直接使用拖曳方法建立网络拓扑,并可提供数据包在网络中行进的详细处理过程,观察网络实时运行情况。可以学习IOS的配置、锻炼故障排查能力。
本实验的所有操作,都是基于Packet Tracer环境下进行的。
实验步骤一
任务描述:使用Packet Tracer构建网络拓扑
使用Packet Tracer构建如下所示网络:
说明:
1)本网络拓扑为多层网络架构:内层网络、中层网络、外层网络、Internet网络。其边界的主要标志是路由器。
2)内层网络为连接在路由器Router0的G0/0和G0/1端口的网络,有两个网络段:192.168.1.0/24和192.168.2.0/24;网络出口为Router0的G0/2端口,与中层Router1相连。
3)中层网络为连接在路由器Router1的G0/0端口的网络,网络段为10.1.1.0/24;网络出口为Router1的G0/1端口,与外层Router2相连。
4)外层网络为连接在路由器Router2的G0/0端口的网络,网络段为12.1.1.0/30;网络出口为Router2的G0/1端口,与外部网络(如Internet网络)相连。
5)图示PC1与PC2为内层网络所接主机,server0为Internet网络所接服务器。
6)各网络中网络设备的端口及IP、主机和服务器的IP见图中左边列表。
实验步骤如下:
1、运行Packet Tracer
登录到实验机后,在桌面上有一个Packet Tracer图标,双击该图标运行Packet Tracer软件。界面如下:
界面主要部分说明:
1)界面中间大空白部分,为设计拓扑图工作区;
2)界面左下角,为设备种类选择区;
3)界面中下角,为设备型号区,与设备类型相关;
2、向网络拓扑中添加物理设备(包括路由器、主机、服务器等)
在软件界面下,通过拖拽的方式,将路由器、主机、服务器等拖到工作界面下,按拓扑图所示位置摆放。并按拓扑图中要求修改各设备的名称。
注:
1)添加设备方式为,首先选中所要选的“设备种类”,再到“设备型号“中选择具体的设备,拖拽到工作区即可)。
2)路由器的型号选择2911,其他所有设备型号都选择“Generic”(即通用设备)。
3、设置设备之间的物理连接
点击下左图的连线图标(见红框标注),可以看到有各种连线,见下右图。
选择右图中红框所示连线类型,即交叉线。
注:
关于网络设备的定义和设备间连接方式一般规律:
1)两类设备定义:DTE类设备和DCE类设备。
DTE 类设备:PC、路由器、交换机uplink口、HUB级联口;
DCE 类设备:交换机普通口、HUB普通口;
2)同类设备间相连使用交叉线方式;异类设备间相连使用直通线方式。
4、设置各物理设备的IP地址
1)pc0设置IP地址:双击pc0设备图标出现如下界面:
点击IP Configuration红框配置IP地址(按前面拓扑图所规定IP地址进行设置)。
其他的pc机和server都可以按照上述方式配置。
2)配置路由器接口及IP
双击路由器Router1图标,出现路由器详情界面,点击“CLI”菜单,即出现路由器的“用户模式”。此时可进入“特权模式”,并进行相关配置,见下图:
其他接口也按照这种方式配置。同样,按这种方式配置好Router0和Router2。
5、配置路由
1)配置R0的路由:
R0(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1
2)配置R1的路由:
R1(config)#router eigrp 1
R1(config-router)#network 10.1.1.0 0.0.0.255
R1(config-router)#network 12.1.1.0 0.0.0.3
R1(config-router)#no auto-summary
3)配置R2的路由:
R2(config)#router eigrp 1
R2(config-router)#no auto-summary
R2(config-router)#network 12.1.1.0 0.0.0.3
R2(config-router)#network 58.20.127.0 0.0.0.3
6、测试
1)在路由器R1上分别ping 与之相邻的R0和R2的IP地址,能ping通了说明配置好了。
2)在R0上分别ping两台pc机。
3)在R2上ping Server0。
注意:如果在测试环节中有任何一步测试不成功,必须先把问题解决才能做后面的实验(后面实验步骤都将以本任务成功完成为前提),解决的办法是,仔细查看每台设备的IP地址配置、以及路由器的路由设置。
实验步骤二
任务描述:NAT设置
本任务包括三个子任务:
子任务一:静态NAT配置;
子任务二:动态NAT配置;
子任务三:PAT配置。
注:
1、本任务的前提,是已经完成了实验步骤一的实验操作且结果正确。
2、为了方便大家实验,在做实验时可以打开桌面上的NAT&&ACL文件夹,里面有对应实验的的pkt文件。
静态NAT
本子任务将实现内网IP与外网IP的静态NAT。包含两个映射:
1)内网IP为192.168.1.1映射到外网IP为10.1.1.10。
2)内网IP为192.168.2.1映射到外网IP为10.1.1.20。
拓扑和路由设置(即完成步骤一)。
实验步骤如下:
1、打开桌面NAT&&ACL文件夹中的“静态nat.pkt”文件,加载初始化网络环境;
2、在R0上配置静态NAT
//配置静态nat映射
R0(config)#ip nat inside source static 192.168.1.1 10.1.1.10
R0(config)#ip nat inside source static 192.168.2.1 10.1.1.20
//配置nat内部接口
R0(config)#int g0/0
R0(config-if)#ip nat inside
R0(config-if)#int g0/1
R0(config-if)#ip nat inside
//配置nat外部接口
R0(config-if)#int g0/2
R0(config-if)#ip nat outside
3、测试
1)在R0上,打开debug,查看地址翻译的过程:
R0#debug ip nat
在pc0或者pc1上ping 58.20.127.1 (Server0的地址),此时路由器将输出如下内容:
2)在R0上查看NAT映射表
R0#show ip nat translations
可以看到静态时映射表一直存在,表明了内部全局地址和内部局部地址的对应关系。如下图:
说明:
内部局部(inside local)地址:在内部网络使用的地址;
内部全局(inside global)地址:用来代替一个或多个本地 IP 地址的、对外的、向 NIC 注册过的地址;
外部局部(outside local)地址:一个外部主机相对于内部网络所用的 IP 地址。不一定是合法的地址;
外部全局(outside global)地址:外部网络主机的合法 IP 地址。
动态NAT配置
本子任务将实现内网IP与外网IP的动态NAT。其中:
1)内网需要映射的IP有两个:192.168.1.1和192.168.2.1。
2)外网可以用于映射的IP段:10.1.1.10至10.1.1.15。
前提:完成网络拓扑和路由设置(即完成步骤一)。
实验步骤如下:
1、打开桌面NAT&&ACL文件夹中的“动态nat.pkt”文件,加载初始化网络环境;
2、在路由器R0上配置动态NAT。
//配置动态nat转换的地址池
R0(config)#ip nat pool natPoolName 10.1.1.10 10.1.1.15 netmask 255.255.255.0
//配置动态的nat映射,以及访问控制
R0(config)#ip nat inside source list 1 pool natPoolName
//访问控制列表1,允许全部访问
R0(config)#access-list 1 permit any
R0(config)#int g0/0
R0(config-if)#ip nat inside
R0(config-if)#int g0/1
R0(config-if)#ip nat inside
R0(config-if)#int g0/2
R0(config-if)#ip nat outside
3、测试,在R0上,打开debug,查看地址翻译的过程:
可以看到动态映射关系只有在发起访问时存在,内网192.168.1.1映射到了10.1.1.10,而192.168.2.1则映射到了10.1.1.11。如下图:
端口PAT
本子任务将实现内网到外网的PAT转换。
前提:完成网络拓扑和路由设置(即完成步骤一)。
实验步骤如下:
1、打开桌面NAT&&ACL文件夹中的“PAT.pkt”文件,加载初始化网络环境;
2、在R0路由器上配置PAT
//配置pat,以及访问控制
R0(config)#ip nat inside source list 1 interface gigabitEthernet 0/2 overload
// 访问控制列表1,允许全部访问
R0(config)#access-list 1 permit any
R0(config)#int g0/0
R0(config-if)#ip nat inside
R0(config-if)#int g0/1
R0(config-if)#ip nat inside
R0(config-if)#int g0/2
R0(config-if)#ip nat outside
3、测试。
1)在R0上,打开debug,查看地址翻译的过程
R0#debug ip nat
在pc0或者pc1上ping 58.20.127.1 (Server0的地址),此时路由器将输出如下内容:
2)在R0上查看NAT映射表
R0#show ip nat translations
可以看到静态时映射表一直存在,表明了内部全局地址和内部局部地址的对应关系。大体如下图:
上图可见,内部IP经PAT转换后,使用同一个IP的不同端口。
实验步骤三
任务描述:使用访问控制列表进行数据包过滤
本任务将使用ACL完成数据包过滤,实验拓扑图:
说明:拓扑图与本实验的步骤一相同。
本任务包括三个子任务:
子任务一:标准ACL;
子任务二:扩展ACL;
子任务三:命名ACL。
准备工作:构建网络拓扑图
本实现各子任务前,先把网络拓扑图构建好,包括网络设备、接口及IP地址,参见前面的步骤一:使用Packet Tracer构建网络拓扑图。
注:只需把网络拓扑图、接口及IP地址做好,不要配置路由。
标准ACL
通过标准ACL实现如下要求:
192.168.1.0/24网段不能访问Server0
192.168.2.0/24网段可以访问Server0
只允许Server0可以telnet R1
前提:完成了网络拓扑构建(即准备工作)。
实验步骤如下:
1、打开桌面NAT&&ACL文件夹中的“标准acl.pkt”文件,加载初始化网络环境;
2、配置ACL
//拒绝192.168.1.0/24网段的主机接入
R1(config)#access-list 1 deny 192.168.1.0 0.0.0.255
R1(config)#access-list 1 permit any
//将访问控制列表应用与接口
R1(config)#int g0/0
R1(config-if)#ip access-group 1 in
//允许主机58.20.127.1接入
R1(config)#access-list 2 permit host 58.20.127.1
R1(config)#line vty 0 4
R1(config-line)#password cisco
R1(config-line)#login
//应用访问控制列表2
R1(config-line)#access-class 2 in
3、实验测试,达到如下效果即表明实验成功。
1)在pc0上ping Server0(58.20.127.1)
2)在pc1上ping Server0(58.20.127.1)
3)在pc1上telnet R1
4)在Server0上telnet R1
扩展ACL
通过扩展ACL实现如下要求:
实现192.168.1.0/24网段访问Server0的www和ftp;
实现192.168.2.0/24网段访问Server0的ftp
禁止ping Server0
前提:完成了网络拓扑构建(即准备工作)。
实验步骤如下:
1、打开桌面NAT&&ACL文件夹中的“扩展acl.pkt”文件,加载初始化网络环境;
2、配置路由器R0
R0(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1
R0(config)#ip nat inside source list 100 interface GigabitEthernet0/2 overload
R0(config)#access-list 100 permit tcp 192.168.1.0 0.0.0.255 host 58.20.127.1 eq www
R0(config)#access-list 100 permit tcp 192.168.1.0 0.0.0.255 host 58.20.127.1 eq ftp
R0(config)#access-list 100 permit tcp 192.168.2.0 0.0.0.255 host 58.20.127.1 eq ftp
R0(config)#access-list 100 permit icmp any any
R0(config)#int g0/0
R0(config-if)#ip nat inside
R0(config-if)#int g0/1
R0(config-if)#ip nat inside
R0(config-if)#int g0/2
R0(config-if)#ip nat outside
3、配置路由器R2
R2(config)#access-list 100 deny icmp any host 58.20.127.1
R2(config)#access-list 100 permit udp any host 58.20.127.1
R2(config)#access-list 100 permit tcp any host 58.20.127.1
R2(config)#access-list 100 permit eigrp any any
R2(config)#interface g0/0
R2(config-if)#ip access-group 100 in
4、实验测试
1)在pc0和pc1上分别ping Server0(58.20.127.1)
2)在pc0和pc1上分别ftp登陆Server0
3)在pc0上访问Server0的web服务,允许访问。
4)在pc1上访问Server0 的web服务,不允许访问(请求超时)。
命名ACL
本子任务包括两个部分:标准命名ACL和扩展命名ACL。
标准命名ACL
实现效果:
实现192.168.1.0/24网段(pc0所在网段)访问互联网(Server0)。
实现192.168.2.0/24网段(pc1所在网段)禁止访问互联网(Server0)。
前提:完成了网络拓扑构建(即准备工作)。
实验步骤:
1、打开桌面NAT&&ACL文件夹中的“标准命名acl.pkt”文件,加载初始化网络环境;
2、配置路由器R0
R0(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1
R0(config)#ip nat inside source list stand interface gigabitEthernet 0/2 overload
R0(config)#ip access-list standard stand
R0(config-std-nacl)#permit 192.168.1.0 0.0.0.255
R0(config-std-nacl)#deny 192.168.2.0 0.0.0.255
R0(config)#interface g0/0
R0(config-if)#ip nat inside
R0(config-if)#int g0/1
R0(config-if)#ip nat inside
R0(config-if)#int g0/2
R0(config-if)#ip nat outside
3、实验测试
在pc0、pc1上ping Server0,测试连通性。
扩展命名ACL
实现效果:
实现192.168.1.0/24网段(pc0所在网段)访问互联网Server0的www;
实现192.168.2.0/24网段(pc1所在网段)访问互联网Server0的ftp;
禁止icmp数据包通过
前提:完成了网络拓扑构建(即准备工作)。
实验步骤:
1、打开桌面NAT&&ACL文件夹中的“扩展命名acl.pkt”文件,加载初始化网络环境;
2、配置路由器R0
R0(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1
R0(config)#ip nat inside source list exte interface gigabitEthernet 0/2 overload
R0(config)#ip access-list extended exte
R0(config-ext-nacl)#permit tcp 192.168.1.0 0.0.0.255 host 58.20.127.1 eq www
R0(config-ext-nacl)#permit tcp 192.168.2.0 0.0.0.255 host 58.20.127.1 eq ftp
R0(config-ext-nacl)#deny icmp any any
R0(config)#int g0/0
R0(config-if)#ip nat inside
R0(config-if)#int g0/1
R0(config-if)#ip nat inside
R0(config-if)#int g0/2
R0(config-if)#ip nat outside
3、实验测试
在pc0(192.168.1.1)和pc1(192.168.2.1)上测试分别测试,都不能ping通Server0,但pc1可以用ftp登陆,pc0不能。
pc0可以访问web,pc1不能访问web。