VPC
에 대해 VPN
을 만들고 싶다면 Client VPN
을 이용합니다.AWS Client VPN에서는 시간당 활성 클라이언트 연결 수와 시간당 Client VPN과 연결된 서브넷 수에 대해 요금이 청구됩니다.
자세한 사항은 AWS Client VPN 비용을 참고하세요.
AWS 공식 문서 - Client VPN 시작하기를 참고하여 작성되었습니다.
OpenVPN 사이트에 들어가서 자신의 로컬과 맞는 운영체제로 프로그램을 설치합니다.
easy-rsa 사이트에 들어가서 자신의 로컬과 맞는 운영체제로 압축 파일을 다운로드 받습니다.
압축을 풀고 OpenVPN
폴더 아래로 옮깁니다.(C:\Program Files\OpenVPN
)
easy-rsa
폴더로 이동해 easy-rsa
를 실행합니다.% cd 'C:\Program Files\OpenVPN\EasyRSA-3.1.0-win64\EasyRSA-3.1.0'
% .\EasyRSA-Start
# 새로운 pki 환경 구성
% ./easyrsa init-pki
# CA 생성
% ./easyrsa build-ca nopass
# 서버 인증서와 키 생성
% ./easyrsa build-server-full server nopass
# 사용자별 클라이언트 인증서와 키 생성
% ./easyrsa build-client-full client1.domain.tld nopass
# 종료
% exit
% mkdir 'C:\Program Files\OpenVPN\EasyRSA-3.1.0-win64\client-vpn'
% copy pki\ca.crt 'C:\Program Files\OpenVPN\EasyRSA-3.1.0-win64\client-vpn'
% copy pki\issued\server.crt 'C:\Program Files\OpenVPN\EasyRSA-3.1.0-win64\client-vpn'
% copy pki\private\server.key 'C:\Program Files\OpenVPN\EasyRSA-3.1.0-win64\client-vpn'
% copy pki\issued\client1.domain.tld.crt 'C:\Program Files\OpenVPN\EasyRSA-3.1.0-win64\client-vpn'
% copy pki\private\client1.domain.tld.key 'C:\Program Files\OpenVPN\EasyRSA-3.1.0-win64\client-vpn'
AWS Certificate Manager 콘솔 > 인증서 가져오기
복사해둔 키들을 메모장으로 연 후 값들을 넣어줍니다.
인증서 | 파일 |
---|---|
인증서 본문 | server.crt |
인증서 프라이빗 키 | server.key |
인증서 체인 | ca.crt |
서버 인증서
가 성공적으로 가져와졌습니다.
마찬가지로 클라이언트 인증서
도 가져옵니다.
인증서 | 파일 |
---|---|
인증서 본문 | client1.domain.tld.crt |
인증서 프라이빗 키 | client1.domain.tld.key |
인증서 체인 | ca.crt |
VPC 콘솔 > 클라이언트 VPN 엔드포인트
> 클라이언트 VPN 엔드포인트 생성
클라이언트 IPv4 CIDR
에서 클라이언트 IP 주소를 할당할 IP 주소 범위(CIDR 표기법)를 지정합니다.
참고
주소 범위는 Client VPN 엔드포인트와 연결될 대상 네트워크 주소 범위, VPC 주소 범위 또는 경로와 중복될 수 없습니다. 클라이언트 주소 범위는최소 /22 이상
이어야 하며 /12 CIDR 블록 크기를 넘지 않아야 합니다. Client VPN 엔드포인트를 생성한 후에는 클라이언트 주소 범위를 변경할 수 없습니다.
서버 인증서 ARN
에서 1단계에서 생성한 서버 인증서의 ARN을 선택합니다.인증 방법
은 상호 인증
을 사용합니다.클라이언트 인증서 ARN
에서 역시 1단계에서 생성한 클라이언트 인증서의 ARN을 선택합니다.참고
서버 인증서와 클라이언트 인증서가 동일한 인증 기관(CA)에 의해 발급된 경우 서버 인증서 ARN을 서버 인증서와 클라이언트 인증서 모두에 지정할 수 있습니다.
인터넷에 액세스하고 싶다면 DNS 서버 1 IP 주소
에 8.8.8.8
을 지정합니다.
클라이언트 VPN 엔드포인트 생성
을 선택합니다.나머지 항목에 대한 자세한 사항은 AWS 공식 문서 - Client VPN 엔드포인트를 참고하세요.
대상 네트워크
를 Client VPN 엔드포인트
와 연결합니다.
대상 네트워크는 VPC 안의 서브넷입니다.
이전 절차에서 생성한 Client VPN 엔드포인트를 선택 > 대상 네트워크 연결
, 대상 네트워크 연결
연결할 VPC
와 서브넷
을 선택합니다.
첫 번째 서브넷
을 Client VPN 엔드포인트
와 연결하면 다음과 같은 결과가 발생합니다.
Client VPN 엔드포인트
의 상태가 available
로 변경됩니다. 이제 클라이언트가 VPN 연결을 설정할 수 있지만, 권한 부여 규칙을 추가할 때까지는 VPC 내 리소스에 액세스할 수 없습니다.VPC의 로컬 라우팅
이 Client VPN 엔드포인트 라우팅 테이블에 자동으로 추가됩니다.VPC의 기본 보안 그룹
이 자동으로 Client VPN 엔드포인트에 적용
됩니다.클라이언트가 VPC 내 리소스에 액세스할 수 있으려면 VPN에 권한 부여 규칙
을 추가해주어야 합니다.
권한 부여 규칙
> 권한 부여 규칙 추가
액세스를 활성화할 대상 네트워크
에 액세스를 허용할 네트워크의 CIDR을 입력합니다. 예를 들어, 전체 VPC에 대한 액세스를 허용하려면 VPC의 IPv4 CIDR 블록
을 지정합니다.모든 사용자에게 액세스 허용
을 선택해서 모든 사용자가 접근할 수 있도록 합니다.해당 VPN에 라우팅 테이블
을 통해 경로를 생성
하면, AWS 서비스, 피어링된 VPC, 온프레미스 네트워크, 인터넷 등 VPC에 연결된 추가 네트워크에 대한 액세스를 제공할 수 있습니다. 아래에선 인터넷(0.0.0.0/0
)에 대한 액세스를 구성해 보겠습니다.
이전 절차에서 생성한 Client VPN 엔드포인트를 선택 > 라우팅 테이블
> 경로 생성
경로 대상
에 0.0.0.0/0
을 입력합니다. 대상 네트워크 연결을 위한 서브넷 ID
에서 트래픽을 라우팅할 서브넷의 ID를 입력합니다. local
은 현재 클라이언트 VPN 엔드포인트에 연결된 서브넷을 나타냅니다.
권한 부여 규칙
> 권한 부여 규칙 추가
를 선택합니다.
액세스를 활성화할 대상 네트워크
에 0.0.0.0/0
을 입력하고 모든 사용자에게 액세스 허용
을 선택합니다.
앞서 액세스를 허용한 네트워크들에 대한 보안 그룹 설정을 확인합니다.
트래픽을 라우팅하는 서브넷과 연결된 보안 그룹(이 경우 기본 VPC 보안 그룹)이 인터넷으로의 아웃바운드 트래픽을 허용합니다. 이렇게 하려면 대상 0.0.0.0/0에 대한 모든 트래픽을 허용하는 아웃바운드 규칙을 추가합니다.
VPC의 리소스에 대한 보안 그룹에 Client VPN 엔드포인트에 적용되는 보안 그룹(이 경우 기본 VPC 보안 그룹)에서의 액세스를 허용하는 규칙이 있습니다. 이렇게 하면 클라이언트가 VPC의 리소스에 액세스할 수 있습니다.
이전 절차에서 생성한 Client VPN 엔드포인트를 선택 > 클라이언트 구성 다운로드
1단계에서 생성한 클라이언트 인증서 및 키
를 찾습니다.
원하는 텍스트 편집기를 사용하여 Client VPN 엔드포인트 구성 파일을 엽니다. <cert></cert>
및 <key></key>
태그를 파일에 추가합니다. 클라이언트 인증서의 내용과 프라이빗 키의 내용을 다음과 같이 해당 태그 사이에 배치합니다.
<cert>
client1.domain.tld.crt의 내용 복붙
</cert>
<key>
client1.domain.tld.key의 내용 복붙
</key>
OpenVPN 기반 클라이언트 애플리케이션과 방금 생성한 구성 파일을 사용하여 Client VPN 엔드포인트에 연결할 수 있습니다.
OpenVPN에서 7단계에서 만든 구성 파일을 import
합니다.
VPN에 연결합니다.
private IP로 VPC 내의 EC2 인스턴스에 ssh 접속해봅니다.
VPN에 연결하지 않고 private IP로 연결하려하면 연결이 되지 않습니다.
인터넷 역시 정상적으로 접속됩니다.
인터넷이 접속되지 않을 경우 Client VPN 엔드포인트를 생성할 때 DNS 서버를 지정하지 않아서일 수 있습니다. 엔드포인트를 이미 생성했다면
수정
을 통해서 DNS 서버를 지정할 수 있습니다.
Client VPN을 운영함에 있어 다양한 문제들에 대해 AWS 공식 문서 - Client VPN 문제 해결을 참고해서 해결할 수 있습니다.