AWS VPN (Site To Site VPN) 설정 실습 하기 - (1) [AWS 설정]

Jaewoong2·2024년 6월 1일

미리 설정 해야 하는 것

  • VPC 및 서브넷 / EC2 생성

가상 사설 네트워크(VPN 탭)

가상 프라이빗 게이트웨이 생성 및 VPC 연결

📖 **가상 프라이빗 게이트웨이란?**

가상 프라이빗 게이트웨이는 Site-to-Site VPN 연결의 Amazon 측에 있는 VPN 집선기입니다.

가상 프라이빗 게이트웨이를 생성하여 Site-to-Site VPN 연결에 액세스해야 하는 리소스가 포함된 Virtual Private Cloud(VPC)에 연결합니다.

즉, 외부에서 VPN 연결을 통해 AWS VPC 에 접근 할 수 있도록 하는 게이트웨이를 만드는 것을 의미 합니다.

출처: https://docs.aws.amazon.com/ko_kr/vpn/latest/s2svpn/images/vpn-how-it-works-vgw.png

❗ **가상 프라이빗 게이트웨이 생성하기**

  1. 이미지와 같이 가상 사설 네트워크 탭에 있는 가상 프라이빗 게이트 웨이 생성 하는 버튼을 클릭 합니다.

  1. 세부정보를 입력 합니다. 저는 여기서 virtual-private-gateway 라고 작성 하겠습니다.

  1. 단순히 게이트웨이만 생성 하기 때문에 게이트웨이를 통해 연결 될 수 있는 VPC 를 결정 해줘야 합니다.

  1. 외부에서 VPN 을 통해 접속 허용할 VPC 를 선택하고 VPC에 연결을 클릭 합니다.

이렇게 함으로써 가상 프라이빗 게이트웨이와 연결되는 통신은 연결된 pirvate-vpc 와 연결되어 있습니다.

고객 게이트웨이 생성

📖 **고객 게이트웨이란?**

고객 게이트웨이 (CGW) 는 온프레미스 네트워크의 고객 게이트웨이 디바이스를 나타내는 AWS에서 생성하는 리소스입니다.

즉, 외부의 On-premises 네트워크 로 부터 들어오는 AWS내 게이트웨이를 의미 합니다.

출처: https://docs.aws.amazon.com/ko_kr/vpn/latest/s2svpn/images/vpn-how-it-works-cgw.png

❗ **고객 게이트웨이 생성하기**

  1. 이미지와 같이 고객 게이트웨이 생성 버튼을 클릭 합니다.

  1. 고객 게이트웨이 생성 버튼을 누르면 위와 같은 이미지가 나오는데 여기서 주의 할점은 IP 주소에 외부로 부터 들어오는 IP주소를 입력 하는 것 입니다. IP 값으로 될 수 있는 것은 아래와 같습니다.
    • 온프레미스 네트워크 의 공인 IP
    • 온프레미스 네트워크 의 NAT IP

여기서는 다음 게시글에서 작성할 OpenSwan 을 통한 서버(온프레미스)의 공인 IP를 값으로 작성 하도록 하겠습니다.

다른 옵션들은 상황에 맞게 작성 하시면 됩니다.

  • BGP(Border Gateway Protocol) ASN(자율 시스템 번호): (동적 라우팅만 해당) 고객 게이트웨이 디바이스에서 Border Gateway Protocol(BGP)을 지원할 경우 Site-to-Site VPN 연결을 구성할 때 동적 라우팅을 지정합니다. 고객 게이트웨이 디바이스가 BGP를 지원하지 않는 경우 정적 라우팅을 지정합니다.
  • 인증서 ARN: ACM 을 사용하는 하위 CA의 사설 인증서 인증서 기반 인증을 사용하려면 고객 게이트웨이 디바이스에 사용할 ACM 사설 인증서의 ARN을 제공합니다. 고객 게이트웨이를 만들 때 AWS Private Certificate Authority 프라이빗 인증서를 사용하여 Site-to-Site VPN을 인증하도록 고객 게이트웨이를 구성할 수 있습니다.

위와 같이 고객 게이트웨이를 생성 하면 됩니다.

Site-To-Site VPN 연결

📖 **Site-To-Site VPN 란?**

기본적으로 Amazon VPC로 시작하는 인스턴스는 자체(원격) 네트워크와 통신할 수 없습니다.

Site-to-Site VPN(Site-to-Site VPN)을 통해 VPC에서 원격 네트워크에 대한 액세스를 활성화할 수 있습니다.

방금 생성한 고객 게이트웨이 및 가상 프라이빗 게이트웨이 를 통해 AWS VPC 와 온프레미스 네트워크간 VPN 연결을 할 수 있습니다.

❗ **가상 프라이빗 게이트웨이 생성하기**

  1. Site-to-Site VPN 탭에서 VPN 연결 생성 버튼을 클릭 합니다.

  1. 가상 프라이빗 게이트웨이는 이전에 생성한 값을 선택, 고객 게이트웨이 또한 이전에 생성한 값을 선택 합니다.
  2. 정적 IP 접두사 의 경우 *외부 온프레미스 네트워크의 사설 IP 대역* 을 입력 해주면 됩니다.

  1. 옵션 을 클릭 하게 되면 이미지와 같이 터널의 내부 CIDR 과 사전 공유키 암호화 알고리즘을 결정 할 수 있습니다. 네트워크 통신 정책에 맞게 알고리즘을 선택 해서 생성 하시면 됩니다.

  1. Site-To-Site VPN 연결을 생성 및 클릭 하면 구성 다운로드 라는 버튼이 생깁니다. 구성 다운로드 버튼을 클릭하면 아래와 같이 팝업이 나옵니다.

  1. 이 정보는 고객 온프레미스의 디바이스 정보들을 입력 하는 값 입니다. 외부 온프레미스 정보들을 통해 해당 값들을 채우고 다운로드를 받으면 아래와 같은 정보가 나옵니다.

============================중략============================

--------------------------------------------------------------------------------------------------------------------
IPSEC Tunnel #1
--------------------------------------------------------------------------------------------------------------------

This configuration assumes that you already have a default openswan installation in place on the Amazon Linux operating system (but may also work with other distros as well)

1) Open /etc/sysctl.conf and ensure that its values match the following:
   net.ipv4.ip_forward = 1
   net.ipv4.conf.default.rp_filter = 0
   net.ipv4.conf.default.accept_source_route = 0

2) Apply the changes in step 1 by executing the command 'sysctl -p'

3) Open /etc/ipsec.conf and look for the line below. Ensure that the # in front of the line has been removed, then save and exit the file.
    #include /etc/ipsec.d/*.conf

4) Create a new file at /etc/ipsec.d/aws.conf if doesn't already exist, and then open it. Append the following configuration to the end in the file:
 #leftsubnet= is the local network behind your openswan server, and you will need to replace the <LOCAL NETWORK> below with this value (don't include the brackets). If you have multiple subnets, you can use 0.0.0.0/0 instead.
 #rightsubnet= is the remote network on the other side of your VPN tunnel that you wish to have connectivity with, and you will need to replace <REMOTE NETWORK> with this value (don't include brackets).

conn Tunnel1
	authby=secret
	auto=start
	left=%defaultroute
	leftid=223.130.160.187 # 고객 Public IP 주소
	right=13.125.8.252 # 터널 1의 접근 외부IP 주소 
	type=tunnel
	ikelifetime=8h
	keylife=1h
	phase2alg=aes128-sha1;modp1024
	ike=aes128-sha1;modp1024
	auth=esp
	keyingtries=%forever
	keyexchange=ike
	leftsubnet=<LOCAL NETWORK>  # 온프레미스 서버의 Private IP CIDR 여기서는 10.1.0.0/16 
	rightsubnet=<REMOTE NETWORK> # AWS VPC의 서브넷 및 VPC IP CIDR 여기서는 10.3.2.0/24
	dpddelay=10
	dpdtimeout=30
	dpdaction=restart_by_peer

5) Create a new file at /etc/ipsec.d/aws.secrets if it doesn't already exist, and append this line to the file (be mindful of the spacing!):
223.130.160.187 13.125.8.252: PSK "TC82j8r3ZKKNZkC0KcJ_GkpbNC8_vYrl"
 
 
============================중략============================

해당 정보는 온프레미스 서버에서 설정 값으로 설정 할 내용들이 담겨져 있으며, 해당 구성 정보를 온프레미스 측에 전달하여 ipsec 설정을 할 수 있도록 설정 합니다.

아직, 온프레미스 측에서 VPN 설정 작업을 하지 않았기 때문에 위와 같이 아래로 (DOWN) 상태로 확인 됩니다.

온프레미스 측에서 VPN 설정을 완료 하면 상태가 올라 온 것을 확인 할 수 있습니다.

라우팅 테이블 / 보안그룹 설정 하기

VPN 이 연결 되어 있지만, 서브넷의 라우팅 테이블에서 연결을 막을 수 있습니다. 이에 따라서 연결을 설정 해줘야 합니다.

또한, 리소스와 연결된 보안그룹이 IP 접근을 막을 수 있기 때문에 이에 대해 보안그룹을 설정 해줘야 합니다.

❗ 라우팅 테이블 설정 하기

  1. 라우팅 편집 클릭을 클릭하여 (Source)온프레미스 네트워크의 IP가상 프라이빗 게이트웨이 로 갈 수 있도록 라우팅 테이블 설정 합니다.

  1. 보안그룹의 인바운드 규칙 편집을 클릭하여 (Source)온프레미스 네트워크의 IP가상 프라이빗 게이트웨이 로 갈 수 있도록 보안그룹을 설정 합니다.

보안그룹 및 라우팅 테이블 설정을 하면 외부 온프레미스로 부터 AWS 내 Private VPC/Subnet 에 접근 할 수 있습니다.


다음글 보러가기: https://velog.io/@jwisgenius/AWS-VPN-Site-To-Site-VPN-설정-실습-하기-2-온프레미스-설정

profile
DFF (Development For Fun)

0개의 댓글