这节课分为两个完全无关的部分hhh

第一部分,VLAN划分及VLAN间路由;

第二部分,建立GRE Tunnel。

 

这次的网络模拟器用的是思科的Packet Tracer。


第一部分:VLAN及VLAN间路由

我们先做一个LAN的拓扑,如下:

初始状态下,所有端口都是VLAN1,所以只要ip没输错,任意ping都能通。

然后我们通过配置switch划分成两个VLAN,PC0和PC1一个(VLAN2),PC2和PC3一个(VLAN1)。

我们在switch上建一个VLAN2,然后把PC0和PC1连着的switch端口划分到VLAN2。
Switch(config)# vlan 2
Switch(config-vlan)# name vlan2 (vlan名字随便写)
Switch(config-vlan)# end
Switch# conf t
Switch(config)# int f0/2
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 2
Switch(config-if)# int f0/3
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 2
Switch(config-if)# end

然后确定一下VLAN端口已经弄好
Switch# sh vlan brief

然后可以ping一下,会发现ping不通了。

如果要联通两个VLAN需要一个路由器,或者一个三层交换机(显然不适用我们的情况)。

我们需要将与路由器相连的端口设置为Trunk,然后把路由器的端口分为两个子端口,配置如下:
Switch(config)# int f0/1
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan all
Switch(config-if)# switchport nonegotiate

在路由器上分为两个子端口,分别设置192.168.6.1/25和192.168.6.129/25
Router(config)# int g0/0
Router(config-if)# no sh
Router(config-if)# int g0/0.1
Router(config-subif)# encapsulation dot1Q 1 native
Router(config-subif)# ip add 192.168.6.1 255.255.255.128
Router(config-if)# int g0/0.2
Router(config-subif)# encapsulation dot1Q 2
Router(config-subif)# ip add 192.168.6.129 255.255.255.128

Note: 不是.1的子端口就一定要封装VLAN1的,也可以.10的子端口VLAN1的,只是为了配套。如果你愿意可以2端口封装1,1端口封装2 hhh

即使LAN里我们还用/24的子网掩码,而在路由器上我们用/25,我们试一下ping还是可以通的,得益于我们的交换机和路由器越来越智能,员工可以越来越智障,只要技术人员配置好主要的ip,LAN里面即使用默认的/24也是可以用的。

很明显,VLAN间是需要通过路由器的

Switch# sh mac address-table dynamic
这个动态MAC地址与端口及VLAN匹配表其实是一个arp缓存,和配了多少VLAN什么没什么关系,只要乱ping一通所有地址都可以在上面。

VLAN的Packet Tracer文件(因为pkt也不能上传,所以这个是ppt文件,需要把扩展名改成.pkt才能用):vlan

Switch和Router的配置文件也有:Router0_running-config Switch0_running-config

Switch的VLAN1我用的是默认值,mode access和access vlan 1,所以config里没有,但是考试的时候应该还是要配一下的。


第二部分,GRE Tunnel配置

因为模拟器搞ssh比较复杂,把禁止ssh换成了禁止http(s)。

流程如下:
1、配置原始网络,在路由器上启用RIPv2,测试http服务是否可用;(Rep: 可用)
2、配置ACL,锁掉http(s)服务,测试http服务是否可用;(Rep: 不可用)
3、配置GRE Tunnel,测试http是否可用。(Rep: 重新可用)

最后的图长这样,左边一个用户,右边一个服务器,R3的S0/0/1的in方向上设了一个ACL,锁掉http和https,R1和R3建立GRE Tunnel,两个LAN的流量都走Tunnel

配RIP没什么难度,就是记得no auto-summary,还可以在LAN的路由器接口设置passive-interface。

接下来配一个ACL来干掉到服务器的http和https。
在R3上面配置:
R3(config)# access-list 101 deny tcp any any eq 80 (干掉http)
R3(config)# access-list 101 deny tcp any any eq 443 (干掉https)
R3(config)# access-list 101 permit ip any any
最后一条放行规则一定是ip不是tcp!如果这里放行的是tcp的话,所有的udp icmp就都被干掉了,RIP也不能用了,ping也会挂掉。
R3(config)# int s0/0/1
R3(config-if)# ip access-group 101 in

我们http和https就挂掉了,但是ping是可以的。

为了验证我们的ACL在起作用,可以在R3上面查询ACL的运行状态:
R3# sh access-lists

接下来,我们要开始建立GRE Tunnel了,首先要保证两个路由器的ip互相要能ping通,路由表里要有记录,否则Tunnel建不起来。

建Tunnel的时候tunnel source可以输本地serial端口号码也可以输serial端口的ip,tunnel destination是对方的公网ip,两边都配置完成之后ping一下,然后就可以设个静态路由,把去往服务器的流量发到Tunnel里去,于是我们的http又活了。

看一下去往服务器的trace route,发现会走Tunnel,而且Tunnel算一个hop

但是注意一点,Tunnel虽然看做路由器的另一个interface,但是还是要借助物理端口工作。如果ACL设置在R1左边的连着LAN的端口或者R3右边LAN的端口,Tunnel的方法也是gg,因为一边是进不去,一边是出不来。Tunnel只能是绕开某一个interface的ACL,因为Tunnel里面数据是GRE封装的,不是tcp数据。如果连路由器都进不去的话Tunnel没办法工作。

配置文件:

R1_running-config R2_running-config R3_running-config