EdgeRouter - IPsec 경로기반 (VTI) 사이트 투 사이트 VPN ======================================================= download at 2017-09-28T17:30:42Z `origin `_  Overview -------------- 이 문서에서는 경로 기반 사이트 투 사이트 IPsec VPN을 두 `EdgeRouters `__ 사이에서 구성하는 방법에 대하여 서술합니다. 경로 기반 VPN은 가상 터널 인터페이스와 라우팅 엔트리의 사용에 따라서 특징지을 수 있습니다. 경로 기반 VPN과 달리 정책 기반 VPN은 로컬, 원격 서브넷 정의에 따라서 달라기재 됩니다. 이 문서의 예제는 고정 라우팅에 집중하며, OPSF를 터널에 사용하여 동적 라우팅 프로토콜을 사용할 수도 있습니다. `EdgeRouter - IPsec Policy-Based Site-to-Site VPN `__ 문서를 참조하여 정책 기반 VPN을 구성하는 방법에 대하여 확인하십시오. |book_25x25.png| **NOTES & REQUIREMENTS:** EdgeOS 1.9.7 이상의 펌웨어가 설치된 모든 EdgeRouter 모델에서 적용 가능합니다. 커맨드라인 인터페이스와 기본 네트워킹에 대한 지식이 요구됩니다. 해당 주제에 대한 내용은 `관련 문서 <#related%20articles>`__ 섹션의 문서를 확인하시기 바랍니다. 이 문서에서 사용한 장비: - `EdgeRouter-X (ER-X) `__ - 피어의 테스트 클라이언트 (Host1 and Server1) Table of Contents -------------- #. `네트워크 다이어그램 <#diagram>`__ #. `Steps: 경로 기반 VPN <#policy%20vpn>`__ #. `Steps: 테스팅 및 검증 <#testing%20verification>`__ #. `관련 문서 <#related%20articles>`__ -------------- 네트워크 다이어그램 -------------- `맨위로 가기 <#top>`__ **ER-Left** #. eth0 (WAN) - 203.0.113.1 #. eth1 (LAN) - 192.168.1.1/24 #. vti0 - 10.255.12.1/30 **ER-Right** #. eth0 (WAN) - 192.0.2.1 #. eth1 (LAN) - 172.16.1.1/24 #. vti0 - 10.255.12.2/30 |image1| -------------- Steps: 경로 기반 VPN -------------- `맨위로 가기 <#top>`__ 라우팅과 인터페이스 설정은 이미 완료했으며, 서로 통신이 가능하다고 가정합니다. IPsec과 관련있는 UDP 포트와 프로토콜은 다음과 같습니다: #. UDP 500 (IKE) #. ESP (프로토콜 50) #. UDP 4500 (NAT-T) 생성하는 VPN 타입은 IPsec 터널의 고정 VTI (IPIP 캡슐화)으로 명명합니다. VTI 인터페이스 (vti0)을 통해 패킷은 라우팅 되며, 이후에 IPsec을 사용하여 암호화 하는 것을 의미합니다. GRE (제네릭 라우팅 캡슐화) 터널 (tun0)을 사용하는 것 (IPsec에서 GRE를 활용하는 방식)과 다른 방식입니다. 환경설정은 주로 ER-Left에 대하여 서술합니다. ER-Right 환경설정은 서브넷과 피어링 주소를 제외하고는 모두 동일합니다. ER-RIght 환경설정이 다른 곳은 아래의 결과에 포함하였습니다. |www.png|  **GUI STEPS:** 라우터의 웹 관리 포탈 (GUI)에 접속합니다. 1. ER의 IPsec 피어와 보안 설정(SAs)을 정의합니다. (을 원하는 패스워드로 변겅합니다.) **VPN > IPsec Site-to-Site > +Add Peer** - 고급 옵션 확인 - 자동 방화벽 개방과 NAT부터 얻는 트래픽을 제외 :: Peer: 192.0.2.1 Description: IPsec Local IP: 203.0.113.1 (needs to be the local public IP address, not any) Encryption: AES-256 Hash: SHA1 DH Group: 14 Pre-shared Secret: Local subnet: 192.168.1.0/24 (does not matter because it will be removed later) Remote subnet: 172.16.1.0/24 (does not matter because it will be removed later) |info_i_25x25.png| .. Note:: 현재는 경로 기반 VTI 환경설정은 다이나믹 피어 주소와 동적 DNS (DynDNS)를 사용한 전체 주소 도메인 네임을 지원하지 않습니다. VTI 종단에서 알려진 IP 주소로 연결하는 것이 필요하며, \ **local-address any**\ 혹은 \ **peer 0.0.0.0** 은 정상 동작하지 않습니다.    |image4|   |CLI_circle.png| **CLI STEPS:** 커맨드라인 인터페이스에 접속합니다. GUI의 CLI 버튼을 사용하거나 PuTTY와 같은 프로그램을 사용합니다. 1. 환경설정 모드로 진입합니다. :: configure 2. VPN이 사용할 VTI를 생성하고 IP 주소를 부여합니다. :: set interfaces vti vti0 address 10.255.12.1/30 |info_i_25x25.png| .. Note:: RFC1918 IP 주소를 터널 인터페이스에 사용하는 것을 권장합니다. IP 주소는 라우팅 테이블이나 라우터에서 존재하면 안됩니다. 3. IPsec 피어 환경설정을 확인합니다. (관련 정보만 출력합니다.) :: show vpn ipsec {    site-to-site {        peer 192.0.2.1 {            tunnel 1 {                esp-group FOO0                local {                    prefix 192.168.1.0/24                }                remote {                    prefix 172.16.1.0/24                }            } ... 4. IPsec 터널을 제거합니다. :: delete vpn ipsec site-to-site peer 192.0.2.1 tunnel 1 5. 생성한 VTI 인터페이스와 IPsec 피어 환경설정을 연결합니다. :: set vpn ipsec site-to-site peer 192.0.2.1 vti bind vti0 set vpn ipsec site-to-site peer 192.0.2.1 vti esp-group FOO0 6. VTI로 향하는 원격 서브넷 고정 라우팅 엔트리를 생성합니다. :: set protocols static interface-route 172.16.1.0/24 next-hop-interface vti0 7. (선택사항) 고정 라우팅 엔트리를 생성하는 대신에 OSPF와 같은 동적 라우팅 프로토콜을 사용합니다. :: set interfaces vti vti0 ip ospf network point-to-point set protocols ospf passive-interface default set protocols ospf passive-interface-exclude vti0 set protocols ospf parameters router-id 10.255.12.1 set protocols ospf area 0.0.0.0 network 10.255.12.0/30 set protocols ospf area 0.0.0.0 network 192.168.1.0/24 8. (선택사항) VTI 인터페이스의 MTU 세팅 값을 낮춥니다. :: set interfaces vti vti0 mtu 1400 |info_i_25x25.png| .. Note:: GRE 터널과 달리 VTI 인터페이스는 24 바이트의 오버헤드를 요구하지 않습니다. MTU 값은 IPsec 오버헤드에 따라서 자동적으로 낮아질 수 있습니다. 몇 경우에서는 커넥션 (HTTPS 와 SSH)이 실패할 수도 있습니다. 이 경우에는 터널의 MTU 값을 낮추어서 조정할 수 있습니다. 1400은 단편화를 예방하는 좋은 기준점입니다. 상황에 따라서 MTU 값을 조정해야합니다. 9. (선택사항) IPsec 오프로딩을 활성화하여 ESP 성능을 향상시킵니다. :: set system offload ipsec enable (this requires a reboot to become active) 10. 변경내역을 커밋합니다. :: commit 11. 환경설정을 저장합니다. :: save -------------- 테스팅 및 검증 -------------- `맨위로 가기 <#top>`__ IPsec VPN을 설정하고 난 이후에는 커넥션/상태를 다음 명령어를 통해서 검증할 수 있습니다. 1. IPsec 보안 옵션을 검증하고 ER의 상태를 확인합니다: :: show vpn ipsec sa peer-192.0.2.1-tunnel-vti: #4, ESTABLISHED, IKEv1, 24d45792c4976ca4:f4b8de413b632a7c  local  '203.0.113.1' @ 203.0.113.1  remote '192.0.2.1' @ 192.0.2.1  AES_CBC-256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048  established 13s ago, reauth in 85578s  peer-192.0.2.1-tunnel-vti: #1, INSTALLED, TUNNEL, ESP:AES_CBC-128/HMAC_MD5_96    installed 13 ago, rekeying in 42249s, expires in 43187s    in  cf09bc59,    500 bytes,     5 packets,     5s ago    out 769b07da,    500 bytes,     5 packets,     5s ago    local  0.0.0.0/0    remote 0.0.0.0/0 sudo ipsec statusall Status of IKE charon daemon (strongSwan 5.2.2, Linux 3.10.14-UBNT, mips):  uptime: 22 minutes, since Mar 12 09:34:36 2017  malloc: sbrk 376832, mmap 0, used 272632, free 104200  worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 8 Listening IP addresses:  203.0.113.1  192.168.1.1  10.255.12.1 Connections: peer-192.0.2.1-tunnel-vti:  203.0.113.1...192.0.2.1  IKEv1 peer-192.0.2.1-tunnel-vti:   local:  [203.0.113.1] uses pre-shared key authentication peer-192.0.2.1-tunnel-vti:   remote: [192.0.2.1] uses pre-shared key authentication peer-192.0.2.1-tunnel-vti:   child:  0.0.0.0/0 === 0.0.0.0/0 TUNNEL Routed Connections: peer-192.0.2.1-tunnel-vti{1}:  ROUTED, TUNNEL peer-192.0.2.1-tunnel-vti{1}:   0.0.0.0/0 === 0.0.0.0/0 Security Associations (1 up, 0 connecting): peer-192.0.2.1-tunnel-vti[4]: ESTABLISHED 74 seconds ago, 203.0.113.1[203.0.113.1]...192.0.2.1[192.0.2.1] peer-192.0.2.1-tunnel-vti[4]: IKEv1 SPIs: 24d45792c4976ca4_i f4b8de413b632a7c_r*, pre-shared key reauthentication in 23 hours peer-192.0.2.1-tunnel-vti[4]: IKE proposal: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048 peer-192.0.2.1-tunnel-vti{1}:  INSTALLED, TUNNEL, ESP SPIs: cf09bc59_i 769b07da_o peer-192.0.2.1-tunnel-vti{1}:  AES_CBC_128/HMAC_MD5_96, 500 bytes_i (5 pkts, 66s ago), 500 bytes_o (5 pkts, 66s ago) peer-192.0.2.1-tunnel-vti{1}:   0.0.0.0/0 === 0.0.0.0/0 2. ER IPsec strongSwan 환경설정을 검증합니다: :: sudo cat /etc/ipsec.conf # generated by /opt/vyatta/sbin/vpn-config.pl config setup conn %default        keyexchange=ikev1 conn peer-192.0.2.1-tunnel-vti        left=203.0.113.1        right=192.0.2.1        leftsubnet=0.0.0.0/0        rightsubnet=0.0.0.0/0        ike=aes256-sha256-modp2048!        keyexchange=ikev1        ikelifetime=86400s        esp=aes128-md5!        keylife=43200s        rekeymargin=540s        type=tunnel        compress=no        authby=secret        mark=9437185        auto=route        keyingtries=%forever #conn peer-192.0.2.1-tunnel-vti 3. ER 외부 WAN 인터페이스를 통해서 수신하는 IKE 트래픽을 캡쳐합니다: :: sudo tcpdump -i eth0 -n udp dst port 500    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes IP 203.0.113.1.500 > 192.0.2.1.500: isakmp: phase 1 I ident IP 192.0.2.1.500 > 203.0.113.1.500: isakmp: phase 1 R ident IP 203.0.113.1.500 > 192.0.2.1.500: isakmp: phase 1 I ident[E] IP 192.0.2.1.500 > 203.0.113.1.500: isakmp: phase 1 R ident[E] IP 203.0.113.1.500 > 192.0.2.1.500: isakmp: phase 2/others I oakley-quick[E] IP 192.0.2.1.500 > 203.0.113.1.500: isakmp: phase 2/others R oakley-quick[E]           |info_i_25x25.png| .. Note:: 실시간 캡쳐의 결과이므로 아무런 결과가 발견되지 않는다면 클라이언트가 트래픽을 생성하지 않거나 트래픽 업스트림이 차단당한 것일수도 있습니다. 4. ER IPsec VPN 로그를 확인합니다: :: sudo swanctl --log [IKE] initiating Main Mode IKE_SA peer-192.0.2.1-tunnel-1[1] to 192.0.2.1 [ENC] generating ID_PROT request 0 [ SA V V V V ] [NET] sending packet: from 203.0.113.1[500] to 192.0.2.1[500] (160 bytes) [NET] received packet: from 192.0.2.1[500] to 203.0.113.1[500] (108 bytes) [ENC] parsed ID_PROT response 0 [ SA V ] [IKE] received NAT-T (RFC 3947) vendor ID [ENC] generating ID_PROT request 0 [ KE No NAT-D NAT-D ] [ENC] parsed ID_PROT response 0 [ KE No V V V V NAT-D NAT-D ] [ENC] generating ID_PROT request 0 [ ID HASH N(INITIAL_CONTACT) ] [ENC] parsed ID_PROT response 0 [ ID HASH ] [IKE] IKE_SA peer-192.0.2.1-tunnel-1[1] established between 203.0.113.1[203.0.113.1]...192.0.2.1[192.0.2.1] [ENC] generating QUICK_MODE request 561157166 [ HASH SA No ID ID ] [ENC] parsed QUICK_MODE response 561157166 [ HASH SA No ID ID N((24576)) ] [IKE] CHILD_SA peer-192.0.2.1-tunnel-vti{1} established with SPIs cad56e88_i 86968a35_o and TS 0.0.0.0/0 === 0.0.0.0/0 |info_i_25x25.png| .. Note:: 실시간 캡쳐 결과이므로 출력이 보이지 않는다면, 트래픽이 방화벽을 통해서 허용되었는지 확인하십시오. 다른 방법으로는 \ **show vpn log \| no-more**\ 명령어를 통해서 전체 IPsec 로그 히스토리를 확인할 수 있습니다. 5. 터널의 ER 상태를 검증하고 터널을 통해 전송하는 트래픽을 캡쳐합니다: :: show interfaces vti vti0 vti0: mtu 1400 qdisc noqueue state UNKNOWN group default    link/ipip 203.0.113.1 peer 192.0.2.1    inet 10.255.12.1/30 scope global vti0       valid_lft forever preferred_lft forever    RX:  bytes    packets     errors    dropped    overrun      mcast          1600         19          0          0          0          0    TX:  bytes    packets     errors    dropped    carrier collisions          1332         14          0          0          0          0 show interfaces vti vti0 capture IP 172.16.1.10 > 192.168.1.10: ICMP echo request, id 12993, seq 18, length 64 IP 192.168.1.10 > 172.16.1.10: ICMP echo reply, id 12993, seq 18, length 64 IP 172.16.1.10 > 192.168.1.10: ICMP echo request, id 12993, seq 19, length 64 IP 192.168.1.10 > 172.16.1.10: ICMP echo reply, id 12993, seq 19, length 64 6. Server1 과 Host1사이에 터널을 통해 트래픽을 전송해봅니다: :: sudo traceroute -n 192.168.1.10 traceroute to 192.168.1.10 (192.168.1.10), 30 hops max, 60 byte packets 1  172.16.1.1 (172.16.1.1)  1.846 ms  1.824 ms  1.812 ms 2  10.255.12.1 (10.255.12.1)  49.158 ms  53.873 ms  55.646 ms 3  192.168.1.10 (192.168.1.10)  57.799 ms *  59.623 ms sudo traceroute -n 172.16.1.10 traceroute to 172.16.1.10 (172.16.1.10), 30 hops max, 60 byte packets 1  192.168.1.1 (192.168.1.1)  1.726 ms  1.734 ms  1.712 ms 2  10.255.12.2 (10.255.12.2)  46.268 ms  48.562 ms  49.542 ms 3  172.16.1.10 (172.16.1.10)  56.236 ms *  55.567 ms -------------- 관련 문서 -------------- `맨위로 가기 <#top>`__ - `EdgeRouter - FQQN을 사용하는 IPsec 동적 사이트 투 사이트 VPN `__ - `EdgeRouter - IPsec 정책 기반 사이트 투 사이트 VPN `__ - `EdgeRouter - IPsec 사이트 투 사이트 VPN 추가 및 변경 (CLI) `__ - `EdgeRouter - 하드웨어 오프로딩 `__ - `네트워킹 개론 - SSH를 사용하여 커넥션을 생성하는 방법 `__ .. |book_25x25.png| image:: /hc/article_attachments/115018511588/book_25x25.png .. |image1| image:: /hc/article_attachments/115019079448/mceclip0.png .. |www.png| image:: /hc/article_attachments/115019077988/www.png .. |info_i_25x25.png| image:: /hc/article_attachments/115019078388/info_i_25x25.png .. |image4| image:: /hc/article_attachments/115023451767/mceclip3.png .. |CLI_circle.png| image:: /hc/article_attachments/115018989607/CLI_circle.png