Cloud Infra Architecture (AWS)/AWS ANS-C01

VPN Site-to-Site

seongduck 2023. 12. 11. 17:18

 
Virtual Private Gateway (VGW)

  • 1개의 VGW는 1개의 VPC와 연결이 가능하다.
  • 1개의 VGW는 여러개의 On-premise와 연결이 가능하다.
  • VGW는 Customer gateway와 VPN connection(IPsec프로토콜의 VPN Tunner) 방식으로 통신한다.

 
Customer gateway

  • 온프레미스 고객 라우터 설정값을 AWS에서 제공하는 GW이다.
  • VPC에서 설정한다.

 
CGD router

  • Site-to-Site VPN 연결을 위해 사용되는 것 

 
제약사항

  • 온프레미스에서는 IGW를 통해 인터넷과 통신할 수 없다.
  • 온프레미스에서는 NAT Gateway를 통해 인터넷과 통신할 수 없다.
  • 온프레미스에서는 NAT Instance를 통해 인터넷과 통신할 수 있다.
  • 온프레미스에서는 VPC Peering을 통해 다른 VPC와 통신할 수 없다.

 
 

  • 온프레미스는 Gateway Endpoint와 연결되는 서비스와 통신할 수 없음
  • 온프레미스는 Interface Endpoint와 연결되는 서비스와 통신할 수 있음
  • 온프레미스의 NAT를통해 VPC는 인터넷과 통신할 수 있음

 
 
<실습 아키텍처>

 
1) 버지니아 북부 환경 구성

<VPC 생성>
CIRD : 10.1.0.0/16

<서브넷 생성>
VPC 선택 후 CIDR : 10.1.100.0/24

<라우팅 테이블 연결>
기본 라우팅 테이블 이름 변경 후 서브넷 연결

<EC2 생성>
인스턴스 시작
키페어 없음
네트워크 편집 후 VPC / Sunbet 생성
보안그룹 생성 : AWS-sg / TCP : 10.2.0.0/16 (on-premise CIDR)
UDP VPN Connection 트래픽 용도 : 10.2.0.0/16

 
2) 켈레포니아 환경 구성 (온프레미스라고 가정)

<VPC 생성>
10.2.0.0/16 : CIDR

<subnet 생성>
서브넷 생성 - VPC 선택 
10.2.200.0/24 : CIDR

<라우팅 테이블 연결>
기본 생성된 것(이름 변경 후) 연결 : subnet

<IGW 생성>
생성 후 VPC에 연결

<라우팅 테이블 추가>
전에 생성해둔것 - 라우팅편집 - 모든아이피 : IGW 대상

<EC2 생성>
키페어 없음
네트워크 편집 : VPC - sunbet 생성, 퍼블릭 IP활성화
SG 생성 : ssh : 위치 무관
TCP : 10.1.0.0/16 (상대 VPC CIDR)
UDP : 10.1.0.0/16

 
3) 버지니아(VPC)와 캘리포니아(On-premise)연결하기 위한 VGW 생성 및 VPN connection (터널1,2) 생성

VPC 환경에서 VGW 및 VPN 생성을 진행

<VGW 생성>
VPC - VPN - 가상 프라이빗 게이트웨이 생성
선택 후 작업 - VPC 연결 - 해당 VPC 연결

<VPN Connection 생성>
VPN - Site-to-Site VPN 연결 클릭 후 VPN 연결 생성 클릭
대상 게이트웨이 유형 : 가상 프라이빗 게이트웨이 / 선택
고객 게이트웨이 : 신규 / 온프레미스 ec2의 퍼블릭 주소 / 라우팅 옵션 : 정적
고정 IP 접두사 : 온프레미스 CIDR (10.2.0.0/16)
로콜 IPv4 네트워크 CIDR (온프레미스 CIDR) : 10.2.0.0/16
원격 IPv4 네트워크 CIDR (AWS VPC CIDR) : 10.1.0.0/16

<터널 1 옵션>
터널 1의 내부 IPv4 CIDR은 AWS 내부에서 자동으로 생성
터벌 1의 사전 공유 키 : vpnconnectkey

<터널 2 옵션>
터널 2의 내부 IPv4 CIDR은 자동으로 생성
터널 2의 사전 공유 키 : vpnconnectkey

생성 클릭

생성된 터널들이 Down에서 UP으로 되어야 통신 시작
 
4) Onpremise에서 Openswan VPN 구성

<VPC 환경에서 VPN 연결> - 직전에 생성한 VPN
구성 다운로드 클릭
공급업체 : openswan
버전 : 2.6.38
다운로드


<온프레미스 ec2에 접속>
$ sudo su
$ yum install openswan -y

 
5) 다운로드 받은 VPN 파일 열고 IPSEC Tunnel #1 구성하기

<VPN 파일 내용 다운로드 후 열기>
1) Open /etc/sysctl.conf and ensure that its values match the following :
3줄 복사하기

<온프레미스 ec2 접속>
$ nano /etc/stsctl.conf
3줄 복사한 부분 넣기 (앞에 빈칸 제거) ctrl+5 / ctrl+x

2) Apply the changes in step 1 by executing the command 'sysctl -p'

$ service network restart

<ec2 콘솔>
해당 ec2 - 작업 - 네트워킹 - 소스/대상 확인 병경 중지 체크

3) Open /tec/ipsec/conf and look for the line below. Ensure tat ~~~
$ nano /etc/ipsec.conf
확인 완료

4) Create a new file ~~
아래 conn Tunnel1 ~~ 부분 복사하기

다시 인스턴스로 들어와서
$ nano /etc/ipsec.d/aws.conf
아무것도 없다.

복사한 부분을 붙여 넣는다.
> auth부분 제거하기
> phase2alg=aes_gcm 으로 변경하기
> ike=aes256-sha1;modp1024 로 변경하기
> leftsubent=10.2.0.0/16(온프레미스 CIDR)
> rightsubnet=10.1.0.0/16(AWS CIDR)

5) Create a new file ~~~
이부분 복사해서 아래에 붙여 넣는다.
$ nano /etc/ipsec.d/aws.secrets
붙여넣기 완료

$ systemctl start ipsec

 
6) ipsec 연결 확인하기

$ systemctl status ipsec
active (running) 나올 시 성공

<AWS 버지니아 북부 콘솔>
vpn연결 - vpn - 터널 세부 정보 - tunnel 1 연결 확인 (up으로)

=> aws와 onpremise간에 연결이 완성되었다.

<aws 버지니아 북부 콘솔>
ec2 - private ec2의 프라이빗 ip 복사
라우팅 테이블 편집 - 라우팅 전파 편집 - 활성화 (온프레미스 라우팅 그룹 추가)
ec2 - 인바운드 편집- icmp / 10.2.0.0/16 (온프레미스) (보안그룹 허용)

<aws 켄레포니아 ec2 접속>
$ ping 프라이빗 ip