Posts

Showing posts from August 3, 2008

Remote Triggered Black Hole(RTBH) Configuration Sample

基本設定步驟如下: (1)每個Router上設置一筆static route指向null0,通常會使用192.0.2.0/24這個unused IP Range。 (2)"Tigger" Router上設置redistribution,通常是透過static route,同時設置不同的參數,包括設定192.0.2.0/24範圍的IP Address當成是next-hop。 (3)當Remote Router學習到網路資訊時,它們會在routing table中針對被攻擊的網段或是主機IP位址設置一筆路由,next-hop為192.0.2.0/24這個範圍的IP Address。 R1(config)#ip route 192.0.2.2 255.255.255.255 null0 R2(config)#ip route 192.0.2.2 255.255.255.255 null0 R2(config)#route-map BLACKHOLE R2(config-route-map)#match tag 911 R2(config-route-map)#set community no-export R2(config-route-map)#set ip next-hop 192.0.2.2 R2(config-route-map)#set origin igp R2(config)#router bgp 100 R2(config-router)#address-familiy ipv4 unicast R2(config-router-af)#redistribute static route-map BLACKHOLE R2(config)#ip route 203.203.203.203 255.255.255.255 192.0.2.2 tag 911 !假設203.203.203.203是攻擊受害者,我們在R2上利用BGP宣告設置black hole !利用static route設置受害者所使用的IP Address來Trigger RTBH,宣告給所有BGP Border Speaker R1(config)#int null0 R1(config-if)#no ip unreachable R2(config)#int null

Multicast RP Redundancy

在Multicast中,如果使用Sparse Mode必須手動/自動選擇Rendevous Point(RP)。所以如果只有一個RP,很容易因為RP fail而改用Dense Mode。 我們可以使用MSDP(Multicast Source Discovery Protocol) for Anycast RP功能來達到Redundancy和Load-Sharing。首先我們必須在R1,R2上建立相同的Loopback Interface IP Address並且透過OSPF宣告出去。同時設定所有的Router使用Static RP指向這個Loopback Interface IP Address。很重要的一點是記得要在Loopback Interface上啟動ip pim sparse。 R1(config)#int loopback 100 R1(config-if)#ip address 100.100.100.100 255.255.255.255 R1(config-if)#ip pim sparse R1(config)#ip pim rp-address 100.100.100.100 R2(config)#int loopback 100 R2(config-if)#ip address 100.100.100.100 255.255.255.255 R2(config-if)#ip pim sparse R2(config)#ip pim rp-address 100.100.100.100 R1(config)#router ospf 1 R1(config)#network 100.100.100.100 0.0.0.0 area 0 R2(config)#router ospf 1 R2(config)#network 100.100.100.100 0.0.0.0 area 0 讓R1,R2之間建立MSDP Peering交換active source information R1(config)#ip msdp peer 2.2.2.2 connect-source loopback 0 R1(config)#ip msdp originator-id loopback0 R2(config)#ip msdp peer 1.1.1.1 c

Frame Relay End-to-End Keepalive

只要學習過Frame Relay的同學都知道,Frame Relay兩端的FRAD(Frame Relay Access Device),只透過Frame Relay PVC(LMI)來跟Frame Relay Switch Keepalive,藉此,Frame Relay Switch可以得知兩端的PVC是否正常連通(Active),但是對於FRAD來說,它們只能透過LMI查詢得知PVC的狀態,而無法直接跟另一端的FRAD保持Keepalive。 因此我在此介紹一個很特別的技巧,那就是End-to-End Keepalive,設定上很簡單,只要利用map-class的設定再加上end-to-end function即可: R1(config)#map-class frame-relay EtoE R1(config-map-class)#frame-relay end-to-end keepalive mode bidirection ! 你可以使用bidirection or request or reply or passive-reply等不同的模式 ! 詳情請參考http://www.cisco.com/en/US/docs/ios/12_0t/12_0t5/feature/guide/FRKeep.html R1(config)#int s0/0/0.1 R1(config-subif)#frame-relay interface-dlci 102 R1(config-fr-dlci)#class EtoE R2(config)#map-class frame-relay EtoE R2(config-map-class)#frame-relay end-to-end keepalive mode bidirection R1(config)#int s0/0/0.1 R1(config-subif)#frame-relay interface-dlci 201 R1(config-fr-dlci)#class EtoE

利用CoPP(Control Plane Policing)阻擋Telnet遠端管理

「山不轉路轉,路不轉心轉」,這句話最適用於CCIE Lab考試上,準備CCIE Lab考試最令人頭痛的莫過於了解同一個問題所有的解法(所謂「只知其一,不知其二」是準備CCIE Lab最忌諱的事情)。 如果今天要求你不能利用Access-Class來防堵遠端Telnet管理時,你會想到那些方法? 最直覺的就是直接在所有interface上設定inbound ACL,不過這樣的方式比較麻煩,所以我今天來介紹如何利用CoPP(Control Plane Policing)來防止這類的連線管理。 所謂的CoPP(Control Plane Policing),主要是針對Cisco設備的Control Plane來進行網路連線封包的資料分析及避免Denial of Service所產生的一種保護機制。CoPP特色允許使用者設定QoS filter用來管理Control Plane封包的資料流用以保護Cisco IOS routers及switch的control plane,避免偵察行為及DoS攻擊。利用這種方式,不論在router或是switch有攻擊或是大量資料d的負載,control plane仍可以協助助維護封包轉送及協定狀態。 假設網路架構如下: R1-R2-R3 我們要在R2上設定CoPP,只允許R1,R3的Loopback IP進行telnet遠端管理,禁止其他來源IP telnet至R2: R2(config)#access-list 100 deny tcp host 1.1.1.1 any eq telnet R2(config)#access-list 100 deny tcp host 3.3.3.3 any eq telnet R2(config)#access-list 100 permit ip any any eq telnet R2(config)#class-map TELNET R2(config-cmap)#match access-group 100 R2(config)#policy-map CoPP R2(config-pmap)#class TELNET R2(config-pmap-c)#drop R2(config)#control-plane R2(config-cp)#service-policy input CoPP

Multilink Frame-Relay

各位可能用過Multilink PPP,不過可能沒有用過Multilink Frame-Relay,不過只要是R/S CCIE Candidates一定會聽過,因為這個topic近年來可以說是重點項目。 假設現在有兩個Router R1和R2,分別利用兩個Serial Interface對連,以下就是Multilink Frame-Relay的Sample Configuration: R1(config)#frame-relay switching R1(config)int mfr 1 R1(config-if)#frame intf-type dce R1(config)#int mfr 1.1 point-to-point R1(config-subif)#ip address 10.1.1.1 255.255.255.252 R1(config-subif)#frame-relay interface-dlci 102 R1(config-fr-dlci)#exit R1(config-subif)#bandwidth 512 R1(config)#int s0/0/0 R1(config-if)#encapsulation frame-relay mfr 1 R1(config)#int s0/0/1 R1(config-if)#encapsulation frame-relay mfr 1 R2(config)#frame-relay switching R2(config)int mfr 1 R2(config)#int mfr 1.1 point-to-point R2(config-subif)#ip address 10.1.1.2 255.255.255.252 R2(config-subif)#frame-relay interface-dlci 102 R2(config)#int s0/0/0 R2(config-if)#encapsulation frame-relay mfr 1 R2(config)#int s0/0/1 R2(config-if)#encapsulation frame-relay mfr 1

CIR=Bc/Tc

當我們談論到CAR(Committed Access Rate)時,請務必要把這個公式記在腦海中,CIR=Bc/Tc,在計算時要注意單位的差異(Bytes/Bits),Cisco IOS無法定義Tc,因此只要定義出CIR,Bc就可以產生Tc的數值。 CIR(Committed Information Rate)(單位: Bits Per Second) Bc(Committed Burst)(單位: Bytes) Tc(Committed Time Interval)(單位: Seconds) 【例】CIR=32Kbps,Tc=1.5 Sec => Bc=(32000/8) * 1.5=6000 (Bytes) 在設定CAR指令時就可以這樣設定 R1(config)#int s0/0/0 R1(config-if)#rate-limit output 32000 6000 12000 conform-action transmit exceeding-action drop 其中32000 bps是CIR,6000 bytes是Bc,12000 bytes是Be(Excess Burst)

L2PTv3 transport CDP, VTP, STP

Layer 2 Tunneling Protocol(L2TP)可以傳送CDP, VTP, STP跨越SP Backbone,這是Dot1q Tunneling(請參考 Q-in-Q(Dot1Q Tunnel) Sample Configuration )的額外附加功能,預設並未啟用,啟用的指令如下: SW1(config)#int f0/1 SW1(config-if)#l2protocol-tunnel cdp SW1(config-if)#l2protocol-tunnel stp SW1(config-if)#l2protocol-tunnel vtp SW2(config)#int f0/1 SW2(config-if)#l2protocol-tunnel cdp SW2(config-if)#l2protocol-tunnel stp SW2(config-if)#l2protocol-tunnel vtp

Ethernet over Layer 2 Tunneling Protocol(L2TPv3)

假設網路架構如下,R1,R3並非屬於同一個Ethernet Segment/VLAN: R1 - SW1 - R2 - SW2 - R3 R1(config)#pseudowire-class PW R1(config-pw-class)#encapsulation l2tpv3 R1(config-pw-class)#ip local interface loopback 0 R1(config)#interface f0/0 R1(config-if)#xconnect 3.3.3.3 103 pw-class PW R3(config)#pseudowire-class PW R3(config-pw-class)#encapsulation l2tpv3 R3(config-pw-class)#ip local interface loopback 0 R3(config)#interface f0/0 R3(config-if)#xconnect 1.1.1.1 103 pw-class PW

Q-in-Q(Dot1Q Tunnel) Sample Configuration

透過IEEE 802.1q in IEEE 802.1q(Q-in-Q)的方式,我們可以讓VLAN的數量增加超過4096(4096*4096),也可以讓客戶自行設定Trunk穿過Service Provider所提供的Ethernet Solution(如:FTTx)。 假設現在的網路架構為: SW1 F0/1 <- SP VLAN 10 -> SW2 F0/1 兩端的設備都是連接到VLAN 10,因此在兩端的Switch啟用Dot1q Tunnel建立Trunk SW1(config)#vlan dot1q tag native !預設,Native VLAN不會加上tag,如果在Q-in-Q中要針對native vlan加tag,必須使用上述指令 SW1(config)#int f0/1 SW1(config-if)#switchport mode dot1q-tunnel SW1(config-if)#switchport access vlan 10 SW1(config)#system mtu 1508 !一般Switch預設system mtu 1500,為了支援多層tag,必須加大MTU,設定完成必須reload switch SW2(config)#vlan dot1q tag native !預設,Native VLAN不會加上tag,如果在Q-in-Q中要針對native vlan加tag,必須使用上述指令 SW2(config)#int f0/1 SW2(config-if)#switchport mode dot1q-tunnel SW2(config-if)#switchport access vlan 10 SW2(config)#system mtu 1508 !一般Switch預設system mtu 1500,為了支援多層tag,必須加大MTU,設定完成必須reload switch

Frame Relay DLCI-to-DLCI Switching(L2TPv3)

這是L2 VPN的其中一種型式,在非Frame-Relay Switch(FRAD)上設定DLCI-to-DLCI的轉接達成Frame-Relay Switch模擬的功能,假設網路架構如下: R1 <-> FR Network <-> R2 <- OSPF -> R3 <-> FR Network <-> R4 透過R2,R3兩個路由器的轉接讓R1 to R4有一個虛擬的L2通道(DLCI-to-DLCI) (1)首先先在R2,R3上設定pseudowire class,利用R2,R3各自的loopback interface當根據 R2(config)#pseudowire-class PW R2(config-pw-class)#encapsulation l2tpv3 R2(config-pw-class)#ip local interface loopback 0 R3(config)#pseudowire-class PW R3(config-pw-class)#encapsulation l2tpv3 R3(config-pw-class)#ip local interface loopback 0 (2)將R1 to R2, R3 to R4特定DLCI設定為switched類型,藉此將R2,R3模擬成Frame-Relay Switch R2(config)#int s0/0/0 R2(config-if)#frame-relay interface-dlci 201 switched R3(config)#int s0/0/0 R3(config-if)#frame-relay interface-dlci 304 switched (3)建立一個虛擬連線 R2(config)#connect R1toR4 s0/0/0 201 l2transport R2(config-fr-pw-switching)#xconnect 3.3.3.3 203 pw-class PW R3(config)#connect R1toR4 s0/0/0 304 l2transport R3(config-fr-pw-switching)#xconnect 2.2.2.2 203 pw-class PW

VRRP Special Configuration Note

雖然HSRP是Cisco專屬指令,不過大部份的人可能還是比較熟悉HSRP,相較於VRRP,個人覺得HSRP指令比較直覺,VRRP就有點繞舌的感覺了。 首先最麻煩的是認證,VRRP要設定認證,必須先建立key chain(HSRP直接在指令後就可以使用password,只支援純文字是其缺點): R1(config)#key chain TEST R1(config-keychain)#key 1 R1(config-keychain-key)#key-string PASS R1(config)#int f0/0 R1(config-if)#vrrp 10 authentication md5 key-chain TEST R2(config)#key chain TEST R2(config-keychain)#key 1 R2(config-keychain-key)#key-string PASS R2(config)#int f0/0 R2(config-if)#vrrp 1 authentication md5 key-chain TEST 另外一個比較特別的則是VRRP的Monitoring(Track),必須先在Global Configuration中設定Track profile才能apply至interface上,跟HSRP直接在該特定interface下直接設定不同: R1(config)#track 100 interace f0/0 line-protocol R1(config)#int f0/0 R1(config-if)#vrrp 1 track 100 decrement 100