4월 13일 (BGP 경로 선택 조건, Standard 및 Extended ACL)
1. BGP에서 최적 경로를 선택하는 조건은 무엇입니까?
>> BGP에서 최적경로를 선택하는 조건은 attribute (6가지)
>> BGP는 특정경로를 Neighbor에게 update할때 다양한 attribute값을 포함 하여 update 합니다.
(next-hop문제 해결, split-horizon 해결)
1.Weight
2.Local Preference
3.Next-hop (0.0.0.0)
4.AS-PATH
1 Weight -- 아무런 의미 없는 값 (자신이 광고한 경로에 대해, 32768을 붙임)
-- IBGP, EBGP Neighbor에게 광고하는 경우, 값은 생략
-- 높은값을 우선시함
-- outbound traffic 조정 (inbound configuration)
2 Local Preference
-- 아무런 의미 없는 값 (IBGP neighbor에게 주는 경우 100이 붙음)
(EBGP로 주는 경우, 없음)
-- 기준값 100을 기준으로 높은값을 우선시함 "0"
-- outbound traffic 조정 (inbound configuration)
3 Next-hop -- 경로로 가기위한 Next-hop정보를 알려주는 인자
-- 0.0.0.0 표기된 경로를 우선시 함 (자신이 광고한 경로를 우선시함)
(경로 선택에는 영향이 없음) ---> Weight값이 있음 !!!
(도달가능성 확인 !!! ---> next-hop-self 사용)
4 AS Path -- 경로가 지나온 AS의 List입니다.
-- As-path가 짧은 경로를 우선시 합니다.
-- EBGP에서 routing loop를 방지하는 용도로도 사용
-- As-path는 AS를 벗어나는 경우에만 붙임 (IBGP간에는 붙지 않음)
-- inbound traffic 조정 (outbound configuration)
5 Origin Code
-> 경로가 BGP로 유입된 방식으로 알려주는 인자
-> i (network command) -> ? (재분배)
** 재분배 -> router bgp x -> redistribute ospf 1 route-map TEST
-> IBGP, EBGP로 모두 전파
-> set origin code ?
-> Inbound traffic을 조정하는 용도로 사용
* AS Path가 우선시 되기 때문에 인터넷 환경에서는 의미x, 두 개의 AS간에만 사용가능
6 MED
-> 아무런 의미가 없는 값
-> Default로 0 값으로 전파함
-> 낮은 값을 우선시
-> IBGP, EBGP에게 모두 전파 (AS 넘어가는 경우에 MED 값은 없어짐)
* AS1 - AS2 - AS3 이 있을 경우 AS1이 붙인 MED값은 AS2에 전파되지만 AS3으로는 전파되지 않음
-> set metric ?
7 EBGP / IBGP
-> EBGP로부터 받은 경로를 IBGP로 부터 받은 경로보다 우선시 함
************** bgp에 들어간 후 maximum path 2 -> 여기까지만 비교한다고 선언 ***************
-> IBGP로부터 받은 경로밖에 없을 경우, Next-hop으로 가기위한 OSPF의 Metric을 본다
-> 그래도 같다면 Router ID가 낮은쪽 경로를 우선
즉 BGP는 LoadBalancing을 하지 않기에 위 조건들을 확인하는 것이다
경로선택 실습 (EBGP/IBGP 경로선택)
-> EBGP, IBGP 연결하고 BGP network는 R2의 Lo0만 광고
-> R1쪽에 대한 경로로 잡힌 것을 볼 수 있다. EBGP로 받은 경로가 우선시 되기 때문
문제 1.
AS 4번의 경우 AS1로 가는 경로는 AS4의 주라인이다 (500Mbps)
AS3으로 가는 경로는 AS4의 보조라인이다 (50Mbps)
R4,5에 show ip route로 보면, 2.2.2.2로 가기위한 경로를 AS1로 선택하도록 조정하라 (즉 AS4에서 다른 AS로 가는 모든 경로는 AS1을 통해서 통신이 되어야 한다)
Link Preference 이용
R4
router bgp 4
neighbor 10.1.14.1 route-map TEST in
route-map TEST permit 10
match ip address 10
set local-preference 600
문제 2.
AS4 (10.1.45.0/24)로 들어오는 경로를 AS1으로 들어오도록 설정해라
1. 우선 R4 또는 R5에서 10.1.45.0/24를 광고해라
Router(config)#router bgp 4
Router(config-router)#network 10.1.45.0 mask 255.255.255.0
2. R5에서 AS-path를 설정
R5
Router(config)#router bgp 4
Router(config-router)#neighbor 10.1.35.3 route-map AS out
Router(config-router)#exit
Router(config)#access-list 33 permit 10.1.45.0 0.0.0.255
Router(config)#route-map permit 10
Router(config-route-map)#match ip address 33
Router(config-route-map)#set as-path prepend 4 4 4
문제 3.
R3에서 3.3.3.3/32를 BGP로 광고한다
R3에서 2.2.2.2로 가는 경로는 AS4를 통해서 통신하도록 설정 (R2에서 설정한다)
R1에서 3.3.3.3로 가는 경로는 AS4를 통해서 통신하도록 설정 (R3에서 설정한다)
R2
Router(config)#router bgp 2
Router(config-router)#neighbor 10.1.23.3 route-map fromAS3 out #R2 기준에서 10.1.23.3 으로 '보낼 때'
Router(config)#access-list 11 permit 2.2.2.2 0.0.0.0
Router(config)#route-map fromAS3 permit 10
Router(config-route-map)#match ip address 11
Router(config-route-map)#set as-path prepend 2 2 2
R3
Router(config)#router bgp 3
Router(config-router)#neighbor 10.1.23.2 route-map fromAS1 out
Router(config-router)#exit
Router(config)#access-list 11 permit 3.3.3.3 0.0.0.0
Router(config)#route-map fromAS1 permit 10
Router(config-route-map)#match ip address 11
Router(config-route-map)#set as-path prepend 3 3
경로선택 실습 2
R1
router bgp 1
bgp log-neighbor-changes
network 1.1.1.0 mask 255.255.255.0
neighbor 10.1.12.2 remote-as 2
neighbor 10.1.14.4 remote-as 2
R2
router bgp 2
bgp log-neighbor-changes
neighbor 10.1.12.1 remote-as 1
neighbor 10.1.23.3 remote-as 2
neighbor 10.1.23.3 next-hop-self
R3
router bgp 2
bgp log-neighbor-changes
network 3.3.3.0 mask 255.255.255.0
neighbor 10.1.23.2 remote-as 2
neighbor 10.1.23.2 route-reflector-client
neighbor 10.1.34.4 remote-as 2
neighbor 10.1.34.4 route-reflector-client
R4
router bgp 2
bgp log-neighbor-changes
neighbor 10.1.14.1 remote-as 1
neighbor 10.1.34.3 remote-as 2
neighbor 10.1.34.3 next-hop-self
R1에서의 확인
-> 3.3.3.0에 대해서 bgp 경로선택 조건에 의해 먼저받은 경로가 > 로 선택되었다
-> clear ip bgp 10.1.12.2 실행 시 10.1.14.4 경로가 > 로 선택된다.
-> 최종적으로 routing table에 올라가는 경로는 선택된 경로다.
R3에서의 확인
-> 1.1.1.0에 대해서 bgp 경로선택 조건에 의해 router ID에 의해 >로 선택되었다
-> router ID는 루프백 주소를 넣지 않으면 포트주소로 인식
-> router ID는 낮은 쪽 경로 우선
-> 최종적으로 routing table에 올라가는 경로는 선택된 경로다
Access-List
-> Traffic을 Classification하는 구문
-> NAT, Route-map 등등 || traffic 제어하는 용도
1. NAT에서의 사용
ex) access-list 1 permit 10.1.1.0 0.0.0.255
ip nat inside source list 1 interface s1/0 overload
2. route-map에서의 사용
ex) access-list 2 permit 10.1.1.0 0.0.0.255
route-map TEST permit 10
match ip add 2
set local-preference 200
3. 인터페이스에 적용 (방화벽에서 주로 사용)
ex) access-list 3 permit 10.1.1.0 0.0.0.255
int e0/0
ip access-group 3 in
** source ip에 대해서 막는 개념이다
그 후 R2에서 다음과 같이 ACL을 설정한다
Router(config)#access-list 1 deny 1.1.1.1
Router(config)#int e0/0
Router(config-if)#ip access-group 1 in
ACL 때문에 R1의 e0/0으로도 통신이 막힌다.
** int e0/1에서 ip access-group 1 out 으로 해도 동일한 ACL 효과를 받음
Standard ACL
access-list (1-99) permit/deny (source 네트워크주소) (와일드카드마스크)
access-list (1-99) deny host (ip주소) -> host ip 하나를 거부하겠다
access-list (1-99) deny any -> 모든 주소를 거부하겠다
Extended ACL
access-list (100-199) permit/deny (*protocol) (source네트워크주소) (와일드카드마스크) (dst네트워크주소) (dst와일드카드) eq (Application 포트번호)
*Protocol : TCP, UDP, OSPF, ICMP..
Application : 80(http), 443(https), 23(telnet) ...
-> R3에서 R1으로 Telnet Traffic만 차단한다
R2
Router(config)#int e0/1
Router(config-if)#no ip access-group 1 out
Router(config-if)#exit
Router(config)#access-list 100 deny tcp host 1.1.1.1 host 3.3.3.3 eq 23
Router(config)#access-list 100 permit ip any any
Router(config)#int e0/0
Router(config-if)#ip access-group 100 in
-> 1.1.1.1에서 출발하는 23번 telnet의 접근을 R2의 e0/0 인터페이스에 ACL로 막는다.