이놈의 AWS Client VPN 때문에 하루 종일 고생을 했네요 ㅜ_ㅜ
여러분은 저처럼 고생하지 않기를 바라며 포스팅 합니다!!!
[목차]
1. IAM 사용자 생성
2. AWS CLI 설치 & aws configure
3. CA 설치 & 인증서 발급 및 업로드
4. AWS Client VPN 엔드포인트 생성
5. VPN 클라이언트 파일 구성 및 접속
6. VPN Client 프로그램 설치 및 접속
7. 주의사항
1. IAM 사용자 생성
acm에 인증서 업로드 할 수 있는 권한을 가진 사용자를 생성합니다.
1) AWS IAM 콘솔 접속후, 왼쪽 네비게이션 바 "사용자" 클릭 합니다.
2) 사용자 추가를 클릭합니다.
3) 사용자 추가 페이지에서 사용자의 이름을 입력하고, 액세스 키를 클릭합니다. 이후, 다음을 클릭합니다.
4) 권한 할당 페이지 입니다. AWSCertificateManagerFullAccess 권한에 체크 후 다음을 클릭합니다.
5) 3, 4단계는 기본값으로 두고 사용자를 생성합니다. 아래와 같은 화면에서 CSV파일을 다운로드 해놓거나, 다른곳에 적어놓습니다!
2. AWS CLI 설치 & aws configure
aws cli 설치 및 위에서 생성한 액세스 키를 설정해줍시다.
1) aws cli를 설치합니다.
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /
2) 설치가 잘 되었는지 확인합니다.
$ which aws
$ aws --version
3) 위에서 생성한 IAM 자격증명을 설정해줍니다.
$ aws configure
여기까지 완료 되었다면 다음으로 넘어가봅시다!
3. CA 설치 & 인증서 발급 및 업로드
저는 macOS 를 사용합니다. 윈도우 사용하시는 분들은 여기를 클릭해서 확인하세요!
1) OpenVPN easy-rsa 리포지토리 다운로드
$ mkdir my-new-ca
$ cd my-new-ca
$ git clone https://github.com/OpenVPN/easy-rsa.git
2) pki 시작
$ cd easy-rsa/easyrsa3
$ ./easyrsa init-pki
3) CA 빌드
$ ./easyrsa build-ca nopass
4) 서버 인증서/키 생성
$ ./easyrsa build-server-full server nopass
5) 클라이언트 인증서/키 생성
$ ./easyrsa build-client-full client1.domain.tld nopass
6) 인증서 이동 및 목록 확인
$ mkdir ../my-keys
$ cp pki/ca.crt ../my-keys
$ cp pki/issued/server.crt ../my-keys
$ cp pki/private/server.key ../my-keys
$ cp pki/issued/client1.domain.tld.crt ../my-keys
$ cp pki/private/client1.domain.tld.key ../my-keys
$ cd ../my-keys
7) acm에 서버 인증서/키 & 클라이언트 인증서/키 업로드
여기서 arn을 잘 살펴주세요, 인증서 잘못 넣으면 SSL 오류가 오지게 나옵니다 😂
$ aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt
$ aws acm import-certificate --certificate fileb://client1.domain.tld.crt --private-key fileb://client1.domain.tld.key --certificate-chain fileb://ca.crt
인증서가 정상적으로 업로드 되었다면, 이렇게 ACM 콘솔에서 인증서를 확인할 수 있습니다.
4. AWS Client VPN 엔드포인트 생성
ClientVPN 생성 방법입니다. 매우 간단합니다!!! 클라이언트 엔드포인트를 생성하고, 원하는 VPC서브넷에 연결만 해주면 됩니다.
AWS VPC 콘솔, 왼쪽 네비게이션 바에서 "클라이언트 VPN 엔드포인트"를 선택합니다.
"클라이언트 VPN 엔드포인트 생성"을 클릭합니다.
클라이언트 VPN 엔드포인트를 생성해줍시다.
이때, 제일 중요한 부분은 서버 인증서, 클라이언트 인증서를 잘 등록해주는것, 분할터널 활성화 하는것 입니다!!!!
*AWS Client VPN 엔드포인트 분할터널을 활성화 하지 않으면,
모든 트래픽이 AWS로 향하게 되어 인터넷 통신 트래픽도 모두 AWS 네트워크를 거처 가게 됩니다. (자세한 설명 링크 😁)
혹시, 클라이언트 PC의 모든 트래픽이 AWS를 통해 통신되기를 원하신다면! 반드시 라우팅테이블에 경로를 추가해주세요.
클라이언트 VPN 엔드포인트를 생성하면, 이 엔드포인트를 VPC서브넷에 연결시켜줘야 합니다.
방금 생성한 클라이언트 VPN 엔드포인트를 클릭하고 하위탭 "연결"을 클릭합니다.
클라이언트 VPN 엔드포인트를 연결할 서브넷을 모두 등록해줍시다..!
서브넷에 연결 되었다면,
권한부여 탭을 눌러 모든 트래픽(0.0.0.0/0)에 접속 할 수 있도록 수신승인 설정합니다.
* 액세스를 활성화할 대상 네트워크: 0.0.0.0/0
여기까지 완료 되었다면 이제, 사용가능한 초록색(Avaliable) 상태가 될겁니다.
그 사이에 우리는 클라이언트 구성을 해봅시다!!
5. VPN 클라이언트 파일 구성
클라이언트 구성을 다운로드 합니다.
클라이언트 구성 파일을 열어볼까요?
(열리지 않는경우에는 마우스 오른쪽 버튼을 눌러 메모장과 같은 텍스트 편집기로 열어주시면 됩니다!)
기본파일은 이렇게 생겼습니다.
여기 파일 아래 클라이언트 인증서/키를 넣어주시면 됩니다
6. VPN Client 프로그램 설치 및 접속
VPN 클라이언트 프로그램 아무거나 설치해주시면 됩니다.. 종류는 여러가지가 있어요.
대표적으로, OpenVPN Client, aws Client VPN, Tunnelblick 이 있는데, 저는 써보니까 트러블 슈팅할때 Tunnelblick 이게 제일 좋더라고요!!
저는 Tunnelblick 으로 설치하고 실행합니다.
위에서 생성한 설정파일을 드래그&드롭하고, VPN상세를 클릭합니다.
오른쪽 아래 연결 버튼을 누르면, 잘 연결 됩니다.