NCP와 AWS 의 IPsec VPN을 연결해 보았습니다. Site to Site VPN을 연결하는 것입니다.
아직 NCP에서는 VPC 모드에서 IPsec VPN을 지원하지 않아서 Classic 모드에서 만 연결이 가능합니다.
NCP IPsec VPN Gateway 를 먼저 만들어야 AWS Customer Gateway 를 생성할수 있습니다.
NCP IPsec VPN Gateway 를 생성하기 위해선 Private Subnet 을 먼저 생성해야 합니다.
저는 192.168.1.0/24 로 생성했습니다.
Encryption : aes
D-H Group 은 NCP 에선 1/2/5만 지원합니다.
hash 는 sha 입니다.
확인 버튼을 누르면 생성됩니다.
확인된 IP는 49.236.139.115 입니다. 이 IP를 Customer Gateway에서 사용하시면 됩니다.
다음과 같이 CGW를 만들어 줍니다. 그다음 VGW를 생성해 줘야 합니다.
Virtual Private Gateway 는 VPC 에 붙이는 가상의 게이트 웨이로 CGW- tunnel -VGW 구성으로 통신하게 됩니다.
VGW는 생성하면 VPC에 Attach 해야 합니다.
VPN으로 사용하려는 VPC에 연결해 주세요.
이제 터널을 생성해야 합니다.
Site to Site VPN 메뉴에서 터널을 생성하면 됩니다.
미리 생성한 VPG와 CGW를 잘 넣어주시고 라우팅 옵션을 static 으로 설정합니다. BGP는 지원하지 않습니다.
정적라우팅 대역을 미리 추가해 주는게 편합니다.
Local IPv4 Network Cidr 는 NCP의 대역을 넣어주셔야 합니다.
Remote IPv4 Network Cidr cidr은 AWS 의 대역입니다.
Edit Tunnel 1 Options 을 체크해서 터널 옵션을 넣어줍니다.
Pre-Shared Key for Tunnel 1 에서 key 라고 표기하지만 VPN 인증시에 사용하는 값이라 패스워드처럼 취급되기도 하므로..저는 rkskekfk 로 설정했습니다.
위 옵션은 NCP IPsec VPN의 옵션에 맞춰서 체크한 옵션입니다. 모두 체크해도 문제는 없을듯합니다.
AWS는 DPD 옵션을 ikev2에서만 지원하므로 AWS VPN 자체에서 터널을 시작하는 기능은 NCP 와의 IPsec VPN 설정에선 사용할수 없는 설정입니다. 이유는 NCP의 IPsec VPN은 ikev1만 지원하기 때문입니다.
지금 설정에선 단일터널만 사용하려기에 tunnel 1만 설정해주려 합니다.
버튼눌러서 생성후엔 NCP의 IPsec VPN을 추가해야 합니다.
NCP 콘솔로 이동해서 AWS 의 터널 IP를 이용해서 터널링을 맺어줘야 합니다.
AWS 콘솔에서 VPN Tunnel Details 를 보면 Tunnel 1 의 IP를 확인할 수 있습니다.
이 아이피로 Peer IP로 사용해 연결할겁니다.
NCP 에서 Local Network 는 NCP의 Private Subnet Cidr입니다.
Remote Network 는 172.31.0.0/16 으로 AWS 의 네트워크 입니다.
위 이미지대로 선택해주세요.
사실 설명이 필요한 부분이 좀 있는데..과감히 생략합니다.
이유는 터널시작과 터널통신은 각각 인증방식을 사용하는데 이부분이 NCP는 나누어져서 설정하고 AWS 는 같이 설정합니다....그래서 그냥 따라서 해보시고 어려우면 댓글 남겨주세요.
생성하시면 굉장히 빠른속도로 생성됩니다. 아직 터널을 개시한 상태가 아니기 때문에 inactive 로 보일겁니다. 이때 터널의 상태를 확인할수 있는 방법이 있습니다.
메뉴에서
현재 상태를 확인할 수 있습니다.
인터페이스 / 라우팅 / IPsec VPN Tunnel 상태를 확인할수 있습니다.
There are no ipsec sas
There are no IKEv1 SAs
두줄의 메시지를 확인할수 있으며, 아직 터널이 UP상태가 아니기 때문입니다.
이제 인스턴스가 필요합니다.
네트워크 인터페이스에서 서버에 인터페이스를 붙이고 아이피를 부여해주세요.
다음과 같이 글로벌 비공인 IP와 추가한 Private Subnet IP가 보입니다.
인스턴스 내부에서 인터페이스를 설정해주세요.
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=static ONBOOT=yes #Private Subnet IP로 변경해주세요. IPADDR=192.168.1.13 EOF ifup eth1
이제 라우팅을 추가해야 합니다.
ip route add 172.31.0.0/16 via 192.168.1.1 dev eth1
추가 명령어 입니다.
ip route del 172.31.0.0/16 via 192.168.1.1
라우팅을 잘못 넣게 되면 ip route del 명령어로 라우팅을 삭제할수 있습니다.
라우팅이 정상적으로 잘 연결되면 이제 AWS 에도 라우팅 테이블을 추가해야 합니다.
맨아랫 줄에 추가된 라우팅 테이블은 제일 먼저 만들었던 VGW 입니다.
이제 양방향으로 통신할 라우팅이 모두 만들어 졌고, 서로 통신할수 있도록 NCP 의 ASG와 AWS 의 SG를 열어주세요.
그리고 NCP의 인스턴스에서 ping 을 날려줍니다. AWS ikev1 은 DPD를 이용할수 없기 때문에 상태방에서 터널을 개시해야 합니다.
[root@s17596a9a6e6 ~]# ifconfig | grep inet inet 10.41.151.70 netmask 255.255.254.0 broadcast 10.41.151.255 inet 192.168.1.13 netmask 255.255.255.0 broadcast 192.168.1.255 inet 127.0.0.1 netmask 255.0.0.0 [root@s17596a9a6e6 ~]# ping 172.31.36.10 PING 172.31.36.10 (172.31.36.10) 56(84) bytes of data. 64 bytes from 172.31.36.10: icmp_seq=1 ttl=62 time=3.93 ms 64 bytes from 172.31.36.10: icmp_seq=2 ttl=62 time=3.45 ms 64 bytes from 172.31.36.10: icmp_seq=3 ttl=62 time=3.33 ms 64 bytes from 172.31.36.10: icmp_seq=4 ttl=62 time=3.44 ms
정상적으로 Site to Site VPN이 연결된것을 확인할수 있습니다.
이렇게 정상적으로 VPN이 연결 되면 AWS 콘솔에선 터널이 UP 상태가 되고,
NCP 콘솔에선 active 로 표시됩니다. 그리고 마지막으로 정상적으로 터널링이 맺어져서 통신이 되면 NCP 콘솔에서 아래와 같이 확인할수 있습니다.
KEv1 SAs: Active SA: 1 Rekey SA: 0 (A tunnel will report 1 Active and 1 Rekey SA during rekey) Total IKE SA: 1 1 IKE Peer: 3.34.211.29 Type : L2L Role : initiator Rekey : no State : MM_ACTIVE interface: outside Crypto map tag: outside_map, seq num: 1, local addr: 49.236.139.115 access-list outside_cryptomap_1 extended permit ip 192.168.1.0 255.255.255.0 172.31.0.0 255.255.0.0 local ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0) remote ident (addr/mask/prot/port): (172.31.0.0/255.255.0.0/0/0) current_peer: 3.34.211.29 #pkts encaps: 827, #pkts encrypt: 827, #pkts digest: 827 #pkts decaps: 764, #pkts decrypt: 764, #pkts verify: 764 #pkts compressed: 0, #pkts decompressed: 0 #pkts not compressed: 827, #pkts comp failed: 0, #pkts decomp failed: 0 #pre-frag successes: 0, #pre-frag failures: 0, #fragments created: 0 #PMTUs sent: 0, #PMTUs rcvd: 0, #decapsulated frgs needing reassembly: 0 #TFC rcvd: 0, #TFC sent: 0 #Valid ICMP Errors rcvd: 0, #Invalid ICMP Errors rcvd: 0 #send errors: 0, #recv errors: 0 local crypto endpt.: 49.236.139.115/0, remote crypto endpt.: 3.34.211.29/0 path mtu 1500, ipsec overhead 74(44), media mtu 1500 PMTU time remaining (sec): 0, DF policy: copy-df ICMP error validation: disabled, TFC packets: disabled current outbound spi: C7CCEEBF current inbound spi : E2B83FD5 inbound esp sas: spi: 0xE2B83FD5 (3803725781) SA State: active transform: esp-aes esp-sha-hmac no compression in use settings ={L2L, Tunnel, PFS Group 2, IKEv1, } slot: 0, conn_id: 264200192, crypto-map: outside_map sa timing: remaining key lifetime (sec): 108 IV size: 16 bytes replay detection support: Y Anti replay bitmap: 0x00000000 0x00000001 spi: 0xEED2584F (4006762575) SA State: active transform: esp-aes esp-sha-hmac no compression in use settings ={L2L, Tunnel, PFS Group 2, IKEv1, Rekeyed} slot: 0, conn_id: 264200192, crypto-map: outside_map sa timing: remaining key lifetime (sec): 0 IV size: 16 bytes replay detection support: Y Anti replay bitmap: 0x00000000 0x00000001 outbound esp sas: spi: 0xC7CCEEBF (3352096447) SA State: active transform: esp-aes esp-sha-hmac no compression in use settings ={L2L, Tunnel, PFS Group 2, IKEv1, } slot: 0, conn_id: 264200192, crypto-map: outside_map sa timing: remaining key lifetime (sec): 108 IV size: 16 bytes replay detection support: Y Anti replay bitmap: 0x00000000 0x00000001 spi: 0xC47BC9E1 (3296446945) SA State: active transform: esp-aes esp-sha-hmac no compression in use settings ={L2L, Tunnel, PFS Group 2, IKEv1, Rekeyed} slot: 0, conn_id: 264200192, crypto-map: outside_map sa timing: remaining key lifetime (sec): 0 IV size: 16 bytes replay detection support: Y Anti replay bitmap: 0x00000000 0x00000001
이 포스팅은 과정 자체만 설명하고 자세한 프로토콜이나, 인증방식은 설명하지 않았습니다.
사용자의 레벨에서 따라만 해도 VPN 터널링이 가능한 수준의 포스팅을 하려했으나, VPN이 조금 난이도가 있는거 같습니다.
진행하다가 궁금하신 부분은 댓글남겨주세요.
읽어주셔서 감사합니다.
위 방법대로 했는데, NCP VM->AWS EC2로 ICMP 통신이 안됩니다..ㅠㅠ
보안그룹이 열려있나요? 라우팅은 재대로 들어갔나요? 터널상태를 모니터링하면서 설정해야합니다.
그냥따라해선 터널이 up 되진않습니다..
그렇군요...혹시 유선으로 통화하면서 여쭤봐도 되나요?
5시간째 헤매고 있습니다ㅠㅠ
오픈카톡으로 오셔서 질문하셔도 좋습니다.
보안그룹, 라우팅 모두 설정하였는데요
터널 상태를 모니터링하면서 설정하라는 말씀을 이해하지 못했습니다.
NCP VM eth1 인터페이스 Up 말씀이신가요??
vpn 인터페이스의 터널상태를 확인해야 합니다.
터널 상태를 모니터링하면서 설정하라는 의미를 이해하지 못했습니다 ㅠㅠ
이메일 알려주시면 거기로 연락드려도 괜찮을까요??
https://open.kakao.com/o/gMCqYXxb
이리로 오시면 제가 항상 대화하고있습니다.
안녕하세요 혹시 오픈채팅방에 참여해도 될지 여쭤봅니다
언제나 가능합니다!
감사합니다 🙂
해당 URL로 접속 해볼려고 했더니
참여코드 입력하라고 하네요
제 메일이나 답글로 참여코드 공유해주시면 감사하겠습니다 🙂
문서 그대로 따라했는데 안되네요........ㅠㅠ
안녕하세요~
오픈채팅방 들어가고싶은데 메일주소나 댓글로 참여 코드를 알수 있을까요?
(gramyong@gmail.com)
참여코드 공유 부탁드리는 댓글을 적었는데 왜 사라진지 모르겠네요 ㅠㅠ
카카오톡 오픈채팅을 시작해 보세요.
링크를 선택하면 카카오톡이 실행됩니다.
IT다봐요 IT 자격증 PublicCloud K8S
https://open.kakao.com/o/gMCqYXxb
참여코드 1820 이에요!