CloudBackend
AWS Client VPN으로 안전하게 VPC에 연결하기 본문
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를 열어줍니다.
프로필까지 추가해줍니다.
연결 버튼을 누르면 아래와 같이 잘 연결된 것을 볼 수 있습니다.
'클라우드' 카테고리의 다른 글
[AWS] EKS KEDA 구성하기 (0) | 2025.04.09 |
---|---|
Docker permission denied 오류 해결하기 (0) | 2025.01.14 |
[Oracle Cloud] WARNING: UNPROTECTED PRIVATE KEY FILE! 문제 해결하기 (2) | 2024.10.22 |