VLAN acl ,端口隔离 ,private vlan
VLAN acl ,端口隔离 ,private vlan
VLAN acl
针对于VLAN做ACL,访问控制列表,
Access-map
技术背景
VLAN有着分割广播域的作用,通常情况下一个VLAN 内部的主机可以无条件的进行互访,(因为在一个广播域里)
但是会有这个的需求,如何能够使一个VLAN 下的主机不可以通信呢?
技术实现
1、ip access-list负责抓取数据
2、vlan access-map负责执行动作(这一点是不是和route-map很像?别急,后面会更新关于route-map的内容)
//那么既然是ACL负责抓取,肯定就是以permit为动作喽
需求如下,
使PC2和PC3之间不能通信,但是都可以和VPC(server)通信
三台设备同属于一个VLAN ,
Switch(config)#access-list 100 permit ip host 192.168.1.1 host 192.168.1.2 //扩展ACL抓取
Switch(config)#vlan access-map wfy 10 //定义VLAN ACL
Switch(config-access-map)#ma ip add 100 //匹配ip access 100
Switch(config-access-map)#action drop //执行动作为丢弃
Switch(config-access-map)#exit
Switch(config)#vlan access-map wfy 20 //为了放行其它还需要再建立一个
Switch(config-access-map)#action forward //不匹配任何(也就是所有的意思),动作为转发
Switch(config)#vlan filter aa vlan-list 10 //使用vlan filter 命令来挂接,针对于vlan 10
此处可以针对于所有VLAN,即vlan all
最终效果如下,PC2(192.168.1.1)可以和vpc通信,但是无法和pc3通信
当然这是纯二层的环境,那如果是加上三层会是什么样的效果呢?
单臂路由的环境中,连接着下面的三个VLAN ,正常情况下,三个VLAN 是可以正常通信的,
但是我现在要求 ,VLAN10不可以和VLAN20进行通信,但是VLAN10可以和VLAN30通信
如何来实现呢?
唉~也许你会想到,直接在路由器上配置ACL即可,这个方法当然是可以的,
但是我就不那样做,
我偏偏非要将策略部署在二层设备上
请问:为什么要将这些策略部署在底层(接入层设备)?
答:如果是按照园区网的架构来看,接入----汇聚----核心,能够部署在接入的,就不部署在汇聚,能部署在汇聚的就不部署在核心,
总之,就是一句话,当数据到达汇聚/核心层时,你只要负责给我高速转发就行了,如果可以的话,我将不对你进行任何的策略部署,一个字,快!!!
如何实现呢?
其实原理已经搞明白了,就很简单了,
Switch(config)#access-list 100 permit ip host 10.0.0.1 host 20.0.0.1 //扩展ACL
当然也可以不抓HOST,直接抓取网段也OK嘛~
Switch(config)#vlan access-map wfy 10
Switch(config-access-map)#ma ip add 100
Switch(config-access-map)#action drop
Switch(config-access-map)#exit
Switch(config)#vlan access-map wfy 20
Switch(config-access-map)#action forward
Switch(config-access-map)#exit
Switch(config)#vlan filter wfy vlan 10 //直接针对于VLAN10 进行调用。
验
证
可以看到,10.0.0.1 去ping 20.0.0.1 时是不通的
10.0.0.1 去ping 30.0.0.1 时是通的
整体来看,VLAN acl的部署,还算是简单,(只要理解route-map)那这个真的是SO easy
但看到这里你有没有发现一个问题,就是VLAN的ACL原理简单,但是配置起来相对麻烦
有没有一种更简单的方法,实现单台交换机上不同接口不通信吗?
端口隔离(你值得拥有)
技术背景
在不划分VLAN的情况下,如何实现两台相同网段的终端无法通信,相互隔离呢?
使用端口隔离技术
技术要点
1 被隔离端口之间无法通信
2 被隔离端口与非隔离端口之间可以通信
如图所示,将E0/0,E0/1配置了端口隔离,那么这两个口下联的终端将无法通信,
但是他们都可以和SERVER通信,
从而保证了一部份人员无法互通,但可以和服务器互通的要求
配置如下,(其实很简单,就一条命令)
Switch(config)#inter range e0/0 - 1
Switch(config-if-range)#switchport protected
结束了
是不是挺简单的
就端口隔离这个特性而言,问题又来了,假设如图中所示
有这么几个人成立了一个部门,他们之间肯定是要进行互通的,并且和外界(其它部门)不通,使用端口隔离能否实现呢?
貌似是不可以的,此时这个特性显得苍白无力,
那怎么办呢?
Private vlan,简称PVLAN,你可以考虑上手试试
技术特性
Pvlan中包含两种VLAN
主VLAN
辅助VLAN ,而辅助VLAN中又包含了两种VLAN ,
Community 团体VLAN
Isolated 隔离VLAN
其中,一个主VLAN下可以有多个community ,但只可以有一个isolated
所有的辅助VLAN都可以和主VLAN进行通信,
但是
相同的community之间可以互通
Isolated中所有的主机都想互独立,仅可以和主VLAN互通
同时一个接口只能属于一种VLAN
接口角色
混杂接口 --允许所有的VLAN通过,不管是主的,还是辅助的,主要用于连接三层设备/server
trunk接口 -- 用于交换机之间相连
配置思路
0 这一步至关重要,将vtp 改为transport模式(透明)
1 创建主VLAN 以及辅助VLAN
2 主VLAN关联辅助VLAN
3 定义辅助VLAN的类型
4 创建混杂接口
5 混杂接口的主辅VLAN关联
6 划分接口到辅助VLAN
如图所示
Pc5,6,8同属于community vlan 20
Pc7,9,10同属于isolated vlan30
R1做为GW,R2做为server,同属于主vlan
如何操作呢?
本实例主要讲解pvlan的配置,其它部分不再赘述
R1 192.168.1.1
R2 192.168.1.2
下面的PC按照自己的编号设置IP地址,并指向GW 为192.168.1.1
SW1配置
Switch(config)#vtp mode transparent //vtp模式为透明
Switch(config)#vlan 10
Switch(config-vlan)#private-vlan primary //vlan10为主vlan,primary
Switch(config-vlan)#private-vlan association 20,30 //主VLAN下的辅助VLAN都是谁?写一下
Switch(config)#vlan 20
Switch(config-vlan)#private-vlan community //定义VLAN20的辅助VLAN类型
Switch(config-vlan)#vlan 30
Switch(config-vlan)#private-vlan isolated //定义VLAN30的辅助VLAN类型
Switch(config)#inter range e0/0 - 1
Switch(config-if-range)#switchport mode private-vlan promiscuous //定义混杂接口
Switch(config-if-range)#switchport private-vlan mapping 10 20,30 //定义主和辅助的关系,通过主去找到辅助VLAN
Switch(config-if-range)#inter range e0/3 , e1/0
Switch(config-if-range)#switchport mode private-vlan host //设置接口为主机接口
Switch(config-if-range)#switchport private-vlan host-association 10 20 //主VLAN是10,把这个接口划分到主机接口的VLAN20 中
Switch(config-if-range)#inter e1/1
Switch(config-if)#sw m pri hos
Switch(config-if)#sw pri hos 10 30
第一台交换机就算是配置完成了
我们先来验证一下
1) pc5-pc6属于同一个community ,肯定是可以互通的
Pc5-pc6不管你是属于哪种VLAN ,肯定是能和混杂接口下的主机进行互通的
那么他和isolated中的PC7可以互通吗?
根本就无法联系到
左侧交换机完成,
下面来进行右侧交换机配置,
需要注意有两点
1 两台交换机相连接口要使用trunk
2 只需要配置一个混杂接口即可,也就意味着第二台交换机不需要再配置混杂接口了
Switch(config-if)#inter e0/2
Switch(config-if)#sw tr en dot
Switch(config-if)#sw m t
SW2(config)#inter e0/0
SW2(config-if)#sw tr en dot
SW2(config-if)#sw m t
SW2(config)#vtp mode transparent
SW2(config)#vlan 10
SW2(config-vlan)#private-vlan primary
SW2(config-vlan)#private-vlan association 20,30
SW2(config-vlan)#vlan 20
SW2(config-vlan)#private-vlan community
SW2(config-vlan)#vlan 30
SW2(config-vlan)#private-vlan isolated
SW2(config-vlan)#inter e0/1
SW2(config-if)#switchport mode pri hos
SW2(config-if)#sw pri hos 10 20
SW2(config-if)#inter range e0/2 - 3
SW2(config-if-range)#sw mode pri host
SW2(config-if-range)#sw pri hos 10 30
这就是pvlan,也不难,就是相对而言明词较多而已
总结一下,怎么说呢,这三种办法在使用过程中要灵活,不能认死理儿,
遇到一个问题,至少你有三种办法可以解决。这才是学技术,别死背,要理解,
要融会贯通.....
------------------------------------
CCIE成长之路 --- 梅利