路由与交换

1 ACL 的配置

1.1 创建 ACL

标准 ACL

router(config)#access-list <ACL表号> {permit|deny}{<源IP|host><反掩码>|any}  //表号1~99

扩展 ACL

router(config)#access-list <ACL表号> {permit|deny}{<协议名称>|<端口号>}{<源IP><反掩码>}{<目的IP><反掩码>}{<关系><协议名称>}   //表号101~199

1.2 应用 ACL

router(config-if)#{协议栈} access-group <ACL表号> {in|out}   //协议栈可以为IP或IPX

2 ACL 上机实验

2.1 ACL 配置举例 1

router(config)#access-list 1 deny 10.0.0.1 0.0.0.0   //ACL表号为1,丢弃10.0.0.1发出的数据包,相当于 deny host 10.0.0.1router(config)#access-list 1 permit anyrouter(config)#access-list 2 permit any   //ACL表号为2,可以转发任意数据包router(config)#int s0/0router(config-if)#ip access-group 1 in   //该接口输入方向应用ACL列表组1,拒绝来自10.0.0.1的数据包router(config-if)#ip access-group 2 out   //该接口输出方向应用ACL列表组2,允许发出流经该路由器的所有数据包

2.2 ACL 配置举例 2

router(config)#access-list 101 deny tcp 172.16.0.0 0.0.255.255 host 192.168.1.1 eq telnet   //不允许172.16.0.0网络的数据包telnet主机192.168.1.1router(config)#access-list 101 permit ip any any   //允许转发其他任何数据包router(config)#int s0/0router(config-if)#ip access-group 101 in

2.3 ACL 配置举例 3

限制只允许 192.168.2.2 访问 192.168.1.2 的 80 端口,192.168.3.2 访问 192.168.1.2 的 DNS。

router(config)#ip access-list extended cjrouter(config ext-nacl)#permit udp host 192.168.3.2 host 192.168.1.2 eq 53router(config ext-nacl)#permit tcp host 192.168.2.2 host 192.168.1.2 eq 80router(config ext-nacl)#exitrouter(config)#int f0/0router(config-if)#ip access-group cj out

2.4 ACL 配置举例 4

要求:只允许 172.16.4.0/24 网络的主机通过端口 E0 进入网络 172.16.3.0/24,其他的被禁止。

为了实现上面的实验要求,我们将网络拓扑进行简化,PC1 的 IP 设置为 172.16.4.2,PC2 的 IP 设置为 172.16.0.2,PC3 的 IP 设置为 172.16.3.2,最终要达到的要求为 PC1 网段的主机可以访问 PC3 网段的主机,PC2 网段的主机不能访问 PC3 网段的主机。需要注意的是这里的路由器的选择,如果选择不恰当会导致端口不够用,可以参照下面的网络拓扑图中所选路由器。

先对路由器进行配置,让三台 PC 之间都可以通信。

Router>enableRouter#conf tRouter(config)#int gig0/0Router(config-if)#ip add 172.16.4.1 255.255.255.0Router(config-if)#no shutRouter(config-if)#exitRouter(config)#int gig0/1Router(config-if)#ip add 172.16.0.1 255.255.255.0Router(config-if)#no shutRouter(config)#int gig0/2Router(config-if)#ip add 172.16.3.1 255.255.255.0Router(config-if)#no shut

路由器配置完成后给各台 PC 分配 IP,并设置其网关,先来验证 PC1 和 PC2 都能 ping 通 PC3 。

上述结果表明,在没有做 ACL 限制前,PC 之间是可以相互通信的,现在来设置 ACL 规则,让 PC1 可以 ping 通 PC3,而 PC2 不能 ping 通 PC3。

Router(config)#access-list 5 permit 172.16.4.0 0.0.0.255Router(config)#int gig0/2Router(config-if)#ip access-group 5 out

现在再来验证 PC 之间的通信。

PC1 可以 ping 通 PC3,但 PC2 不能 ping 通 PC3,达到实验要求。这里并没有 deny any 的语句,是因为路由隐含在每个 ACL 列表的最后有一句拒绝所有数据包访问的语句,所以不用再专门写出了。

2.5 ACL 配置举例 5

要求:

(1)禁止从 172.16.4.0/24 通过 FTP 访问 172.16.3.0/24;

(2)除此以外的其他访问和数据流都允许。

为了验证上述实验,这里将网络拓扑图进行简化,由于 172.16.3.0 网段涉及 FTP 登录,这里用一台服务器来代替该网段,并设置 FTP 的登录账号和密码。

以下是简化的网络拓扑图和对 server 的 FTP 的配置 。

对路由器进行配置,配置好后为 PC 和 server 分配 IP,并设置其网关,然后验证 PC1 在没有做 ACL 限制前可以访问 FTP。

Router>enableRouter#conf tRouter(config)#int gig0/0Router(config-if)#ip add 172.16.4.1 255.255.255.0Router(config-if)#no shutRouter(config-if)#exitRouter(config)#int gig0/1Router(config-if)#ip add 172.16.0.1 255.255.255.0Router(config-if)#no shutRouter(config-if)#exitRouter(config)#int gig0/2Router(config-if)#ip add 172.16.3.1 255.255.255.0Router(config-if)#no shutRouter(config-if)#exit

现在对路由器做 ACL 限制,让 PC1 无法再登录 server 的 FTP。

Router(config)#access-list 105 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 20Router(config)#access-list 105 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 21Router(config)#access-list 105 permit ip any anyRouter(config)#int gig0/0Router(config-if)#ip access-group 105 in

验证 PC1 是否还能继续登录 server 的 FTP,由结果可以看出已经达到实验要求 。

列表最后要有一句 permit ip any any,这个必须加上,因为一个列表中至少要有一句 permit 语句。

2.6 ACL 配置举例 6

要求:

(1)拒绝 172.16.2.0/24 这个网段的主机访问 SERVER1;

(2)拒绝 PC1 访问 SERVER1;

(3)只允许 PC1 对 R2 进行远程连接管理。

R2(config)#access-list 1 deny 172.16.2.0 0.0.0.255R2(config)#access-list 1 deny host 172.16.1.10R2(config)#access-list 1 permit anyR2(config)#access-list 2 permit host 172.16.1.10R2(config)#int f0/0R2(config-if)#ip access-group 1 out   //对端口R2(config)#line vyt 0 4R2(config-line)#password fshR2(config-line)#access-class 2 in   //对线模式

2.7 ACL 配置举例 7

要求:

(1)211.12.3.0/24 这个网段不能访问 SEREVER2 的网页和 FTP,其他服务可以访问;

(2)所有设备都能 ping 通 PC4,但反之不行(单向 ping)。

控制访问类别

R2(config)#access-list 101 deny tcp 211.12.3.0 0.0.0.255 host 172.16.1.100 eq 80R2(config)#access-list 101 deny tcp 211.12.3.0 0.0.0.255 host 172.16.1.100 eq 20R2(config)#access-list 101 deny tcp 211.12.3.0 0.0.0.255 host 172.16.1.100 eq 21

控制单向 ping

R2(config)#access-list 101 permit icmp 211.12.3.0 0.0.0.255 any echo-reply   //echo-reply表示ICMP响应R2(config)#access-list 101 deny icmp 211.12.3.0 0.0.0.255 any   //拒绝211.12.3.0/24到其他任何网络的icmp包R2(config)#access-list 101 permit ip any anyR2(config)#int f0/1R2(config-if)#ip access-group 101 in

2.8 ACL 配置举例 8

要求:

(1)VLAN 10 不能访问 VLAN 30;

(2)其余 VLAN 之间可以自由访问。

1、划分 VLAN,并将各接口分配至 VLAN中。

Switch>enableSwitch#conf tSwitch(config)#vlan 10Switch(config-vlan)#exitSwitch(config)#vlan 20Switch(config-vlan)#exitSwitch(config)#vlan 30Switch(config-vlan)#exitSwitch(config)#int fa0/1Switch(config-if)#switchport mode accessSwitch(config-if)#switchport access vlan 10Switch(config-if)#exitSwitch(config)#int fa0/2Switch(config-if)#switchport mode accessSwitch(config-if)#switchport access vlan 20Switch(config-if)#exitSwitch(config)#int fa0/3Switch(config-if)#switchport mode accessSwitch(config-if)#switchport access vlan 30Switch(config-if)#exit

2、开启交换机路由功能,并给各虚拟 VLAN 接口配置 IP 地址,此接口和地址将成为 vlan 中主机的网关。

Switch(config)#ip routingSwitch(config)#int vlan 10Switch(config-if)#ip add 10.0.0.1 255.255.255.0Switch(config-if)#exitSwitch(config)#int vlan 20Switch(config-if)#ip add 20.0.0.1 255.255.255.0Switch(config-if)#exitSwitch(config)#int vlan 30Switch(config-if)#ip add 30.0.0.1 255.255.255.0Switch(config-if)#exit

3、配置访问控制列表,并应用。

Switch(config)#access-list 1 deny 10.0.0.0 0.0.0.255Switch(config)#access-list 1 permit anySwitch(config)#int vlan 30Switch(config-if)#ip access-group 1 out

4、配置各主机的 IP 地址及网关,通过 ping 检验各 vlan 之间的通信情况。

PC1 去 ping 另外两台 PC 。

另外两台 PC 的通信 。

2.9 ACL 单向 ping

实验要求:

(1)配好设备 IP 后,先相互 ping,能 ping 通;

(1)设置 ACL,使得:

1. 所有设备能 ping 通 PC3,即 PC3 能对所有 ping 请求作响应;

2. PC3 不能 ping 其他设备。

对交换机进行设置,将交换机与路由器相连的接口设置为 trunk 模式。

Switch>enableSwitch#conf tSwitch(config)#int fa0/3Switch(config-if)#switchport mode trunk

对路由器进行设置。

Router>enableRouter#conf tRouter(config)#int fa0/0Router(config-if)#ip add 10.0.0.1 255.255.255.0Router(config-if)#no shutRouter(config-if)#exitRouter(config)#int fa1/0Router(config-if)#ip add 20.0.0.1 255.255.255.0Router(config-if)#no shut

上述配置完成后给各台 PC 分配 IP,并设置它们的网关,然后验证它们之间的通信。这里的通信比较简单,自行去验证。

ping 的动作总共分为两部分,一是源主机将数据包发送给目标主机,二是目标主机收到数据包后给源主机响应。由于 PC3 不能 ping 通其他 PC,而其他 PC 能够 ping 通 PC3,说明 PC3 能给其他所以 PC 响应,为了简化 ACL 配置,这里以 PC3 为源主机,允许它的所有 icmp 的响应,其他的 icmp 被限制,由于 PC3 为源主机,则数据包是经过路由器的 fa1/0 进入网络的,下面是 ACL 规则的配置。

Router(config)#access-list 101 permit icmp 20.0.0.0 0.0.0.255 any echo-replyRouter(config)#access-list 101 deny icmp 20.0.0.0 0.0.0.255 anyRouter(config)#access-list 101 permit ip any anyRouter(config)#int fa1/0Router(config-if)#ip access-group 101 in

对结果进行验证,用 PC3 去 ping 其他两台 PC 。

其他两台 PC 去 ping 主机 PC3 。

2.10 ACL 控制 VLAN 之间的访问

实验要求:

(1)开启三层交换机路由功能,PC1,PC2,PC3,PC4 和 server 分别在 vlan10,vlan20,vlan30,vlan40 和 vlan50;

(2)查看路由表,确实各 VLAN 之间可以互通;

(3)设置访问控制列表,使 VLAN 10 和 VLAN 20 之间不可以相互访问,VLAN 30 和 VLAN 40 与服务器所在的 VLAN 50 不可以相互访问;

(4)其余所有的访问都是允许的。

1、划分 VLAN,并将各接口分配至 VLAN 中。

Switch>enableSwitch#conf tEnter configuration commands, one per line.  End with CNTL/Z.Switch(config)#vlan 10Switch(config-vlan)#exitSwitch(config)#vlan 20Switch(config-vlan)#exitSwitch(config)#vlan 30Switch(config-vlan)#exitSwitch(config)#vlan 40Switch(config-vlan)#exitSwitch(config)#vlan 50Switch(config-vlan)#exitSwitch(config)#int fa0/1Switch(config-if)#switchport mode accessSwitch(config-if)#switchport access vlan 10Switch(config-if)#exitSwitch(config)#int fa0/2Switch(config-if)#switchport mode accessSwitch(config-if)#switchport access vlan 20Switch(config-if)#exitSwitch(config)#int fa0/3Switch(config-if)#switchport mode accessSwitch(config-if)#switchport access vlan 30Switch(config-if)#exitSwitch(config)#int fa0/4Switch(config-if)#switchport mode accessSwitch(config-if)#switchport access vlan 40Switch(config-if)#exitSwitch(config)#int fa0/5Switch(config-if)#switchport mode accessSwitch(config-if)#switchport access vlan 50Switch(config-if)#exit

2、开启交换机路由功能,并给各虚拟 VLAN 接口配置 IP 地址,此接口和地址将成为 vlan 中主机的网关。

Switch(config)#int vlan 10Switch(config-if)#ip add 10.0.0.1 255.255.255.0Switch(config-if)#exitSwitch(config)#int vlan 20Switch(config-if)#ip add 20.0.0.1 255.255.255.0Switch(config-if)#exitSwitch(config)#int vlan 30Switch(config-if)#ip add 30.0.0.1 255.255.255.0Switch(config-if)#exitSwitch(config)#int vlan 40Switch(config-if)#ip add 40.0.0.1 255.255.255.0Switch(config-if)#exitSwitch(config)#int vlan 50Switch(config-if)#ip add 50.0.0.1 255.255.255.0Switch(config-if)#exit

3、配置 vlan 10 与 vlan 20 不能相互访问的控制列表,并应用。

Switch(config)#access-list 1 deny 20.0.0.0 0.0.0.255Switch(config)#access-list 1 permit anySwitch(config)#int vlan 10 Switch(config-if)#ip access-group 1 outSwitch(config-if)#exitSwitch(config)#access-list 2 deny 10.0.0.0 0.0.0.255Switch(config)#access-list 2 permit anySwitch(config)#int vlan 20Switch(config-if)#ip access-group 2 outSwitch(config-if)#exit

4、验证设置 ACL 后 vlan 10 与 vlan 20 之间的通信,结果表明设置的 ACL 已经生效,vlan 10 与 vlan 20之间不能相互访问 。

5、配置 vlan 30 和 vlan 40 与 vlan 50 不能相互访问的控制列表,并应用。

Switch(config)#access-list 3 deny 50.0.0.0 0.0.0.255Switch(config)#access-list 3 permit anySwitch(config)#int vlan 30Switch(config-if)#ip access-group 3 outSwitch(config-if)#exitSwitch(config)#int vlan 40Switch(config-if)#ip access-group 3 outSwitch(config-if)#exitSwitch(config)#access-list 4 deny 30.0.0.0 0.0.0.255Switch(config)#access-list 4 deny 40.0.0.0 0.0.0.255Switch(config)#access-list 4 permit anySwitch(config)#int vlan 50Switch(config-if)#ip access-group 4 out

6、验证设置 AC L后 vlan 30 和 vlan 40 与 vlan 50 之间的通信,结果表明设置的 ACL 已经生效,vlan 30 和 vlan 40 与 vlan 50 之间不能相互访问。这里以 vlan 50 去访问 vlan 30 与 vlan 40为例,其他的通信情况自行测试 。

2.11 ACL 综合练习

实验要求:

(1)PC1 和 PC2 在 10.0.0.0 网段,server 在 20.0.0.0 网段,PC3 在 30.0.0.0 网段。在服务器 server 开启 HTTP 和 FTP 功能,设置 FTP 登录用户名、密码和访问权限;

(2)10.0.0.0 网段可以访问 server 的 FTP,其他访问均被拒绝;

(3)PC3 可以访问 server 的 HTTP,但不可以访问 server 的 FTP;

(4)服务器 server 可以 ping 通所有设备,但所有设备不可以 ping 服务器 sever。

对交换机进行配置。

Switch>enableSwitch#conf tSwitch(config)#int fa0/3Switch(config-if)#switchport mode trunk

对路由器进行配置,设置各台 PC 的网关及其掩码。

Router>enableRouter#conf tRouter(config)#int gig0/0 Router(config-if)#ip add 10.0.0.1 255.255.255.0Router(config-if)#no shutRouter(config-if)#exitRouter(config)#int gig0/1Router(config-if)#ip add 30.0.0.1 255.255.255.0Router(config-if)#no shutRouter(config-if)#exitRouter(config)#int gig0/2Router(config-if)#ip add 20.0.0.1 255.255.255.0Router(config-if)#no shutRouter(config-if)#exit

配置访问控制列表,并应用。

Router(config)#access-list 101 permit tcp 10.0.0.0 0.0.0.255 20.0.0.0 0.0.0.255 eq 20Router(config)#access-list 101 permit tcp 10.0.0.0 0.0.0.255 20.0.0.0 0.0.0.255 eq 21Router(config)#access-list 101 permit tcp 30.0.0.0 0.0.0.255 20.0.0.0 0.0.0.255 eq 80Router(config)#access-list 101 permit icmp any 20.0.0.0 0.0.0.255 echo-replyRouter(config)#access-list 101 deny icmp any 20.0.0.0 0.0.0.255Router(config)#int gig0/2Router(config-if)#ip access-group 101 out

给所有 PC 和 server 分配 IP,并设置其网关,对 server 进行设置,开启 FTP 并添加用户,FTP 的设置可以参考前面的配置。验证 10.0.0.0 网段可以访问 server 的 FTP,其他访问被拒绝是否生效。由结果可以看出配置已经成功 。

验证 PC 可以访问 server 的 HTTP,但不能访问 server 的 FTP 是否生效,结果表明 ACL 配置已经成功 。

验证 server 可以 ping 通所有设备,所有设备不能 ping 通 server:

server 去 ping 其他网段的 PC ;

10.0.0.0 网段的 PC ping server ;

30.0.0.0 网段的 PC ping server 。

上述结果表明,已经达到实验要求。

对 ACL 设置的小结:在应用 ACL 的时候,大部分同学可能会在判断是进入接口还在出接口的地方感到疑惑,解决这个问题最好的办法就是去看自己写的 ACL 规则,ACL 规则里面都有源主机地址,不论是标准还是扩展,都会写上源地址,那么从源地址出发到目标主机,看它经过的设备,这样能够一目了然看出应该应用在接口的出还是进。

(0)

相关推荐