이두잉의 AWS 세상

AWS VPC/VPN(Openswan) 연동

2016.01.14 15:08 - leedoing leedoing

안녕하세요. 이두잉입니다.

금일은 VPC에서 VPN 연동 관련 블로깅 하겠습니다.

기본적인 AWS 사용 방법 및 VPC 구성에 대해서는 사전에 숙지하셔야 합니다.


1. Overview

AWS의 IPsec VPN 서비스인 VGW(Virtual Gateway Service)을 통해 AWS와 On-premise 간 터널링 통신을 구현하도록 하겠습니다.

On-premise VPN 환경은 Openswan으로 구성하도록 하겠습니다. 사내 어플라이언스가 있으면 해당 장비로 테스트하시기 바랍니다.

보안 알고리즘은 aes-256 / sha_2-256를 지원합니다. (암호화 방식 참고 - http://blog.kindler.io/archives/121)

VGW의 터널링은 IPsec 방식으로 SSL은 지원하지 않습니다. (IPsec/SSL 참고 - http://blog.daum.net/haionnet/705)


2. Getting Started

1. AWS 상에서 가상의 On-premise 환경 구성(Tokyo Region / Openswan 설치) - 실제 IDC 환경과 VPN 장비 구성 시에는 생략

2. AWS VGW 환경 구성(Virginia Region)

3. On-premise 환경 VPN 구축 및 실행(Tokyo Region / Openswan)

4. On-premise / AWS VGW 환경 Routing Table 수정

5. IPsec Tunnel을 통해 On-premise / AWS Private 구간 Ping 테스트

6. iperf3 Tool을 이용하여 On-premise / AWS Private 구간 성능 측정


1. AWS 상에서 가상의 On-premise 환경 구성(Tokyo Region / Openswan) - VPC 생성

- Tokyo Region의 VPC Console에서 Start VPC Wizard 선택

- 두 번째 구성인 Public Subnet / Private Subnet 선택


- IP CIRD Block : VPC 대역

- VPC name : VPC 이름

- Public subnet : Public으로 사용할 Subnet 대역 구성

- Availability Zone : Public subnet이 구성될 AZ

- Public subnet name : Public subnet 이름

- Private subnet : Private으로 사용할 subnet 대역 구성

- Availability Zone : Private subnet이 구성될 AZ

- Private subnet name : Private subnet 이름


Specify the details of your NAT instance(Private outbound 통신을 위한 NAT 인스턴스)

- Instance type : NAT instance의 type

- Key pair name : Key pair

NAT Instance에 자동적으로 Elastic IP가 할당되기 때문에 EIP Limit에 걸리지 않도록 한다.

만약 EIP가 부족할 경우 해당 feature의 VPC는 생성 도중 Rollback 된다.


Add endpoints for S3 to your subnets(Public / Private / Public or Private 선택 가능)

- Subnet : VPC 내에서 S3 접근 가능하도록 지정


- Enable DNS hostnames : VPC 내에 Instance에 DNS hostnames 선택 유무

- Hardware tenancy : VPC 내 Instance를 공유 혹은 단일 선택할 수 있음(dedicated 선택 시 비용 증가)


1. AWS 상에서 가상의 On-premise 환경 구성(Tokyo Region / Openswan) – EC2 Instance 생성

- EC2 Instance Console로 돌아오면 NAT Instance가 생성되어 있음(VPN_NAT)

- On-premise VPC Gateway로 사용될 EC2 Instance를 구성한 Public Subnet에 생성(VPN_Openswan_ec2), 선택 

Actions ->Networking -> Change Src/Dst- >Disable

- Private 테스트를 위해서 EC2 Instance를 구성한 Private Subnet에 생성(VPN_Private_ec2)

- 테스트 목적으로 Security Group은 All open 구성


1. AWS 상에서 가상의 On-premise 환경 구성(Tokyo Region / Openswan) – Openswan 설치

- $yum update

- $vim /etc/sysctl.conf에서 Gateway 설정을 위해 net.ipv4.ip_forward=0을 1로 변경 후 저장

- 변경 사항 확인을 위해 sysctl –p /etc/sysctl.conf 입력


- Openswan 설치 : yum install –y openswan

- IPsec에서 Openswan 설정 파일을 포함하기 위해 /etc/ipsec.conf 파일 편집

- #include /etc/ipsec.d/*.conf 에서 주석 제거


1. AWS 상에서 가상의 On-premise 환경 구성(Tokyo Region / Openswan) – Openswan 설정

$vim /etc/ipsec.d/tunnel.conf

conn  tunnel_virginia

        type=tunnel

        authby=secret

        left=%defaultroute

        leftid=54.249.1.47               #Source(Openswan) EIP

        leftnexthop=%defaultroute          

        leftsubnet=10.1.0.0/16         #Source VPC CIRD

        right=52.1.49.108               #Target Tunnel IP

        rightsubnet=10.0.0.0/16       #Target VPC CIRD      

        pfs=yes

        ike=aes256-sha1;modp1024! #default : AES_CBC_128-SHA1-MODP2048

        phase2alg=aes256-sha2_256;modp1024 #default : 

        auto=start


$vim /etc/ipsec.d/tunnel.secrets
54.249.1.47       52.1.49.108: PSK "hdK24BKv5hXRA3U_7cp6vG3tNxtDNGFe“
Oepnswan EIP   Target Tunnel IP : PSK  “Pre-Shared Key”

Target 설정의 경우 On-premise(Tokyo Region)에서 VPN 연결될 AWS Virginia Region 설정 후에 입력

2. AWS VGW 환경 구성(Virginia Region) – 사전 구성 및 Virtual Private Gateways 생성

- 사전 구성인 Step 1과 동일하게 VPC 및 Security Group 환경 구성 및 Public과 Private에 EC2 Instance를 생성

- VGW를 이용하기 때문에 VPN(Openswan) 설치는 필요 없음

- VPC Console -> VPN Connections에서 VGW(Virtual Private Gateways) 선택

- VGW 생성 후에 Attach to VPC로 테스트를 위해 생성한 VPC에 Attach 한다


2. AWS VGW 환경 구성(Virginia Region) – VPN Connections(IPsec Tunnel) 생성

- Name Tag : VPN Connections 이름

- Virtual Private Gateway : 생성한 VPW와 매핑


해당 Feature에서 Customer Gateways 생성 가능

- Customer Gateway : 생성한 Customer Gateways가 없기 때문에 New 선택

- IP Address : 생성한 Tokyo Region의 Openswan 혹은 VPN 장비 EIP 등록

- BGP ASN : BGP Protocol(Reserved for Private Use)

- Routing Options : Static 선택

BGP를 지원하는 VPN 장비라면 Dynamic 선택, BGP 지원 시 VPN Tunnel을 자동적으로 모니터링 하기 때문에 Tunnel A, 장애 시 Tunnel B로 자동 Failover

- Static IP Perfixes : Static 선택 시 VPN Target이 되는 대역 입력


2. AWS VGW 환경 구성(Virginia Region) – VPN Connections(IPsec Tunnel) Configuration 확인 및 재설정

- VPN 장비에 맞는 Conf 입력 후 Donwload

- Configuration 항목에는 암호화 : aes128 / 무결성 : sha1로 기입되어 있으나, 2015.10.27 업데이트로 암호화 : aes256 / 무결성 : sha2_256도 사용 가능

- vpn-xxx.txt Configure 파일에는 두 가지의 Tunnel 정보가 존재

- 해당 내용으로 앞서 설정한 /etc/ipsec.d/tunnel.conf와 /etc/ipsec.d/tunnel.secret  파일을 수정한다. (Tunnel IP / Pre-Shared Key)


3.  On-premise 환경 VPN 구축 및 실행 (Tokyo Region / Openswan)


4. On-premise / AWS VGW 환경 Routing table 수정

- On-premise(Tokyo Region) Private Subnet Route Tables에서 Target 대역의 Routing에 Openswan 입력

- AWS VGW Private Subnet Route Table에서 Source 대역의 Routing에 생성한 vgw 입력


5. IPsec Tunnel을 통해 On-premise / AWS Private 구간 Ping 테스트

- NAT Instance를 통해서 각각 Private 환경 접속

- $chmod 600 key.pem

- $ssh -v -i key.pem ec2-user@domain(IP)

- On-premise Private 10.1.0.0 대역에서 AWS Private 10.0.0.0 대역 Ping


6.  iperf3 Tool을 이용하여 On-premise / AWS Private 구간 성능 측정

- On-premise(Tokyo Region) / AWS(Virginia Region) Private Instance에 각각 iperf3 설치

- $yum -enablerepo=epel install iperf iperf3

- Private 환경 On-premise(Tokyo Region) Instance를 Server로 AWS(Virginia Region) Instance를 Client 기준으로 수행

- On-premise Instance : iperf3 –s –p 80

- AWS : iperf3 –c Private IP –l 1 –t 60 –V –p 80

- On-premise(Tokyo Region) <-> AWS(Virginia Region) VPN 구성 시 Bandwidth 50Mbps 수준


3. Result

Korea 리전이 생기기 전 테스트로 국내 테스트 결과가 없어 아쉬움이 남네요. 추후 국내 테스트도 실시하여 결과를 확인해보도록 하겠습니다. 혹시 테스트 결과가 나오신 분은 리플 좀 부탁드려요. 저도 궁금하네요.

이상 AWS VGW <-> IDC(VPN Openswan) 관련 블로깅이었습니다.


저작자 표시
신고

'Networking > VPC' 카테고리의 다른 글

AWS VPC FLOW LOGS  (0) 2017.11.24
AWS VPC Security Group ID 포워딩  (0) 2016.11.03
AWS VPC/VPN(Openswan) 연동  (1) 2016.01.14