-
Client VPN을 사용하여 VPC Peering으로 연결된 VPC의 Private 인스턴스 접근하기AWS/Hands-on 2023. 7. 5. 19:09
Client VPN 이란?
Client VPN은 OpenVPN 서버를 AWS에서 쉽게 이용할 수 있도록 한 관리형 서비스로서, VPN을 통해 AWS 외부에서 VPC 상에 프라이빗한 리소스에 접근할 수 있도록 해준다.
AWS Client VPN이란 무엇입니까? - AWS Client VPN
AWS Client VPN이란 무엇입니까? AWS Client VPN은 AWS 리소스 및 온프레미스 네트워크의 리소스에 안전하게 액세스할 수 있도록 하는 관리형 클라이언트 기반 VPN 서비스입니다. Client VPN에서는 OpenVPN 기
docs.aws.amazon.com
VPC Peering 이란?
VPC 피어링 연결은 Private IPv4 주소 또는 IPv6 주소를 사용하여 두 VPC간에 트래픽을 라우팅할 수 있도록 하기 위한 두 VPC 사이의 네트워킹 연결이다. 동일한 네트워크에 속하는 경우와 같이 VPC의 인스턴스가 서로 통신할 수 있다.
VPC 피어링이란? - Amazon Virtual Private Cloud
VPC 피어링이란? Virtual Private Cloud(VPC)는 사용자의 AWS 계정 전용 가상 네트워크입니다. VPC는 AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있습니다. AWS 리소스(예: Amazon EC2 인스턴
docs.aws.amazon.com
📔 Client VPN을 사용하여 VPC Peering으로 연결된 VPC의 Private 인스턴스 접근하기
본 실습은 Client VPC endpoint의 대상 네트워크인 VPC 와 VPC Peering으로 연결된 외부 VPC의 Private EC2에 설치된 nginx 화면을 띄우는것을 목표로 합니다 🙂
👇 VPC, 서브넷 생성 참고하기
Public Loadbalancer 를 사용하여 Private Instance 접근하기
Loadbalancer란? 애플리케이션 트래픽을 Amazon EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수등 여러 대상에 자동으로 수신 애플리케이션 또는 네트워크 트래픽을 여러 가용영역에 분산시켜 안정적인 AW
yentech.tistory.com
👇 EC2에 nginx 설치 참고하기
EC2에 nginx 설치하기 (패키지 설치 방법, 컴파일 설치 방법)
🔧 EC2 에 nginx 설치하기 (패키지 설치 방법) nginx 가 있는지 찾아본다. yum info nginx 리눅스 환경의 EC2를 시작하면 nginx 에 대한 레포 경로가 없기 때문에 설정을 해주어야한다 vi /etc/yum.repos.d/nginx.rep
yentech.tistory.com
🔧 VPC Peering 연결하기
피어링 연결 생성 버튼을 클릭하고 연결할 vpc 를 선택한 뒤 피어링 연결 생성을 한다.
생성 완료 후 요청 수락을 한다.
라우팅 테이블에 대상 vpc 대역으로 peering 연결을 추가해준다.
yen-vpc1 의 nginx가 설치된 private 서브넷의 라우팅 테이블에 yen-vpc2 대역으로 peering 연결을 추가한다.
마찬가지로 연결할 yen-vpc2 의 public 서브넷의 라우팅 테이블에 yen-vpc1 대역으로 peering 연결을 추가한다.
연결할 EC2 보안그룹의 인바운드 규칙도 peering으로 연결한 대상 vpc 의 대역을 추가해준다.
Reachability Analyzer 를 사용하여 peering 연결 확인
경로 생성 및 분석을 선택하여 위에서 생성한 VPC Peering과 EC2 를 선택하여 분석 경로를 생성한다.
생성이 완료되면 피어링 연결이 잘 된것을 확인할 수 있다.
🔧 Client VPN Endpoint 생성하기
Client VPN 엔드포인트를 생성하려면 사용하는 인증 유형에 관계없이 AWS Certificate Manager에서 서버 인증서를 프로비저닝해야한다.
CA 설치와 인증서 발급 및 업로드
1. OpenVPN easy-rsa 리포지토리 다운로드
$ yum -y install git $ mkdir yen-new-ca $ cd yen-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 yen-server nopass
5. 클라이언트 인증서/키 생성
$ ./easyrsa build-client-full yen-client1.domain.tld nopass
6. 인증서 이동 및 목록 확인
$ mkdir ../my-keys $ cp pki/ca.crt ../my-keys $ cp pki/issued/yen-server.crt ../my-keys $ cp pki/private/yen-server.key ../my-keys $ cp pki/issued/yen-client1.domain.tld.crt ../my-keys $ cp pki/private/yen-client1.domain.tld.key ../my-keys $ cd ../my-keys
7. acm에 서버 인증서/키 & 클라이언트 인증서/키 업로드
$ aws acm import-certificate --certificate fileb://yen-server.crt --private-key fileb://yen-server.key --certificate-chain fileb://ca.crt $ aws acm import-certificate --certificate fileb://yen-client1.domain.tld.crt --private-key fileb://yen-client1.domain.tld.key --certificate-chain fileb://ca.crt
🚨 이때 해당 명령 실행 중 권한 오류가 나온다면 aws configure 명령으로 AWSCertificateManagerFullAccess 권한이 있는 사용자로 자격증명을 설정해주어야한다.
이후 콘솔에서 해당 인증서가 업로드 된것을 확인할 수 있다.
Client VPN 생성
1. 클라이언트 VPN 엔드포인트 생성 버튼을 클릭한다.
2. 클라이언트 VPN 엔드포인트의 이름과 IPv4 CIDR을 입력하고 위에서 업로드한 서버 인증서와 클라이언트 인증서를 각각 선택한다.
아래 옵션에서 다른건 기본으로 놔두고 분할 터널 활성화만 설정해준뒤 엔드포인트를 생성한다.
클라이언트 VPN 엔드포인트 설정
1. 클라이언트 VPN 엔드포인트를 생성하고나면 아직 pending 상태인것을 볼 수 있다. 아래의 탭에서 대상 네트워크 연결과 권한 부여 규칙을 지정해주어야 상태가 활성화된다.
먼저 대상 네트워크 연결에서 연결할 yen-vpc2 와 서브넷을 선택한다.
2. 권한 부여 규칙 추가에서 대상 네트워크인 yen-vpc2 의 대역인 20.0.0.0/16 을 모든 사용자에게 액세스 허용으로 추가해준다.
3. 대상 네트워크인 yen-vpc2와 peering 연결된 yen-vpc1 의 대역인 10.0.0.0/16 을 모든 사용자에게 액세스 허용으로 추가해준다.
4. 이후 조금 기다리고나면 상태가 활성화 된것을 확인할 수 있다.
5. client vpn endpoint가 연결된 대상네트워크와 peering된 vpc의 대역도 라우팅테이블에 추가한다.
클라이언트 VPN 엔드포인트 구성 파일 다운로드
1. 클라이언트 구성 다운로드를 클릭하여 구성 파일을 다운받는다
2. 다운받은 파일을 편집기로 열고 1단계에서 만든 클라이언트 인증서와 키 내용을 해당 파일 아래에 붙여넣는다.
client dev tun proto udp remote cvpn-endpoint-05dffbc1f5c2dc221.prod.clientvpn.ap-northeast-2.amazonaws.com 443 remote-random-hostname resolv-retry infinite nobind remote-cert-tls server cipher AES-256-GCM verb 3 <ca> -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- </ca> #################### 여기부터 <cert> -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- -----END PRIVATE KEY----- </key> ################# 여기까지가 추가되는 부분 reneg-sec 0
- 클라이언트 인증서 - easy-rsa/easyrsa3/pki/issued/client1.domain.tld.crt
- 클라이언트 키 - easy-rsa/easyrsa3/pki/private/client1.domain.tld.key
3. Client VPN 애플리케이션 설치
https://docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-user/connect-aws-client-vpn-connect.html 에서 OS 에 맞는 애플리케이션을 다운받아 설치한다.
애플리케이션을 실행하고 파일 > 프로필 관리에서 프로필 추가를 선택한다.
프로필 이름을 입력하고 4단계에서 다운받은 클라이언트 구성 파일을 선택하고 프로필 추가를 완료한다.
이후 연결을 클릭하고 ec2의 private ip로 접속을 하면 nginx 화면이 뜨는것을 확인할 수 있다. 🙂
'AWS > Hands-on' 카테고리의 다른 글
EC2에 Nexus 설치하기 (0) 2023.07.09 Codepipeline과 Jenkins를 이용한 CI/CD (0) 2023.07.09 EC2 에 Java, Tomcat 설치하기 (0) 2023.07.05 EC2에 nginx 설치하기 (패키지 설치 방법, 컴파일 설치 방법) (0) 2023.07.05 Public Loadbalancer 를 사용하여 Private Instance 접근하기 (0) 2023.07.05