클라우드

AWS Client VPN으로 안전하게 VPC에 연결하기

CloudFullStack 2025. 4. 9. 05:00

VPC 설정

먼저 VPC부터 설정해봅시다. 

아래 표에 있는 정보대로 세팅하면 됩니다. 가용 구역은 1개만 설정합니다.

만약, nat를 없애야 한다면 그렇게 해도 됩니다.

VPC IPv4 CIDR 블록 10.101.0.0/16
Public 서브넷 CIDR 10.101.1.0/24
Private 서브넷 CIDR 10.101.10.0/24

Private EC2 설정

먼저 KeyPair를 만듭니다.

이제 Security Group을 만들어보자.

기본적으로 Outbound Rule은 All traffic anyopen 합니다.

- Public SG

- Private SG

프라이빗 서브넷은 VPN CIDR 대역까지 오픈해줍니다.

 

- 인스턴스 생성

Pub, Priv 서브넷에 각각 인스턴스를 생성합니다. 이 부분은 스킵합니다.

 

Client VPN 설정

윈도우 환경에 있다면 bastion 리소스에서 작업합니다. 본 글에서는 MacOS / Linux 기준으로 설명할 예정입니다.

EasyRSA를 이용해서 ACM(Amazon Certificate Manager) 키를 생성할 예정입니다.

아래 명령어를 변수를 수정한 채로 실행하면 됩니다. 코드 블럭별로 실행해주세요.

도메인은 꼭 client.dns일 필요는 없습니다. 원하는 걸로 바꿔주세요. 중간에 나오는건 모두 yes 하면 됩니다.

git clone https://github.com/OpenVPN/easy-rsa.git
cd easy-rsa/easyrsa3
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa build-server-full server nopass
./easyrsa build-client-full client.dns nopass
mkdir ~/certs_files/
cp pki/ca.crt ~/certs_files/
cp pki/issued/server.crt ~/certs_files/
cp pki/private/server.key ~/certs_files/
cp pki/issued/client.dns.crt ~/certs_files
cp pki/private/client.dns.key ~/certs_files/
cd ~/certs_files/
aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt
aws acm import-certificate --certificate fileb://client.dns.crt --private-key fileb://client.dns.key --certificate-chain fileb://ca.crt

 

명령어가 모두 잘 실행되었다면, AWS ACM에 접속하도록 합시다.

ACM에 아래와 같이 인증서 2개가 잘 뜬다면, 정상적으로 진행한 것입니다.

 

이제 VPN > 클라이언트 VPN 엔드포인트로 접속합니다.

기본적으로 VPN의 IPv4 CIDR은 100.64.0.0/10으로 하지만, 이번에는 마스크를 16으로 두도록 하겠습니다.

- 인증 정보는 상호 인증 사용으로 하고, 서버와 클라이언트 인증서를 각각 매핑해줍니다.

만약, 서버 인증서에서 server가 뜨지 않는다면 서버 인증서를 처음부터 만들면 됩니다. 이 때, server가 아닌 server.awsmap 등의 존재하지 않는 tld로 바꾸어야 합니다.

 

이제부터 중요합니다.

아까 설정해준 VPC의 서브넷을 Primary DNS로 설정합니다. 단, 맨 끝은 2로 해야합니다.

엔드포인트를 생성한 후, 대상 네트워크 연결에서 아래와 같이 private subnet을 연결해줍니다.

그 후, 권한 부여 규칙 탭에서 아래와 같이 설정해줍니다.

필자의 경우 모든 사용자가 전체 VPC 대역을 이용할 수 있도록 하였지만, 이 설정은 원하는 대로 설정해도 됩니다.

이제, 클라이언트 구성 다운로드 버튼을 눌러 설정 파일을 다운로드합니다.

 

다운로드한 파일을 VSCode로 열고 내용들을 추가해줍니다.

위 내용처럼 잘 구성되었는지 확인합니다.

VSCode를 끄고, AWS VPN Client를 열어줍니다.

프로필까지 추가해줍니다.

연결 버튼을 누르면 아래와 같이 잘 연결된 것을 볼 수 있습니다.