Skip to Content
04. VPNDMVPN Phase 2

DMVPN Phase 2

핵심 요약

  • Phase 1과 차이: 스포크에서 tunnel mode gre multipoint 사용 + tunnel destination 제거 (2가지 변경).
  • 스포크 간 직접 통신 가능: NHRP resolution request/reply를 통해 상대 스포크의 공인 IP(NBMA 주소)를 확인한다.
  • 라우팅 제약: 허브에서 요약 라우트(summary route) 사용 시 spoke-to-spoke 통신 불가 — **구체적 라우트(specific route)**가 필요하다.
  • EIGRP: hub에서 no ip next-hop-self eigrp 설정 필요 (next-hop 변경 방지).
  • BGP: next-hop 보존 필요 (next-hop-unchanged 또는 route-map으로 처리).

Phase 2에서는 스포크 라우터도 mGRE(multipoint GRE)를 사용하여 스포크 간 직접 터널이 가능하다. Phase 1에서는 스포크가 P2P GRE 터널만 사용했으므로 모든 트래픽이 허브를 경유해야 했지만, Phase 2에서는 스포크가 NHRP를 통해 상대 스포크의 NBMA 주소를 학습하고 직접 GRE 터널을 수립한다.


1. Phase 1 대비 변경점

항목Phase 1Phase 2
Spoke 터널 모드tunnel mode gre point-to-pointtunnel mode gre multipoint
Spoke에서 tunnel destination필요불필요 (제거)
Spoke-to-Spoke 직접 통신불가 (허브 경유)가능
허브에서 요약 라우트가능불가 (구체적 라우트 필요)

2. 토폴로지 및 기본 설정

토폴로지

12_DMVPN Phase 2 Basic Configuration_img_p02_01

Hub 설정 (Phase 1과 동일)

Hub(config)#interface Tunnel0 Hub(config-if)#ip address 172.16.123.1 255.255.255.0 Hub(config-if)#ip nhrp authentication DMVPN Hub(config-if)#ip nhrp map multicast dynamic Hub(config-if)#ip nhrp network-id 1 Hub(config-if)#tunnel source GigabitEthernet0/1 Hub(config-if)#tunnel mode gre multipoint

Spoke 설정 (Phase 1과 차이점 2개)

Spoke1(config)#interface Tunnel0 Spoke1(config-if)#ip address 172.16.123.2 255.255.255.0 Spoke1(config-if)#ip nhrp authentication DMVPN Spoke1(config-if)#ip nhrp map 172.16.123.1 192.168.123.1 Spoke1(config-if)#ip nhrp map multicast 192.168.123.1 Spoke1(config-if)#ip nhrp network-id 1 Spoke1(config-if)#ip nhrp nhs 172.16.123.1 Spoke1(config-if)#tunnel source GigabitEthernet0/1 Spoke1(config-if)#tunnel mode gre multipoint ← Phase 2 변경점 ! tunnel destination 명령 없음 ← Phase 2 변경점

핵심 포인트: Phase 1에서는 스포크가 tunnel mode gre point-to-point + tunnel destination으로 허브만 바라봤지만, Phase 2에서는 tunnel mode gre multipoint로 변경하고 tunnel destination을 제거하여 여러 피어와 동적으로 터널을 맺을 수 있다.


3. Spoke-to-Spoke 통신 흐름

Phase 2에서 스포크 간 직접 통신이 이루어지는 과정은 다음과 같다.

[Spoke1] ---(1) NHRP Resolution Request --→ [Hub] [Hub] ---(2) NHRP Resolution Reply ---→ [Spoke1] (Spoke2의 NBMA 주소 전달) [Spoke1] ---(3) 직접 GRE 터널 수립 ------→ [Spoke2]
  1. Spoke1이 Spoke2의 내부 네트워크로 트래픽을 보내면, 라우팅 테이블의 next-hop이 Spoke2의 터널 IP이다.
  2. Spoke1은 Hub(NHS)에게 NHRP Resolution Request를 보내 Spoke2의 NBMA(공인) 주소를 요청한다.
  3. Hub은 NHRP 캐시에서 Spoke2의 NBMA 주소를 찾아 NHRP Resolution Reply로 응답한다.
  4. Spoke1은 학습한 NBMA 주소로 Spoke2에 직접 GRE 터널을 수립하고 트래픽을 전송한다.

참고: NHRP 해석(resolution) 중에도 트래픽은 허브를 경유하여 전달되므로 패킷 손실은 발생하지 않는다.


4. 라우팅 프로토콜 설정

라우팅의 핵심 제약: Next-Hop 보존

Phase 2에서 spoke-to-spoke 통신이 동작하려면, 스포크가 상대 스포크의 터널 IP를 next-hop으로 알고 있어야 한다. 허브에서 next-hop을 자기 자신으로 변경하면 스포크는 NHRP resolution을 시도할 수 없게 된다.

또한, 허브에서 요약 라우트(summary route)를 사용하면 개별 스포크의 네트워크 정보가 손실되어 spoke-to-spoke 통신이 불가능해진다.

4.1. EIGRP 설정

13_DMVPN Phase 2 EIGRP Routing_img_p01_01

EIGRP는 기본적으로 허브에서 next-hop을 자기 자신으로 변경한다. 이를 방지해야 한다.

Hub 설정

Hub(config)#router eigrp 1 Hub(config-router)#network 172.16.123.0 0.0.0.255 Hub(config-router)#network 10.0.0.0 0.0.0.255 Hub(config)#interface Tunnel0 Hub(config-if)#no ip split-horizon eigrp 1 Hub(config-if)#no ip next-hop-self eigrp 1 ← Phase 2 핵심 설정
명령설명
no ip split-horizon eigrp 1허브가 스포크에서 학습한 경로를 다른 스포크에 광고 (Phase 1에서도 필요)
no ip next-hop-self eigrp 1Phase 2 핵심 — 허브가 next-hop을 변경하지 않고 원래 스포크의 터널 IP 유지

Spoke 설정

Spoke1(config)#router eigrp 1 Spoke1(config-router)#network 172.16.123.0 0.0.0.255 Spoke1(config-router)#network 192.168.1.0 0.0.0.255

핵심 포인트: no ip next-hop-self eigrp 1이 없으면 허브가 모든 경로의 next-hop을 자기 자신(172.16.123.1)으로 변경한다. 이 경우 Spoke1이 Spoke2의 네트워크로 향하는 트래픽의 next-hop이 허브가 되어 NHRP resolution이 발생하지 않고, spoke-to-spoke 직접 터널도 만들어지지 않는다.

4.2. BGP 설정

14_DMVPN Phase 2 BGP Routing_img_p02_01

BGP에서도 next-hop 보존이 핵심이다. iBGP 환경에서 route-reflector를 사용하는 경우가 일반적이다.

Hub 설정 (Route-Reflector)

Hub(config)#router bgp 1 Hub(config-router)#neighbor 172.16.123.2 remote-as 1 Hub(config-router)#neighbor 172.16.123.3 remote-as 1 Hub(config-router)#neighbor 172.16.123.2 route-reflector-client Hub(config-router)#neighbor 172.16.123.3 route-reflector-client Hub(config-router)#neighbor 172.16.123.2 next-hop-unchanged ← next-hop 보존 Hub(config-router)#neighbor 172.16.123.3 next-hop-unchanged ← next-hop 보존 Hub(config-router)#network 10.0.0.0 mask 255.255.255.0
14_DMVPN Phase 2 BGP Routing_img_p02_02

Spoke 설정

Spoke1(config)#router bgp 1 Spoke1(config-router)#neighbor 172.16.123.1 remote-as 1 Spoke1(config-router)#network 192.168.1.0 mask 255.255.255.0
14_DMVPN Phase 2 BGP Routing_img_p02_03

핵심 포인트: BGP에서 next-hop-unchanged 명령이 없으면, route-reflector인 허브가 경로를 반사(reflect)할 때 next-hop을 자기 자신으로 변경한다. 이 경우 EIGRP와 마찬가지로 spoke-to-spoke 직접 통신이 불가능해진다.


5. Phase 2의 한계

한계점설명
요약 라우트 사용 불가허브에서 요약 라우트 사용 시 개별 스포크의 next-hop 정보가 손실됨
라우팅 테이블 비대모든 스포크의 구체적 경로를 유지해야 하므로 스포크 수가 많으면 라우팅 테이블이 커짐
확장성 제약스포크 수가 많아질수록 라우팅 오버헤드 증가

실무 권장: Phase 2의 한계를 해결한 것이 Phase 3이다. Phase 3에서는 NHRP shortcut과 redirect를 사용하여 요약 라우트만으로도 spoke-to-spoke 통신이 가능하다. 대부분의 환경에서 Phase 3 사용을 권장한다.


관련 문서

  • [[03_DMVPN 소개 및 Phase 1]] - DMVPN 개요 및 Phase 1 설정
  • [[05_DMVPN Phase 3]] - Phase 3 설정 및 라우팅
  • [[06_DMVPN Phase 비교 및 요약]] - Phase 간 비교
  • 원본: 04_VPN/원본/12_DMVPN Phase 2 Basic Configuration.pdf
  • 원본: 04_VPN/원본/13_DMVPN Phase 2 EIGRP Routing.pdf
  • 원본: 04_VPN/원본/14_DMVPN Phase 2 BGP Routing.pdf