EdgeRouter - NAT-T를 사용해서 내부 서버에 L2TP 트래픽 포워딩하기

download at 2017-08-30T17:47:11Z origin

Overview


이 문서는 VPN 트래픽을 내부 L2TP 서버에 포트 포워딩이나 목적지 NAT (DNAT)를 사용하여 NAT-탐색 (NAT-T)를 구현하는 방법에 대하여 서술합니다. 목적지 NAT는 다중 WAN 인터페이스를 듀얼 WAN 로드 밸런싱 시나리오에서 사용할 때 NAT-T를 구현하는 좋은 방법입니다.

NAT-T는 EdgeRouter가 L2TP 서버가 아니지만 NAT 구성의 영향을 받는 내부 L2TP 서버에 트래픽을 포워딩 할 떄 사용합니다. ESP (캡슐화된 보안 페이로드) 트래픽은 일반적인 방법으로는 L2TP 트래픽을 포트 포워딩 하거나 변환할 수 없습니다. 이러한 이유 때문에 NAT-T가 ESP 트래픽을 UDP 4500 포트를 사용하여 포워딩 할 때 사용됩니다.

book_25x25.png Notes & Requirements: EdgeOS 1.9.1 펌웨어 이상의 모든 EdgeRouter 모델에서 동작하며, 커맨드 라인 인터페이스에 대한 지식과 기본 네트워킹에 대한 지식이 필요합니다. 관련 문서 를 참조하여 더 자세한 지식을 확인하십시오.

이 문서에서 사용한 장비:

Table of Contents


  1. 네트워크 다이어그램
  2. Steps - L2TP 트래픽 포트 포워딩
  3. Steps - (선택사항) DNAT를 사용하여 L2TP 트래픽 포워딩
  4. Steps - 윈도우 클라이언트
  5. Steps - 테스트 및 검증
  6. 관련 문서

네트워크 다이어그램


맨위로 가기

네트워크 토폴로지는 아래와 같으며, EdgeRouter에서 사용하는 인터페이스는 다음과 같습니다:

  1. Ethernet 0 (Eth0) WAN 203.0.113.1
  2. Ethernet 1-4 (Switch0) LAN 192.168.1.1/24

L2TP 서버는 고정 IP 주소 192.168.1.10/24를 갖고 있습니다. VPN 클라이언트에서 사용한 IP 주소와 인터페이스는 이 예제에서는 무관합니다.

image1


Steps - L2TP 트래픽 포트 포워딩


맨위로 가기

본 예제에서는 ER이 기본 설정 위자드 를 통해서 환경설정 되었다고 가정합니다. 또한 L2Tp 서버가 LAN 상에서 인터넷과 통신 가능하도록 마스커레이드 룰이 설정되었다고 가정합니다.

info_i_25x25.png

Note

ER이 복수개의 업링크를 사용하여 인터넷에 연결되었다면, 포트포워딩 설정을 건너뛰고 목적지 NAT를 사용하여 NAT-T를 구성하는 파트를 실행하십시오.

L2TP와 관련된 UDP 포트와 프로토콜은 다음과 같습니다.:

  1. UDP 1701 (L2TP)
  2. UDP 4500 (NAT-T)
  3. UDP 500 (IKE)
  4. ESP (프로토콜 50)

CLI_circle.png 커맨드라인 인터페이스에 접속하여 수행합니다. GUI에서 CLI 버튼을 클릭하거나 PuTTY와 같은 프로그램을 사용합니다.

  1. 환경설정 모드로 진입합니다.
configure

2. eth0 WAN 인터페이스를 위한 IKE, NAT-T 포트 포워딩 룰을 생성합니다.

이 예제에서는 자동-방화벽 기능 을 사용하여 자동적으로 WANN_IN 방화벽 정책 아래에 있는 관련 포트를 개방하도록 정책을 사용합니다. DNAT 섹션을 참조하여 방화벽 룰을 생성하십시오.

set auto-firewall enable
set hairpin-nat enable
set lan-interface switch0
set wan-interface eth0

set port-forward rule 1 description IKE
set port-forward rule 1 forward-to address 192.168.1.10
set port-forward rule 1 forward-to port 500
set port-forward rule 1 original-port 500
set port-forward rule 1 protocol udp

set port-forward rule 2 description ESP
set port-forward rule 2 forward-to address 192.168.1.10
set port-forward rule 2 forward-to port 4500
set port-forward rule 2 original-port 4500
set port-forward rule 2 protocol udp

info_i_25x25.png

Note

L2TP가 1701 포트를 사용하더라도 해당 포트는 ESP 트래픽이 사용하여 포워딩하거나 변환할 필요가 없습니다. 1701 포트를 실제로 사용하는 주체는 VPN 클라이언트와 서버입니다. 그렇기 떄문에 1701 UDP 포트는 포함할 필요가 없습니다.

  1. 변경사항을 커밋합니다.
commit
  1. 환경설정을 저장합니다.
save

Steps - (선택사항) DNAT를 사용하여 L2TP 트래픽을 포워딩하기


맨위로 가기

복수개의 업링크를 사용할 때는 DNAT를 사용하는 것을 권장합니다. 현재의 PF 구현에서는 단일 WAN인터페이스의 메인 IP 만 적용되기 때문입니다. 아래의 예제는 ER에서 듀얼 WAN 로드 밸런싱 위자드 를사용하여 미리 구성된 ER을 사용합니다. L2TP 서버가 랜과 연결되어 인터넷과 통신이 가능하기 위해 마스커레이드 룰이 설정되었다고 가정합니다.

  1. 환경설정 모드로 진입합니다.
configure
  1. eth0 WAN 인터페이스를 위한 목적지 NAT 룰을 생성합니다.
set service nat rule 10 description IKE
set service nat rule 10 destination port 500
set service nat rule 10 inbound-interface eth0
set service nat rule 10 inside-address address 192.168.1.10
set service nat rule 10 inside-address port 500
set service nat rule 10 log disable
set service nat rule 10 protocol udp
set service nat rule 10 type destination

set service nat rule 11 description ESP
set service nat rule 11 destination port 4500
set service nat rule 11 inbound-interface eth0
set service nat rule 11 inside-address address 192.168.1.10
set service nat rule 11 inside-address port 4500
set service nat rule 11 log disable
set service nat rule 11 protocol udp
set service nat rule 11 type destination
  1. eth1 WAN 인터페이스를 위한 목적지 NAT 룰을 생성합니다.
set service nat rule 12 description IKE
set service nat rule 12 destination port 500
set service nat rule 12 inbound-interface eth1
set service nat rule 12 inside-address address 192.168.1.10
set service nat rule 12 inside-address port 500
set service nat rule 12 log disable
set service nat rule 12 protocol udp
set service nat rule 12 type destination

set service nat rule 13 description ESP
set service nat rule 13 destination port 4500
set service nat rule 13 inbound-interface eth1
set service nat rule 13 inside-address address 192.168.1.10
set service nat rule 13 inside-address port 4500
set service nat rule 13 log disable
set service nat rule 13 protocol udp
set service nat rule 13 type destination
  1. WAN 인터페이스의 IKE, NAT-T를 위한 방화벽 룰을 추가합니다.
set firewall name WAN_IN rule 30 action accept
set firewall name WAN_IN rule 30 description IKE
set firewall name WAN_IN rule 30 destination port 500
set firewall name WAN_IN rule 30 log disable
set firewall name WAN_IN rule 30 protocol udp

set firewall name WAN_IN rule 40 action accept
set firewall name WAN_IN rule 40 description ESP
set firewall name WAN_IN rule 40 destination port 4500
set firewall name WAN_IN rule 40 log disable
set firewall name WAN_IN rule 40 protocol udp
  1. 변경 내역을 커밋합니다.
commit
  1. 환경설정을 저장합니다.
save

Steps - 윈도우 클라이언트


맨위로 가기

다수의 애플리케이션과 운용체제를 사용하여 L2TP 서버에 연결하는 방법은 다양합니다. 이 문서에서는 Windows 10 VPN 클라이언트에 집중하여 설명합니다. 가장 많이 사용되는 클라이언트이기 때문에 해당 클라이언트에 대하여 설명합니다.

  1. Windows 10 Settings (WIN+I) > Network & Internet > Add a VPN connection 로 이동합니다.
  2. VPN 제공자: Windows (built-in)
  3. 커넥션 이름: ER-L2TP
  4. 서버 아룸: ER의 외부 WAN IP 주소
  5. VPN 타입: 미리 배포된 키, 자격증명과 L2TP/IPsec
  1. Windows 10 Network Connections (WIN+X) > ER-L2TP Adapter properties 로 이동합니다.
Security > Allow these protocols > Microsoft CHAP Version 2 (MS-CHAP v2)

info_i_25x25.png

Note

L2TP서버로 연결할 수 없다면, 윈도우 운용체제에서 연결을 차단하고 있거나 IPsec 트래픽이 관리되고 있음을 뜻합니다. step 3의 핫픽스를 적용하십시오.

  1. power_bolt_25x25.png (핫픽스) Windows 10 registry (WIN+R) > regedit 를 실행합니다.

다음 레지스트리 서브트리로 이동합니다:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent

새로운 DWORD (32-bit) 를 생성합니다:

AssumeUDPEncapsulationContextOnSendRule

이 DWORD 값을 2로 변경하고, 컴퓨터를 재시작합니다.


Steps - 테스트 및 검증


맨위로 가기

L2TP 트래픽이 올바르게 포워딩/변환 되는지 검증해보아야 합니다. 올바른 설정이 내부 L2TP 서버에 적용되었다고 가정하고 있기 때문에 VPN 연결이 초기화 된 이후에는 클라이언트가 다음 명령어를 통해서 커넥션을 검증할 수 있습니다:

  1. NAT 테이블 변환:
show nat translations destination
Pre-NAT              Post-NAT           Type   Prot  Timeout
203.0.113.1          192.168.1.10       dnat   udp   147
203.0.113.1          192.168.1.10       dnat   udp   152
  1. WAN_IN 방화벽 룰 카운터:
show firewall name WAN_IN rule 30
IPv4 Firewall "WAN_IN":
Active on (eth0,IN) (eth1,IN)
rule  action   proto     packets  bytes
----  ------   -----     -------  -----
30    accept   udp       4        1744
  condition - udp dpt:isakmp

show firewall name WAN_IN rule 40
IPv4 Firewall "WAN_IN":
Active on (eth0,IN) (eth1,IN)
rule  action   proto     packets  bytes
----  ------   -----     -------  -----
40    accept   udp       4        432
  condition - udp dpt:4500
  1. 외부 WAN 인터페이스를 통해서 들어오는 L2TP 트래픽:
sudo tcpdump -i eth0 -n udp dst port 4500 or port 500 or port 1701
00:58:35.508580 IP 192.0.2.1.500 > 203.0.113.1.500: isakmp: phase 1 I ident
00:58:35.803213 IP 192.0.2.1.500 > 203.0.113.1.500: isakmp: phase 1 R ident
00:58:36.041596 IP 192.0.2.1.4500 > 203.0.113.1.4500: NONESP-encap: isakmp: phase 1 I ident[E]
00:58:36.047270 IP 192.0.2.1.4500 > 203.0.113.1.4500: NONESP-encap: isakmp: phase 1 R ident[E]
00:58:36.286845 IP 192.0.2.1.4500 > 203.0.113.1.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
00:58:36.292050 IP 192.0.2.1.4500 > 203.0.113.1.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
00:58:36.529811 IP 192.0.2.1.4500 > 203.0.113.1.4500: UDP-encap: ESP(spi=0xc645986c,seq=0x1), length 164
00:58:37.523640 IP 192.0.2.1.4500 > 203.0.113.1.4500: UDP-encap: ESP(spi=0xc645986c,seq=0x2), length 164

info_i_25x25.png

Note

위의 결과는 실시간 캡쳐의 결과 입니다. 아무런 결과도 관찰할 수 없다면, 트래픽이 생성되지 않았거나 트래픽 업스트림이 차단당했을 수 있습니다. 출력이 생성되었는데 커넥션이 만들어지지 않았다면, NAT/포트포워딩 통계치를 확인해보거나, 룰을 확인해 보십시오. 가장 중요한 결과는 4500 UDP-encap ESP 파트입니다. ESP 트래픽이 암호화되어 UDP 4500 포트, NAT-T를 사용하지 않는다면, 제대로 동작하지 않는 것입니다. 또한 UDP 1701의 결과는 출력되어서는 안됩니다.


관련 문서


맨위로 가기