Cisco Distribute-List

route filter的理由
1隱某網路
2控制network overhead(網路的負擔)
3簡單的安全性 

以distribute-list過濾路徑
(config)# router < protocol-router>
(config-router)#distribute-list < filte-method> < out |in> [ protocol-option] [interface]

< out|in>說明如下

out:過濾公告route,
表示路由訊息離開本設備時進行比對 
ps:路由訊息會先進入該設備之路由表,才可進行route公告 

ex
該10.1.1.2/24 route進入本設備後,若要將此route公告到其他設備時
將其route過濾
(config)# access-list 10 deny 10.1.1.0 0.0.0.255
(config)# access-list 10 permit any
(config)# router eigrp 1
(config-router)#distribute-list 10 out
ex
該10.1.1.2/24 route進入本設備後,若要將此route公告到其他設備時,且是公告到serial0
則將其route過濾
(config)# router eigrp 1
(config-router)#distribute-list 10 out serial 0

ex
該10.1.1.2/24 route進入本設備後,若要將此route公告到其他設備時,且是從ospf2學到的route
則將其route過濾
(config)# router eigrp 1
(config-router)#distribute-list 10 out ospf 2

ex:
該10.1.1.2/24 route進入本設備後,若要將此route公告到其他設備時,且是從eigrp1學到的route
則將其route過濾 ,另外將acl改為prefix-list
(config)#ip prefix-list p_2 seq 1 deny 10.1.1.0/24
(config)#ip prefix-list p_2 seq 2 permit 0.0.0.0/0 le 32
(config)# router ospf 2
(config-router)#distribute-list p_2 out eigrp 1

in:過濾route學習,
表示路由訊息進入該設備前會先進行比對 

ex:
指定router不要將10.1.1.0/24加入路由表
(config)#ip prefix-list fpolicy seq 5 deny 10.1.1.0/24
(config)#ip prefix-list fpolicy seq 10 permit 0.0.0.0/0 le 32
(config)#router ospf 1
(config-router)#distribute-list prefix fpolicy in ex:
從serial0學到的route 10.1.1.0/24會被過濾,因此設設備無法學到此route 
(config)#ip prefix-list p_2 seq 1 deny 10.1.1.0/24 
(config)#ip prefix-list p_2 seq 2 permit 0.0.0.0/0 le 32 
(config)# router ospf 2
(config-router)#distribute-list p_2 in serial0 

….. 

< filter-method>主要有以下三種方式,說明如下

1以acl過濾
(config-router)#distribute-list < acl id> out [int]
int:指定只對單一介面有效
ex:
不要公告10.1.1.0/24的路徑
(config)# access-list 10 deny 10.1.1.0 0.0.0.255
(config)# access-list 10 permit any
(config)# router eigrp 1
(config-router)#distribute-list 10 out

2以ip prefix-list過濾
(config-router)#distribute-list prefix < list-name> out
(config)#ip prefix-list < list-name> [seq < id>] < deny|permit> < net/p-length> [ge < 0-32>] [le < 0-32>]
不指定le和ge:表示實際的prefix-length等於指令所下的p-length
指定le:表示實際prefix-length需小於le的值
指定ge:表示實際prefix-length需大於ge的值
le與ge同時:表示實際prefix-length需大於ge的值並小於le的值,且ge值需大於p-length
ex:permit 10.0.0.0/24 ge 16 le 28 是invaild
ps:
0.0.0.0/0 le 32 表示任何路徑
0.0.0.0/0 表示預設路徑
ex:
以ip prefix-list過濾
(config-router)#distribute-list prefix fpolicy1 out
(config)#ip prefix-list fpolicy1 seq 1 deny 10.1.1.0/24 //prefix-length=24
(config)#ip prefix-list fpolicy1 seq 2 deny 10.1.2.0/24 le 25 //prefix-length為24-25
(config)#ip prefix-list fpolicy1 seq 3 deny 10.1.3.0/24 ge 23 //prefix-length為23-24
(config)#ip prefix-list fpolicy1 seq 4 deny 10.1.4.0/24 ge 25 le 26 //prefix-length為25-26
(config)#ip prefix-list fpolicy1 seq 5 permit 0.0.0.0/0 le 32

3以route-map過濾
(config-router)#distribute-list route-map < map-name> out
定義要過濾的路徑
(config)#route-map < map-name> deny < m-id>
(config-route-map)#match ip address < prefix-list < list-name>| acl >
(config-route-map)#exit
其他路徑都不過濾
(config)#route-map < map-name> permit < m-id>

ex:
以route-map過濾
(config-router)#distribute-list route-map fmap out
定義要過濾的路徑
(config)#ip prefix-list fpolicy seq 1 permit 10.1.1.0/24
(config)#ip prefix-list fpolicy seq 2 permit 10.1.2.0/24
(config)#route-map fmap deny 1
(config-route-map)#match ip address prefix-list fpolicy
(config-route-map)#exit
其他路徑都不過濾
(config)#route-map fmap permit 2