AWS VPN - Onpremise VPN 연동

흑이·2023년 4월 16일
0

기존에 회사 AWS VPN과 모회사의 Onpremise VPN이 연동이 되어 있었는데 입사할때 당시에는 터널링이 down된 상태였다.

그리고 이번에 회사 AWS 서버와 모회사 Onpremise 서버 끼리 통신을 위해 VPN 연동 작업을 진행하기로 하였고, 해당 작업을 담당하게 되었다.


VPN 연동 작업 전에 AWS VPN에서 Onpremise VPN 연동을 어떻게 하는지 파악해보고 직접 테스트까지 진행 하기로 함


Site-to-Site VPN

  • 서로 다른 도메인의 네트워크 대역이 가상의 사설 네티워크 연결을 이용하여 private 통신을 가능하게 하는 서비스 IPSEC VPN을 지원

Site-to-Site VPN 구성 요소

Site-to-Site VPN 연결은 AWS 측의 가상 프라이빗 게이트웨이 또는 Transit Gateway와 원격(온프레미스) 측의 고객 게이트웨이(VPN 디바이스를 나타냄) 사이에 두 개의 VPN 터널을 제공


가상 프라이빗 게이트웨이

  • Site-to-Site VPN 연결의 Amazon 측에 있는 Gateway로 VPC에 연결하는 데 사용
  • VPG를 생성하여 S2S VPN 연결을 생성할 VPC에 연결한다.
    (AWS의 VGW <-----> 온프레미스의 customer gateway)

Transit Gateway

  • Transit Gateway는 Virtual Private Cloud(VPC)와 온프레미스 네트워크 간의 트래픽에 대한 리전별 가상 라우터 역할을 합니다.

  • 여러개의 VPC를 하나의 Transit Gateway를 통해 VPC 서로 또는 온프레미스 네트워크와 통신이 가능하다.

고객 게이트웨이 디바이스 (Customer Gateway Device)

  • 온프레미스 네트워크(Site-to-Site VPN 연결에서 사용자 측)에서 소유하거나 관리하는 물리적 또는 소프트웨어 어플라이언스

  • 디바이스와 가상 프라이빗 게이트웨이 사이의 두 줄은 VPN 연결을 위한 터널을 나타냅니다.

  • AWS 내에 디바이스 장애가 있는 경우 VPN 연결은 두 번째 터널로 자동으로 장애 조치되므로 액세스가 중단되지 않습니다.


AWS VPN 연결시 특징

  • 터널 생성은 항상 클라이언트 측에서 생성

  • Virtual private gateway는 aws에서 제공하지만 Customer gateway는 고객사 장비

  • IKE 2를 사용하면 VGW가 통신 요청자가 될 수 있도록 설정 가능

  • Idle Timeout - 터널이 Down 되지 않도록 Dead Peer Detect 설정 해야 한다.


VPN 트래픽 흐름

  • 데이터 센터에서 AWS로 트래픽을 보내는 경우, 2개의 터널을 모두 사용하여 로드밸런싱, 페일오버 사용할 수 있다.

  • AWS에서 데이터 센터로 보내는 경우 하나의 터널로 트래픽을 보냄, 해당 터널이 장애 발생시 페일 오버 사용 가능

  • VPN 터널 당 1.25Gbps



Site-to-Site VPN 실습

  • 온프레미스 환경 구축은 버지니아 북부에 VPC 및 EC2 생성, openswan을 설치한 cgw를 생성

VPC 생성

CIDR : 20.0.0.0/16


Subnet 생성

Public CIDR : 20.0.1.0/24
Private CIDR : 20.0.2.0/24


Internet Gateway 생성

  • VPC에 연결 작업을 진행한다.

Routing table 생성 및 서브넷 연결

  • 0.0.0.0/0 -> IGW

EC2 생성

  • onpremise_ec2 → Networking → Change source/destination check → Stop

  • 패킷에 명시된 source 또는 destination에 해당하지 않더라도 패킷을 받아볼 수 있도록 check 작업을 정지시킨다. 예를 들어 NAT 인스턴스는 하위 사설망에 패킷을 전달하기 위해 들어오는 외부 패킷을 열어볼 수 있어야 한다.

  • /etc/sysctl.conf 패킷 포워딩 설정으로만 되는지 저 EC2 설정도 해야하는지 모르겠어서... 일단 설정을 해본다.


보안그룹 생성


openswan 설치

sudo su -
yum install -y openswan


패킷 포워딩 활성화

  • vi 편집기 로 /etc/sysctl.conf 파일 내용 추가

네트워크 서비스 재시작

systemctl restart network



AWS 측


고객 게이트웨이 생성 (CGW)

  • 라우팅 : 정적 (static)
  • ip 주소 : idc cgw 의 eip

가상 게이트웨이 생성 (VGW)

  • VGW 생성 후 → vpc 에 연결

Site-to-Site vpn 연결 생성

  • 가상 프라이빗 게이트웨이와 고객 게이트 웨이 선택
  • 라우팅 옵션 : 정적
  • 정적 IP 접두사
  • 20.0.0.0/16 (온프레미스 VPC CIDR을 입력한다)

  • 현재 터널 Down 상태

라우팅 테이블 설정

  • AWS VPC의 public subnet의 라우팅 테이블에서 라우팅 전파를 활성화 시켜주어야 한다.

  • 라우팅 전파를 하게 되면 라우팅 테이블에 자동으로 업데이트가 된다고 하는데....
  • 나는 업데이트가 되지 않아 정적으로 추가해줬다....


구성 다운로드

  • AWS에서는 VPN 연결 구성에 대한 컨피그 파일을 VPN 제조사에 맞춰 다운로드 받을 수 있다.
  • Openswan 제품에 맞게 다운로드 가능

구성 다운로드 파일로 CGW 설정

#vi /etc/ipsec.d/aws.conf

  • leftsubnet : IDC VPC CIDR (20.0.0.0/16)
  • rightsubnet : AWS VPC CIDR 즉, S2S VPN 을 생성한 곳.

openswan 사용 시 구성 파일을 그대로 복붙하면 아마 터널이 작동되지 않을 것이다. 구성파일에서 "auth=esp" 이 부분을 제거해주면 된다.


aws.secrets 파일 생성

/etc/ipsec.d/aws.secrets

AWS VPN 터널 IP IDC EC2 IP: PSK "비밀번호"

  • .secrets 로 된 파일을 생성하여 구성 파일에 있는 Pre-shared key 값을 추가

openswan(ipsec) 서비스 재시작

systemctl status ipsec.service
systemctl start ipsec.service
systemctl enabel ipsec.service


ipsec status
000 Total IPsec connections: loaded 1, active 1

  • 위와 같이 출력되면 터널이 Up 됨


  • Onpremise 에서 AWS 측으로 ping 테스트 완료


https://velog.io/@rhgkssk1114/Site-to-Site-VPN-%EC%9D%B4%EB%9E%80
https://docs.aws.amazon.com/ko_kr/vpn/latest/s2svpn/VPC_VPN.html
https://docs.aws.amazon.com/ko_kr/vpc/latest/tgw/what-is-transit-gateway.html
https://www.youtube.com/watch?v=yMgwrkqfcbg
https://www.youtube.com/watch?v=vEFh0BQ3iOk
https://assu10.github.io/dev/2022/12/10/network-2/#3-aws-%EC%99%80-%EC%98%A8%ED%94%84%EB%A0%88%EB%AF%B8%EC%8A%A4-%EA%B0%84-vpn-%ED%86%B5%EC%8B%A0-%ED%85%8C%EC%8A%A4%ED%8A%B8
https://isn-t.tistory.com/28#--%--VPC%--%EC%--%-D%EC%--%B-

0개의 댓글