지난 포스팅에서 진행한 BGP의 Template 이론편에 이어 실습편을 진행해볼까 합니다.
길게 끌지않고 바로 시작하겠습니다.
언제나 시작은 구성도부터 시작하겠습니다.
1. 구성도
우선 Session-template은 'ISP' 라우터에서 진행할 예정이고, Policy-template은 'Router1'에서 진행하고자 합니다.
Policy-template의 경우에는 정말 세밀한 Control이 가능하지만, 이번 LAB에서는 디테일하게 적용하는 대신,
Sequence가 어떻게 작동하는지에 대한 내용을 중점적으로 보겠습니다.
(사실 Policy는 기 구성된 Policy를 이것저것 끼워넣어서 조립하면 되는 식이라, 보시면 감이 잡히실 겁니다)
2. Base Configuration
ISP | Router1 | Router2 | Router3 |
no ip domain lookup | no ip domain lookup | no ip domain lookup | no ip domain lookup |
line con 0 | line con 0 | line con 0 | line con 0 |
privili level 15 | privili level 15 | privili level 15 | privili level 15 |
hostname ISP | hostname Router1 | hostname Router2 | hostname Router3 |
int e0/0 | int e0/0 | int e0/0 | int e0/0 |
no switchport | no switchport | no switchport | no switchport |
ip address 192.168.100.1 255.255.255.252 | ip address 192.168.100.2 255.255.255.252 | ip address 10.10.12.2 255.255.255.252 | ip address 10.10.13.2 255.255.255.252 |
ip ospf 1 area 0 | ip ospf 1 area 0 | ||
int e0/1 | int e0/1 | int e0/1 | |
no switchport | no switchport | no switchport | |
ip address 10.10.12.1 255.255.255.252 | ip address 10.10.23.1 255.255.255.252 | ip address 10.10.23.2 255.255.255.252 | |
ip ospf 1 area 0 | ip ospf 1 area 0 | ip ospf 1 area 0 | |
int lo0 | |||
ip address 1.1.1.1 255.255.255.255 | int e0/2 | ||
no switchport | |||
ip address 10.10.13.1 255.255.255.252 | |||
ip ospf 1 area 0 | |||
router bgp 100 | |||
neighbor 192.168.100.2 remote-as 200 | |||
neighbor 192.168.100.2 timer 5 15 | int lo0 | int lo0 | int lo0 |
neighbor 192.168.100.2 ttl-security hops 1 | ip address 10.10.10.10 255.255.255.255 | ip address 20.20.20.20 255.255.255.255 | ip address 30.30.30.30 255.255.255.255 |
neighbor 192.168.100.2 password test | ip ospf 1 area 0 | ip ospf 1 area 0 | ip ospf 1 area 0 |
neighbor 192.168.100.2 default-originate | |||
network 1.1.1.1 mask 255.255.255.255 | router bgp 200 | router bgp 200 | router bgp 200 |
neighbor 192.168.100.1 remote-as 100 | neighbor 10.10.10.10 remote-as 200 | neighbor 10.10.10.10 remote-as 200 | |
neighbor 192.168.100.1 ttl-security hops 1 | neighbor 30.30.30.30 remote-as 200 | neighbor 20.20.20.20 remote-as 200 | |
neighbor 192.168.100.1 timer 5 15 | neighbor 10.10.10.10 update-source lo0 | neighbor 10.10.10.10 update-source lo0 | |
neighbor 192.168.100.1 password test | neighbor 30.30.30.30 update-source lo0 | neighbor 20.20.20.20 update-source lo0 | |
neighbor 20.20.20.20 remote-as 200 | |||
neighbor 30.30.30.30 remote-as 200 | |||
neighbor 20.20.20.20 update-source lo0 | |||
neighbor 30.30.30.30 update-source lo0 | |||
neighbor 20.20.20.20 next-hop-self | |||
neighbor 30.30.30.30 next-hop-self | |||
대략적인 설명을 하자면 ISP라우터와 Router1간은 eBGP로 연결되어 있으며, Router1/2/3은 iBGP로 연결된 상태입니다.
iBGP구간에서 Loopback interface와 connected link의 대역은 모두 OSPF로 전파되고 있고,
Router1에서는 BGP에 OSPF 1을 Redistribute시켜줬습니다.
ISP 라우터에는 Session-template 실습을 위해 자주 사용하는 command를 설정해두었습니다.
그럼 시작하겠습니다.
3. template 실습
ISP 라우터는 PE이며 보통의 상황에서는 다수의 고객사가 연결될 수 있습니다.
그렇기에 하나의 고객(neighbor)에 많은 추가 설정을 집어넣다보면 아주 가독성이 떨어질겁니다.
제가 생각했을때 Template을 적절하게 사용한다면, template을 제외한 Commad line은 3줄이 되지 않을까 싶습니다.
1. description
2. session-template
3. policy-template
이 중 먼저 Session template을 먼저 진행해보고자 합니다.
지난번에 작성했던 개념도에서 eBGP의 내용을 아래처럼 설정해 보겠습니다.
eBGP 개별 | eBGP 공통 | BGP 공통 |
password test | ebgp-multihop 255 | remote-as 100 |
remote-as 200 | transport connection-mode active | |
ttl-security hops 1 | timer 30 90 | |
timer 5 15 |
'eBGP 개별'은 'eBGP 공통'을 상속받고, 'eBGP 공통'은 'BGP 공통'을 상속받습니다.
우선 현재 상태는 아래와 같이 ISP는 Router1과 정상적으로 BGP가 연결된 상태입니다.
그럼 Policy인 Default-originate만 뺴고 나머지를 위에 정의한대로 ISP 라우터에 Config해보겠습니다.
Config는 아래와 같습니다.
router bgp 100 |
no neighbor 192.168.100.2 |
template peer-session BGP_common |
remote-as 100 |
transport connection-mode active |
timer 30 90 |
template peer-session eBGP_common |
ebgp-multihop 255 |
inherit peer-session BGP_common |
template peer-session eBGP_customer |
password test |
remote-as 200 |
ttl-security hops 1 |
timer 5 15 |
neighbor 192.168.100.2 inherit peer-session eBGP_customer |
neighbor 192.168.100.2 default-originate |
똑같이 BGP section 내 Config를 보고, BGP summary를 한번 보시죠
보시면 전체적인 BGP 내 Config line수는 더 늘었지만, neighbor에 직접 설정하는 Command는 굉장히 줄어든 모습입니다.
사실 Session에서는 이렇게까지 세분화하게 구분지을 필요없이, 공통 -> 개별로 바로 넘어가도 될것같습니다.
*그리고 제가 상속의 개념을 보여드리고자 Timer를 중복적용했습니다만,
Timer값은 상호 협상을 진행하기에 사실 개별 Config template에 속할 필요는 없습니다.
Neighbor 쪽 Command line을 보시면, eBGP_customer 라는 peer-session을 먼저 상속받으면서 시작됩니다.
이 떄, BGP_common template에서 timer를 30 90으로 설정해놨지만, 아래와 같이 5 15로 설정된것을 보실 수 있습니다.
*자세한건 이론편에 기술해놓았으니 부가설명은 안하겠습니다.
전체적으로 본다면 Config line이 오히려 늘어나는 것 아니냐 할 수 있겠지만,
잘 생각해보시면 Base line을 깔아놓고, 고객에 맞춰 ASN만 바꾼다고 생각해보시죠.
10개 혹은 15개의 고객이 신규로 들어와 Provisioning을 한다고 했을때, 표준 + 개별 Config를 매번 Neighbor 에 적어줄것인지,
아니면 개별 config만 정의한 Template을 만들고, 공통 template을 상속받아 적용할 것인지는 선택의 자유지만,
다수의 고객이 붙는 PE라고 가정했을때 저는 후자를 선택하겠습니다.
그리고 Inherit(상속)을 받는 와중에 neighbor에 timer를 적용해봤는데, 바로 바뀐것을보면,
공통만 상속받고 Customize는 그냥 Neighbor 옆에 쓰는것도 나쁘지않아보입니다.
ISP router
router bgp 100
neighbor 192.168.100.2 timer 4 12
다음은 policy template을 진행해보도록 하겠습니다.
다만, 현재 Router1/2/3에 적용된 Config중 Policy에 해당하는 내용은 'next-hop-self' 밖에 없기때문에,
제가 임의로 상황을 가정하겠습니다.
'soft-reconfiguration'이 설정된 Template에서 특정 policy template을 상속받아 weight 200 & next-hop-self 설정이 적용되어야 하는 상황입니다.
그림으로 한번 보시죠.
자 그러면 어떤 Template을 먼저 적용해서 overwrite되어야 할까요?
당연히 weight 10을 먼저 상속받아, next-hop-self를 적용한 상태에서 Weight 200을 상속받아서 200이 적용되게해야합니다.
이를 Sequence를 활용하여 Router1에 적용해보겠습니다.
Weight를 적용하기 전, iBGP로부터 받아오는 prefix의 weight는 아래 보시다시피 Default인 32768입니다.
(Redistribute 선언 default weight)
이제 Router1에서의 config를 적용해보겠습니다.
router bgp 200 |
no neighbor 20.20.20.20 next-hop-self |
no neighbor 30.30.30.30 next-hop-self |
template peer-policy weight10 |
weight 10 |
next-hop-self |
template peer-policy weight200 |
weight 200 |
template peer-policy soft |
soft-reconfiguration inbound |
inherit peer-policy weight10 10 |
inherit peer-policy weight200 100 |
neighbor 20.20.20.20 inherit peer-policy soft |
neighbor 30.30.30.30 inherit peer-policy soft |
제가 위에 사전에 캡쳐한 부분에서는 Redistribute한 prefix가 BGP 테이블로 왔던지라,
Weight를 적용해도 Neighbor에서 받아오는것이 아니기 떄문에 Weight가 적용되지않아,
Router2/3에 redistribute connected를 선언했습니다.
위의 캡쳐를 보시면, Next-hop이 Peer인 행을 보면, Weight가 200으로 선언된것을 볼 수 있습니다.
따라서, Sequence가 높을수록 나중에 적용되며, Overwrite된다고 이해해주시면 됩니다.
그럼 시퀀스를 반대로 설정해보겠습니다.
inherit peer-policy weight10 10 |
inherit peer-policy weight200 5 |
이렇게 되면 200이 먼저 적용되고 10이 나중에 적용되니 10의 Weight가 적용될겁니다.
이렇게 이번 실습은 마치겠으며, 실습을 진행하면서 한가지 안 사실을 공유 드립니다.
저는 단순히 ttl-security가 어느 로직이건 ttl만 따진다고 생각했었는데, 저 Config는 의외로 Local/Peer 모두 적용되어야하는 Config였습니다. 한쪽이라도 설정이 빠져있으면 Neighbor이 적용되지 않는 점 추가로 말씀드립니다.
'Network 모험기' 카테고리의 다른 글
[#3-9]BGP template 이론편 (0) | 2024.12.16 |
---|---|
[#3-8]BGP의 빠른 Take-over(2/2)+security (1) | 2024.12.15 |
[#3-8]BGP의 빠른 Take-over(1/2) (1) | 2024.12.05 |
[기타]Prefix list와 ACL의 차이 (0) | 2024.12.03 |
[#1] DHCP 가지고 놀기 3탄 (0) | 2024.12.02 |