개요
저번 글에서도 말했지만 이번 과제는 vpn(cisco에서는 vrf)을 사용하여 같은 장비를 타지만 서로 분리된 망을 구성하는 과제이다.
a1 P a2
\ / \ /
b1 - PE PE - b2
/ \ / \
c1 P c2
이런 환경에서 a1-a2, b1-b2, c1-c2 간은 통신이 되면서, a/b/c 상호 간은 통신이 안되도록 구성하면 된다.
즉, a1-a2는 핑이 되면서 a1-b1으로는 핑이 안되도록 하면 되는 과제이다.
단 a/b/c의 고객사 측 장비(이하 CE)에서는 최소한의 설정만 들어가도록 구성해야 하며, a-PE는 static으로, b-PE는 ospf로, c-PE는 bgp로 연결해야 한다.
이번 글에서는 vpn-instance 만을 이용하여(정확히는 MPLS를 사용하지 않고) vrf를 구현해 보고, 이후에 mpls를 구현하여 어떤 차이가 있는지를 확인해 볼 것이다.
기본 구성
구성 지도 및 기본 설정
호스트네임 / 루프백 / 인터페이스 ip를 설정해 준다. 이미 많이 해봤으니 실제 config는 생략.
vpn-instance 설정
ip vpn-instance A
ipv4-family
route-distinguisher 100:1
vpn-target 100:1 export-extcommunity
vpn-target 100:1 import-extcommunity
ip vpn-instance B
ipv4-family
route-distinguisher 200:1
vpn-target 200:1 both
ip vpn-instance C
ipv4-family
route-distinguisher 300:1
vpn-target 300:1 both
route-distinguisher(RD)는 VPN 내에서 사용되는 IP 주소 대역이 외부(BGP/MPLS 환경 등)와 충돌하지 않도록, 해당 경로를 전역적으로 고유하게 식별해 주는 값이다. 즉, 같은 10.0.0.0/24 대역을 여러 VPN에서 사용하더라도, RD가 다르면 서로 다른 경로로 인식된다.
따라서 일반적으로 같은 VPN 네트워크라면 동일한 RD를 사용하는 것이 원칙이지만, 운영 및 관리 목적에 따라 같은 VPN이라도 RD 값을 다르게 설정하는 경우가 있다. RD가 해당 경로의 유입 지점을 식별하는 키값처럼 사용하여 BGP VPNv4 테이블에서 경로 출처 식별하거나, 특정 PE에서 유입된 경로만 선택적으로 사용하는 등 단순히 고윳값 이상의 의미를 가지도록 할 수 있다.
route target은 VPN 간 라우팅 정책을 제어하기 위한 BGP extended community 값이며, Huawei 설정에서는 vpn-target으로 표기한다. RT는 경로가 이 VPN 인스턴스로 들어오거나 나갈 수 있도록 허용하는 정책이다. 해당 VRF에서 BGP로 내보내는 경로에 export-extcommunity 값을 붙이고, 외부에서 들어온 BGP 경로에 붙은 import-extcommunity에서 명시한 값과 일치하면, 해당 경로를 이 VPN 인스턴스로 보내준다. 만약에 둘을 같은 값으로 설정하고 싶으면 both 명령어를 사용하여 단축할 수이다.
CE-PE 간 구성
CE(Customer Edge) 장비와 PE(Provider Edge) 장비를 연결하는 설정을 해볼 것이다. ensp의 기본 라우터에서는 장비에 인터페이스가 많지 않아서 GE 인터페이스를 다 사용하고, ethernet 포트도 하나 사용해야 한다.
인터페이스 구성
interface Ethernet0/0/0
ip binding vpn-instance A
ip address 192.168.2.1 255.255.255.252
interface GigabitEthernet0/0/2
ip binding vpn-instance B
ip address 192.168.3.1 255.255.255.252
ospf network-type p2p
#
interface GigabitEthernet0/0/3
ip binding vpn-instance C
ip address 192.168.4.1 255.255.255.252
huawei 장비는 interface에 vpn-instance를 binding 하면 ip 정보가 삭제된다. 따라서 미리 설정해 뒀다면 다시 설정해줘야 한다.
다른 인터페이스는 상관없지만 B는 ospf로 연결해줘야 하기 때문에 network-type을 설정해 준다.
고객 측 장비(CE)에서는 인터페이스에 별다른 설정 없이 ip 만 넣어주면 된다.
라우팅 구성
static
- PE 설정
ip route-static vpn-instance A 192.168.0.5 255.255.255.255 192.168.2.2
- CE 설정
ip route-static 0.0.0.0 0.0.0.0 192.168.2.1
지금은 loopback으로만 통신을(ping test 만) 하면 되기 때문에 PE에 해당 루프백 아이피만 넣어줬지만, 실제로는 당연히 더 많은 ip를 사용할 것이기 때문에 해당 대역을 routing 해줘야 한다.
CE에서는 전체 대역을 다 상위 장비로 올려주기 때문에 default routing 설정만 해주면 된다.
ospf
- PE 설정
ospf 100 vpn-instance B
default-route-advertise always
area 100
network 192.168.3.0 0.0.0.3
- CE 설정
interface LoopBack0
ip address 192.168.0.7 255.255.255.255
ospf 100
area 0.0.0.100
network 192.168.3.0 0.0.0.3
network 192.168.0.7 0.0.0.0
PE에서 default-route-advertise always 설정을 default routing을 하위 장비로 내려준다. 이를 통해 CE 장비에 모든 라우팅을 나에게 오도록 설정하여 P 건너편의 routing table 이 생성되지 않은 경로라도(정확히는 vpn을 통해 라우팅 테이블을 구성하면 라우팅이 분리되어 전달되지 않기 때문에) PE 라우터가 받아서 전달할 수 있도록 할 수 있다.
bgp
- PE 설정
bgp 65500
ipv4-family vpn-instance C
network 192.168.4.0 255.255.255.252
peer 192.168.4.2 as-number 65510
- CE 설정
bgp 65510
peer 192.168.4.1 as-number 65500
ipv4-family unicast
network 192.168.0.9 255.255.255.255
CE에서는 일반적인 bgp 라우팅처럼 구성해 주면 되고, PE에서는 ipv4-family를 unicast 가 아니라 vpn-instance로 지정하여 입력한다.
PE-P 간 구성
interface GigabitEthernet0/0/0
ip address 192.168.1.13 255.255.255.252
ospf network-type p2p
interface GigabitEthernet0/0/0.110
dot1q termination vid 110
ip binding vpn-instance A
ip address 10.10.110.13 255.255.255.252
arp broadcast enable
ospf 10 router-id 192.168.0.3
area 0.0.0.10
network 192.168.0.3 0.0.0.0
network 192.168.1.12 0.0.0.3
network 192.168.1.8 0.0.0.3
bgp 65500
router-id 192.168.0.3
peer 192.168.0.1 as-number 65500
peer 192.168.0.1 connect-interface LoopBack0
peer 192.168.0.2 as-number 65500
peer 192.168.0.2 connect-interface LoopBack0
ipv4-family unicast
undo peer 192.168.0.1 enable
undo peer 192.168.0.2 enable
ipv4-family vpnv4
peer 192.168.0.1 enable
peer 192.168.0.1 next-hop-local
peer 192.168.0.2 enable
peer 192.168.0.2 next-hop-local
ipv4-family vpn-instance A
import-route direct
import-route static
peer 10.10.110.14 as-number 65500
peer 10.10.110.14 connect-interface GigabitEthernet0/0/0.110
다 올리면 너무 길어져서 P 하나를 vpn-instance A와 연결한다고 가정하고 남겨보면, 서브인터페이스 110을 추가하여 해당 인터페이스를 vpn-instance에 바인딩하고, 해당 인터페이스에 dot1 q 설정과 arp 설정을 넣어준다. 화웨이 장비에서는(기억나기론 시스코도 안되긴 함) 하나의 인터페이스에 여러 개의 vpn-instance를 binding 할 수 없기 때문에 서브 인터페이스로 나눠줘야 하는데, 이를 통해 해당 인터페이스를 논리적으로 다른 트래픽으로 구분해 준다.
그다음 ospf와 bgp peer를 맺고, unicast에서는 peering을 undo 해주고 그 대신 vpnv4에서 enable 설정을 해준 다음, vpn-instance 설정에서 connect-interface를 지정하여 peering을 맺어준다.
그리고 direct와 static routing을 import-route 하여 해당 라우팅을 redistribute 해주면 해당 인터페이스로 vpn을 통한 통신이 가능해진다.
테스트
위에서는 설정이 많이 생략됐지만 어쨌든 이렇게 설정해 주면 PE가 각 인터페이스를 통해 받은 패킷을 vpn으로 binding 하고, 그걸 건너편 CE까지 전달하여 루프백끼리 핑이 되게 만들 수 있다.
결론
이 방식은 MPLS 없이 VRF 환경을 구현하는 방식으로, 서브인터페이스를 일일이 설정해줘야 하고 중간 장비인 P 라우터(R1, R2)까지 vpn-instance 설정을 해줘야 하기 때문에 설정에 대한 소요가 크고 유연성과 확장성이 낮아진다.
vpn-instance의 구조를 이해하기 위한 소규모 실습 및 과제로 진행하기에는 괜찮지만 당연히 실제 운용 환경에서는 mpls를 활용한 방식이 더 뛰어나므로 해당 방식으로 다시 구현해 보고 구조 등의 차이를 비교해 볼 예정이다.
'프로그래밍 > 네트워크' 카테고리의 다른 글
[화웨이] 네트워크 과제 10 - MPLS LDP 과제 진행 (0) | 2025.07.07 |
---|---|
[화웨이] 네트워크 과제 8 - VPN(VRF) 와 MP-BGP 학습 (0) | 2025.07.02 |
[화웨이] 네트워크 과제 7 - 장비소개서 작성 (1) | 2025.06.01 |
[화웨이] 네트워크 과제 6 - BGP 과제 진행 (3) | 2025.05.21 |
[화웨이] 네트워크 과제 5 - BGP 학습 (1) | 2025.05.21 |