VPN이란?

VPN(Virtual Private Network)은 인터넷으로 연결된 두개의 다른 네트워크에 있는 호스트들 간의 통신을 암호화된 연결방식으로 전송해서 마치 동일한 네트워크에 있는것처럼 안전한 통신을 할수있게 해줍니다.

일반적으로 AWS환경에 있는 VPC와 On-premise 데이터센터간의 통신이 필요 시 AWS Site-to-Site VPN을 이용하여 쉽고 안전하게 연결할 수 있습니다. AWS Direct Connect를 이용해서 AWS Network와 On-premise 데이터 센터를 물리적으로 연결하는 방법도 존재하나 비용이 상당히 요구된다.

이번 포스팅에서는 Openswan을 이용한 AWS Site-to-Site VPN을 테스트 해보겠습니다.

아키텍처

해당 과정에서 public subnet으로 설정했어도 private ip로는 접근이 안되므로 편의상 public으로  두었으며, CGW를 생성하는 과정에 public IP를 지정해주어야 하기때문에 public ec2 2대를 생성하여 테스트 , CGW용으로 사용할것이다.

기본 구성 

1. vpc 생성

2. IGW 생성

VPC랑 연결해야함

3. 서브넷 생성

4. RT 생성 및 등록

모든 서브넷은 public으로 편의상 두었으며 ping테스트 시 해당 서버의 private으로 테스트 하면되기때문에 상관없다.     또한, CGW를 생성하기 위해서는 On-premise쪽은 public ip가 필요하다

5. 인스턴스 생성                                                                                                      

 

VGW(가상 프라이빗 게이트웨이)

VPC Service로 이동하여 좌측 하단 VGW생성

위에서 생성한 AWS-VPC와 연결

CGW(customer-gateway)

동일하게 VPC service를 통하여 접근

Onprem-vpn 인스턴스의 public IP를 지정해준다.

VPN생성

VPC service의 Site-to-Site VPN을 통해 생성

On-premise에서 설정한 vpn 설정 파일 다운

Openswan 설정 및 테스트

sudo yum -y install openswan
<openswan 설정 파일 생성>
sudo vi /etc/ipsec.d/aws.conf

conn Tunnel1
	authby=secret
	auto=start
	left=%defaultroute
	leftid=15.165.235.204   #customer gateway IP
	right=3.34.64.185       #AWS VPN Tunnel 1 IP
	type=tunnel
	ikelifetime=8h
	keylife=1h
	phase2alg=aes128-sha1;modp1024
	ike=aes128-sha1;modp1024
	keyingtries=%forever
	keyexchange=ike 
	leftsubnet=<LOCAL NETWORK> #On-premise VPC
	rightsubnet=<REMOTE NETWORK>  #AWs VPC
	dpddelay=10
	dpdtimeout=30
	dpdaction=restart_by_peer
    overlapip=yes


conn Tunnel2
	authby=secret
	auto=start
	left=%defaultroute
	leftid=15.165.235.204    #Customer gateway ip
	right=52.79.137.110      #aws vpn tunnel ip
	type=tunnel
	ikelifetime=8h
	keylife=1h
	phase2alg=aes128-sha1;modp1024
	ike=aes128-sha1;modp1024
	keyingtries=%forever
	keyexchange=ike
	leftsubnet=<LOCAL NETWORK>   #On-premise VPC
	rightsubnet=<REMOTE NETWORK> #AWS VPC
	dpddelay=10
	dpdtimeout=30
	dpdaction=restart_by_peer
    overlapip=yes -> 다중 터널시 cgw의 ip중복허용
  
  
sudo vi /etc/ipsec.d/aws.secrets
<CUSTOMER_GATEWAY_IP> <TUNNEL1_IP>: PSK "<TUNNEL1 PSK>"
<CUSTOMER_GATEWAY_IP> <TUNNEL2_IP>: PSK "<TUNNEL2 PSK>"
> 해당 정보는 다운받은 파일에서 확인가능합니다.

<ip forward 설정>
sudo vi /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0

<서비스 시작>
sudo service network restart
sudo service ipsec restart

 

설정 확인 및 동작

위에서 설정이 정상적일시 다음과 같이 vpn tunnel 작동 확인

라우팅 수정

On-premise 라우팅 설정 CGW를 통해서 대상으로 간다.
AWS측 라우팅 설정 Vgw를 통해서 나간다.

보안그룹 설정

CGW로 사용중인 VPN인스턴스에 대한 Inbound
On-premise ec2에 대한 Inbound
AWS ec2에 대한 Inbound

동작 확인 - ping 통신

On-premise -> AWS
AWS -> On-premise

 

'aws' 카테고리의 다른 글

Elastisearch 를 사용 VPC FLOWLOGS  (0) 2021.03.29
CloudWatch / SSM Agent  (0) 2021.03.29
lb -acm 인증서를 이용한 접속  (0) 2021.02.09
route 53 도메인 연결  (0) 2021.02.09
RDS-multi AZ/RR 구성 실습  (0) 2021.02.03

+ Recent posts