1 前置知识
- Wildcard Bits:反掩码,用于表示前缀的范围
- Subnet Mask:子网掩码,用于区分网络位和主机位
2 ACL
2.1 基础
Access-Control-List,访问控制列表,多用于数据的过滤和控制;以及部分路由条目的匹配;
2.2 注意点
1、
对于匹配路由条目的情况尽量不使用反掩码,否则会加大匹配的范围,比如
Access-list 1 permit 1.1.1.0 0.0.0.255表示匹配前缀为1.1.1.0-1.1.1.255的条目
Access-list 1 permit 1.1.1.0 表示仅匹配前缀为1.1.1.0的条目
2、
标准ACL无法表示前缀的掩码(后面反掩码只是表示匹配前缀的范围),
可以用扩展ACL来实现表示前缀的掩码的作用
Access-list 100 permit ip 192.168.1.0 0.0.0.255 255.255.255.0 0.0.0.0
表示为允许192.168.1.0/24 - 192.168.1.255/24的地址由于写法过于复杂
所以可以使用prefix-list来实现这个功能
2.2 写法
- 标准ACL
写法
R1(config)#access-list 1-99 permit/deny SourceIP WildcardBit
例子
R1(config)#access-list 1 permit 1.1.1.1 0.0.0.0
//允许来自1.1.1.1的流量通过
R1(config)#access-list 1 permit 2.2.2.2 0.0.0.0
R1(config)#access-list 1 deny 3.3.3.0 0.0.0.255
//拒绝来自3.3.3.0网段的流量通过查看
R1#show access-lists
注意点
a、标准ACL在向同一列表内添加匹配条目时,按照输入匹配条目的顺序逐个加10排列
b、逐条匹配,行之间的匹配条目是“或”的关系
c、删除ACL中的其中一个匹配条目会导致整合ACL列表被删除
d、默认最后一条拒绝所有,需要在之前加access-list 1 permit any
- 扩展ACL
- 写法
R1(config)#access-list 100-199 permit/deny protocol sourceIP WildcardBits destIP WildcardBits
- 例子
R1(config)#access-list 100 permit tcp 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255 eq telnet
//允许来自1.1.1.0网段去访问2.2.2.0网段的telnet流量通过
R1(config)#access-list 100 deny tcp 1.1.1.0 0.0.0.255 eq 23 any
//拒绝来自1.1.1.0网段的telnet流量去访问所有的网段- 查看
- 注意点
a、扩展ACL在向同一列表内添加匹配条目时,按照输入匹配条目的顺序逐个加10排列
b、逐条匹配,行之间的匹配条目是“或”的关系
c、删除ACL中的其中一个匹配条目会导致整合ACL列表被删除
d、默认最后一条拒绝所有,需要在之前加access-list 100 permit ip any any
- 命名ACL
- 写法
R1(config)#ip access-list standard/extended 1-99/100-199/WORD
R1(config-std-nacl)#n(匹配条目前面序号) permit 内容根据选择前缀类型而定
- 例子
R1(config)#ip access-list extended sb
R1(config-ext-nacl)#1 permit ip 1.1.1.1 0.0.0.0 2.2.2.2 0.0.0.0
R1(config-ext-nacl)#7 deny tcp 1.1.1.0 0.0.0.255 any eq 23
- 查看
- 注意点
a、扩展列表命名时如果使用的是已有的列表名,则可以作为插入匹配条目的工具使用
b、其他同ACL
3 Prefix List
2.1 基础
前缀列表在ACL的基础上加强了对于掩码的控制能力,能够更加有效的抓取路由条目;只能作为路由的匹配工具不能用于流量控制;
2.2 写法
写法
R1(config)#ip prefix-list xx permit\deny x.x.x.x/x (可选ge x le x)
例子
ip prefix-list 1 permit 192.168.4.0/24
表示前缀的前24位不变且掩码为24的条目
ip prefix-list 1 permit 192.168.4.0/22 le 24
表示前缀的前22位不变且掩码为22-24的条目
ip prefix-list 1 permit 192.168.4.0/22 ge 24 le 24
表示前置的22位不变且掩码为24的条目注意点
a、最后需要允许所有流量ip prefix-list 1 permit 0.0.0.0/0 le 32
4 Community List
2.1 基础
用于BGP中增加修改Community属性
2.2 写法
- 写法
R1(config)#ip community-list 后面同命名ACL
- 注意点
a、
这个表可以permit x y z,表示“和”的关系
b、
permit x
permit y 表示“或”的关系
5 Route-map
2.1 基础
路由图是具有强大的策略属性的一款工具,可以修改大量的属性;
常用有以下
- Match类
match ip address匹配访问列表或前缀列表
match community 匹配BGP共同体
match tag根据路由的标记进行匹配
- Set类
set metric设置路由协议的度量值
set metric-type设置目标路由协议的度量值类型
set default interface指定如何发送这样的分组
set interface指定如何发送这样的分组
set ip default next-hop指定转发的下一跳
set ip next-hop指定转发的下一跳
2.2 写法
- 写法
R1(config)#route-map WORD permit/deny n(插入匹配设置列表序号,不写默认+10)
- 例子
R1(config)#route-map sb permit
R1(config-route-map)#match ip add 1
R1(config-route-map)#set weight 55
R1(config)#route-map sb permit 20
- 查看
- 注意点
a、
match x y z——表示只需要满足其中一个即可执行下一条,表示“或”的关系
b、
match x
match y
match z
——表示逐个匹配,三个都要满足,表示“和”的关系
c、
match x y z
match w
set t
——这种情况就表示要满足x/y/z 加上 w 才可以 执行set t;如果上面有一个不符合条件就不会执行下面的语句;
2.3 适用场景
// 防止学习自RIP且转换为OSPF的路由前缀再次注入到OSPF(即路由反馈)
access-list 1 permit 192.168.1.00.0.0.255
.
route-map OSPF_into_RIP deny 10
match ip address 1
route-map OSPF_into_RIP permit 20
.
router rip
redistribute ospf 10 route-map OSPF_into_RIP
router ospf 10
redistribute rip subnets
6、passive-interface
6.1 基础
使用该命令可以实现对于部分接口的协议报文发送的中断从而避免了非动态路由协议的邻居接收到这个没有意义的报文
6.2 写法
将某个接口配置为被动接口
Router(config-router)# passive-interface int-type int-num
将所有接口配置为被动接口,并且手动激活特定接口
Router(config-router)# passive-interface default
Router(config-router)# no passive-interface int-type int-num
例子
7、修改AD值
注意:以下修改方法仅在本地有效在传递过程给邻居的前置中不会修改AD值
7.1 基础
AD值即(Administer Distance),用于比较相同前缀但是不同的路由协议的条目,AD小的会进入RIB表,大的会暂时潜水;
7.2 写法
- 修改OSPF的Distance值
Router(config)# router ospf 1
Router(config-router)# distance AD ip-src(邻居的RID) wildmask(若为0.0.0.0表示指定该邻居) acls //对于匹配相应邻居发来的acl内的条目修改AD值
Router(config-router)# distance ospf external ad1 inter-area ad2 intra-area ad3//修改五类三类和一二类的AD值- 修改Eigrp的Distance值
Router(config)# router eigrp 100
Router(config-router)# distance AD ip-src wildmask acls/对于匹配相应邻居发来的acl内的条目修改AD值
Router(config-router)# distance eigrp internal-distance external-distance//修改内部和外部路由的AD值
7.3 作用
- 实现浮动路由
对于以上拓扑要实现R2基于目的IP的分流
,即去往1.1.1.1从R1走,去往11.11.11.0从R2走,且链路出现故障时能自动切换
;有以下几个方案:
- 方案一
描述:在R2上直接配置静态路由并且设置其AD值来实现浮动路由的效果;
实施:
R2(config)#ip route 1.1.1.0 0.0.0.255 10.1.12.1
R2(config)#ip route 11.11.11.0 0.0.0.255 10.1.12.1 2
R2(config)#ip route 1.1.1.0 0.0.0.255 10.1.23.3 2
R2(config)#ip route 11.11.11.0 0.0.0.255 10.23.3.3
缺陷:
虽然能够满足分流的需求,但是如果是R1或者R2的上连链路出现故障这种情况就无法自动切换链路了;
- 方案二
描述:在R1R2R3都有如图的动态路由域之后,由R1和R3来宣告静态路由给R2并且由R2更改其中的AD值来做浮动路由的操作,这样也可以感知上连静态的情况
实施:
access-list 1 per 11.11.11.0
router eigrp 100
distance 130 10.1.12.1 0.0.0.0 1
- 防止次优路径和路由反馈等问题
描述:可以通过修改R4处的对应条目AD值来做到防止路由回馈的操作,多点双向重分发的情况下一个点修改AD值另一边也要修改不然双向重分发可能会有问题