Intro.
VPC 안에 있는 database에 private하게 접속하기 위해서 VPN 설정을 진행하겠다. VPC 생성 과정은 생략하고 subnet만 언급하겠다. database도 private하게 설정 되어 있다고 가정하고 진행하겠다. 먼저 인증할 server certificate과 client certificate을 생성하고 client VPN 설정 후 subnet에 대한 security group 설정 후 db security group에 source를 넣고 tunnelblick 만들고 끝내도록 하겠다.
1. certificate 생성 이유
- 인증을 위해서이다. 아무나 VPN을 사용할 수 없고, AWS 서비스에 접근할 수 없도록 최소한의 인증을 설정하는 것이다.
- 여러 가지 인증 방법이 있지만, 상호 인증[mutual authentication](인증서 기반)을 사용할 것이다.
2. mutual authentication 생성
콘솔 창에서..
- 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 client1.domain.tld nopass
- mkdir ~/vpn_ca/
- cp pki/ca.crt ~/vpn_ca
- cp pki/issued/server.crt ~/vpn_ca
- cp pki/private/server.key ~/vpn_ca
- cp pki/issued/client1.domain.tld.crt ~/vpn_ca
- cp pki/private/client1.domain.tld.key ~/vpn_ca
- cd ~/vpn_ca
- ls
- aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt --region ap-northeast-2
- aws acm import-certificate --certificate fileb://client1.domain.tld.crt --private-key fileb://client1.domain.tld.key --certificate-chain fileb://ca.crt --region ap-northeast-2
로컬에서 모두 생성한 후 aws cli를 사용하여 aws Certificate Manager에 import를 해준다. 그리고 aws console에서 확인해보면 server와 client 인증서가 잘 보관되고 있는 것을 확인할 수 있다.
3. client VPN 설정
- Client IPv4 CIDR은 VPC의 주소와 겹치면 안된다.
- 위에서 만든 server와 client 인증서를 등록해준다.
- VPN 접속할 때마다 해당 인증서로 인증 받고 접속을 허가 받는다.
- vpn 연결 상세 로그를 확인하고 싶다면 해당 로그를 킬 것.
- 물론 로그 그룹은 cloudwatch에서 미리 만들어야 한다.
- UDP가 TCP보다 속도가 더 빠르므로 일반적으로 UDP를 선택한다.
- Enable split-tunnel
- 연결을 네트워크에서는 터널이라고 표현한다.
- Client VPN 엔드포인트에서 분할 터널이 활성화됩니다. VPC(10.0.0.0/16)로 향하는 트래픽만 Client VPN 터널을 통해 라우팅됩니다. 온프레미스 리소스로 향하는 트래픽은 Client VPN 터널을 통해 라우팅되지 않습니다.
- VPC
- VPN을 연결할 VPC를 선택하고 VPN에 관련된 보안그룹을 선택한다.
- 해당 보안그룹의 상세 내용은 Client VPN 만든 후 아래에서 다루겠다.
subnet 선택
- VPN endpoint 생성 후 target network - vpn과 연결할 subnet을 선택한다.
- 각 서브넷은 하나의 AZ에 하나씩 선택할 수 있다.
Authorization rule 설정
- destination network에는 내가 연결하고자 하는 vpc ip 주소를 선택한다.
4. 보안 그룹 설정
VPN 보안 그룹
- UDP는 443 port로 받기로 했으므로 443 포트로 설정
- VPC에서 들어오는 트래픽은 모두 허용해줄 것.
Database 보안그룹
- vpn 보안그룹을 inbound에 등록해줄 것.
5. tunnelblick 설정
- Tunnelblick은 OS X 및 macOS에서 가상 사설망인 OpenVPN을 위한 무료 오픈 소스 그래픽 사용자 인터페이스
[1] tunnelblick 다운로드
https://tunnelblick.net/downloads.html
해당 사이트에서 stable 버전을 다운받아 실행시키면 된다.
[2] VPN 연결 설정 방법
references
1. mutual authentication 생성 방법
https://www.youtube.com/watch?v=8En5Dd-dHFw
2. 인증 방식
https://docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-admin/client-authentication.html
3. 분할 터널 사용
https://docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-admin/split-tunnel-vpn.html
4. client vpn 문서
https://docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-admin/client-vpn-admin-guide.pdf#how-it-works
5. database with vpn 설정 방법
6. tunnelblick 설정
https://tunnelblick.net/downloads.html
https://docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-user/macos.html
'AWS' 카테고리의 다른 글
ElastiCache Redis 매커니즘 및 연결 방법 (0) | 2022.12.31 |
---|---|
VPC 최종 구조 및 구조 설명 (0) | 2022.12.20 |
invalid fetch size(feat. Amazon Aurora) (0) | 2022.11.22 |
Amazon Aurora with Custom url(domain) 연결 안되는 이슈 (0) | 2022.11.22 |
Amazon Aurora + spring boot + java + maven (0) | 2022.11.22 |