클라우드에 가상 온프레미스 환경을 구축하고 Site-to-Site VPN으로 연결하기

Site to Site VPN 이란?

IPSec 암호화 프로토콜을 사용해 AWS Cloud 환경과 On-Premise 환경을 연결해주는 서비스입니다.

AWS에는 VGW(Virtual Private Gateway), On-Premise에는 CGW(Customer Gateway)가 붙어있으며 이 둘 사이에 IPSec 프로토콜을 이용해 터널링을 만들어 줘 인터넷을 통해서 상호 간 통신이 가능하게 해주는 원리입니다.

하단의 이미지는 Site-to-Site VPN의 기본 구성입니다.

VGW(Virtual Private Gateway)란?

✔️ VGW는 가상 사설 네트워크인 VPC와 온프레미스 네트워크를 연결하는 방식 중 가장 오래된 방식입니다.

✔️ VGW는 VPC와 온프레미스 네트워크를 연결하는 VPC 쪽의 라우터 역할을 합니다.

✔️ VGW를 이용해 온프레스 네트워크와 연결하기 위해서는 온프레미스 네트워크 쪽에 CGW(Customer Gateway)를 구성해 줘야 합니다.

VGW는 다음과 같은 특징들을 가지고 있습니다.

  • VGW는 여러 개의 온프레미스 라우터와 연결이 가능합니다.
  • 다만 VGW는 하나의 VPC에만 연결할 수 있습니다.
  • VGW는 Site-to-Site VPN, Direct Connect 연결을 통해 온프레미스 네트워크와 연결이 가능합니다.
  • VGW 생성시 동적 라우팅을 사용할 경우 ASN(Autonomous System Number)를 지정해 줘야합니다.

※ Autonomous System Number(ASN)은 인터넷 상에서 독립적으로 라우팅 정책을 운영하는 네트워크나 네트워크 그룹을 식별하는 고유한 번호입니다. ASN을 통해 네트워크는 다른 네트워크와 데이터를 효과적으로 주고받을 수 있습니다.

CGW(Customer Gateway)란?

✔️ CGW는 온프레미스 네트워크의 CGD(Customer Gateway Device)의 설정 값을 VGW에 제공하기 위한 가상 게이트웨이입니다. CGW는 AWS에서 설정할 수 있습니다.

CGW는 다음과 같은 특징들을 가지고 있습니다.

  • CGD에 있는 IP 정보 등 CGD와 연결할 수 있는 설정 값들을 CGW에 지정함으로써 VGW는 CGW에 있는 해당 값들을 참조해 CGD에 연결할 수 있게 됩니다.
  • CGW 역시 동적 라우팅을 사용할 경우 ASN을 지정해 줘야합니다.

CGD(Customer Gateway Device)란?

✔️ CGD는 Site-to-Site VPN 연결을 위해 온프레미스에 설치된 라우터 등의 물리적 디바이스 또는 소프트웨어를 의미합니다.

CGD는 다음과 같은 특징들을 가지고 있습니다.

  • CGD가 BGP를 지원하지 않을 경우 VPN 연결시 동적 라우팅을 사용할 수 없습니다. 따라서 이 경우 정적 라우팅을 사용해야 합니다.
  • VGW와 CGW의 설정을 모두 구성한 뒤 구성 파일을 다운로드 받아 CGD에 설치하게 되면 VPC와 온프레미스 네트워크 간의 VPN Tunnel이 구성됩니다.

VPN Tunnel

✔️ VPN 터널은 VPC와 온프레미스 네트워크 간의 서로 데이터를 주고받을 수 있는 암호화된 링크입니다.

VPN 터널은 다음과 같은 특징들을 가지고 있습니다.

  • VPN 터널은 IPSec 프로토콜 스위트를 사용해 데이터를 암호화하여 처리합니다.
  • 각 VPN 터널은 인터넷 연결을 위한 Public IP와 내부 연결을 위한 내부 CIDR로 구성됩니다.
  • 또한 VPN 터널이 생성될 때 AWS에서 기본값을 지정하게 되는데, 암호화, Dead Peer Detection(DPD) 시간 초과, IP 주소 등의 터널옵션을 직접 지정할 수 있습니다.
  • Site-to-Site VPN을 구성할 때 두 개의 VPN 터널을 생성하게 되는데, 그 이유는 VPN 터널이 사용 불가능 해질 경우 다른 VPN 터널로 자동으로 라우팅되어 고가용성을 겸비할 수 있습니다.
  • VPN 터널당 최대 대역폭은 1.25Gpbs 입니다.

Site-to-Site VPN 라우팅 옵션

고객 게이트웨이 디바이스의 제조업체와 모델에 따라 라우팅 유형을 선택할 수 있습니다.

고객 게이트웨이 디바이스에서 **Border Gateway Protocol(BGP)**을 지원할 경우 Site-to-Site VPN 연결을 구성할 때 동적 라우팅을 지정합니다. 고객 게이트웨이 디바이스가 BGP를 지원하지 않는 경우 정적 라우팅을 지정합니다.

※ 자세한 내용은 아래의 링크를 참고 부탁 드리겠습니다.

🔗 https://docs.aws.amazon.com/ko_kr/vpn/latest/s2svpn/VPNRoutingTypes.html

구성해볼 Site to Site VPN 아키텍처

Site to Site VPN 실습

VPC 생성

1. OnPrem용 VPC 생성

아래와 같이 OnPrem용 VPC 생성을 진행합니다.

  • IPv4 CIDR 블록 : 172.32.0.0/16
  • 가용영역 : 1개
  • 퍼블릭 서브넷 수 : 1개
  • Nat GW 없음, VPC Endpoint 없음
  • DNS 호스트 이름 및 확인 활성화

위의 내용대로 생성한 OnPrem VPC 의 리소스 맵

2. Cloud VPC 생성

아래와 같이 Cloud용 VPC 생성을 진행합니다.

  • IPv4 CIDR 블록 : 52.0.0.0/16
  • 가용영역 : 1개
  • 퍼블릭 서브넷 수 : 1개
  • Nat GW 없음, VPC Endpoint 없음
  • DNS 호스트 이름 및 확인 활성화

위의 내용대로 생성한 Cloud VPC 의 리소스 맵

보안 그룹 생성

1. OnPrem VPC 보안 그룹 생성

※ 보안 상 인바운드 규칙을 0.0.0.0/0으로 설정 것은 좋지 않은 방법이나 테스트 용도를 위해 아래와 같이 생성하도록 하겠습니다.

SSH 접속을 위하여 22번 포트 오픈 해줍니다.

PingTest를 위하여 ICMP – IPv4 대역을 오픈 해줍니다.

우리는 OnPrem VPC 내 인스턴스에 openswan을 설치 해줄 예정이고 openswan이 UDP 4500 포트를 사용하기 때문에 UDP 4500포트 또한 오픈 해줍니다.

2. Cloud VPC 보안 그룹 생성

위와 동일하게 SSH 접속 및 PingTest를 위해 보안 그룹을 별도로 생성하여 줍니다.

Key Pair 생성

실습에서는 OpenSSH와 함께 사용해볼 예정이라 .pem 형식의 프라이빗 키 파일을 사용할 것입니다.

아래와 같이 키 페어를 생성해줍니다.

키 페어 유형 : RSA

프라이빗 키 파일 형식 : .pem

인스턴스 생성 및 내부 설치 작업

1. OnPrem VPC 내 인스턴스 생성

EC2 이름 : OnPrem-Server

AMI : Amazon Linux 2 AMI (HVM) – Kernel 5.10, SSD Volume Type

인스턴스 유형 : t3.nano

Key Pair : 앞서 생성했던 Peter_VPNTest_Key

  • 네트워크 설정
    • VPC : OnPrem-vpc
    • 서브넷 : Onprem-subnet-Public1
    • 퍼블릭 IP : 활성화
    • 보안 그룹 : 앞서 생성하였던 OnPrem-SSH-SG, OnPrem-openswan-SG, OnPrem-PingTest-SG

2. 생성한 OnPrem EC2 인스턴스에 SSH 접속 및 openswan 설치

  • ssh로 OnPrem EC2에 접속해 openswan을 아래와 같이 설치 합니다.
[ec2-user@ip-10-0-0-195 ~\]$ sudo su -
[root@ip-10-0-0-195 ~\]# yum install -y openswan
  • /etc/ipsec.conf 파일을 열어서 include /etc/ipsec.d/*.conf 라인의 주석을 해제합니다. 만일 이미 해제되어 있다면 그대로 두시면 됩니다.
[root@ip-10-0-0-195 ~\]# vim /etc/ipsec.conf
...
# It is best to add your IPsec connections as separate files in /etc/ipsec.d/
include /etc/ipsec.d/\*.conf

※ vi 편집기에서 Ins를 누르면 편집가능하고 나갈때는 ESC 누른 뒤 :wq! 를 하시면 저장 후 종료가 됩니다.

  • 이번에는 /etc/sysctl.conf 파일을 열어서 아래의 내용을 추가해줍니다.
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0
  • 그런 다음 아래의 명령으로 내트워크 서비스를 재시작 해줍니다.
[root@ip-10-0-0-195 ~\]# systemctl restart network

3. Cloud VPC 내 인스턴스 생성

EC2 이름 : Cloud-Server

AMI : Amazon Linux 2 AMI (HVM) – Kernel 5.10, SSD Volume Type

인스턴스 유형 : t3.nano

Key Pair : 앞서 생성했던 Peter_VPNTest_Key

  • 네트워크 설정
    • VPC : Cloud-vpc
    • 서브넷 : Cloud-subnet-Public1
    • 퍼블릭 IP : 활성화
    • 보안 그룹 : 앞서 생성하였던 Cloud-SSH-SG, Cloud-PingTest-SG

VPN Connection 연결 과정

1. Customer Gateway(CGW) 생성

이름 : OnPrem-CGW

BGP ASN : 65000

IP주소 : 13.228.78.255 (OnPrem-Server EC2의 퍼블릭 IP)

2. Virtual Private Gateway(VGW) 생성

이름 : AWS-OnPrem-VGW

Autonomous System Number(ASN) : Amazon 기본 ASN

아래와 같이 생성한 VGW를 Cloud-VPC에 Attach 시켜줍니다.

3. VPN Connection

아래와 같이 VPN Connection을 생성하여 줍니다.

이름 : AWS-OnPrem-Connection

대상 게이트웨이 유형 : 가상 프라이빗 게이트웨이(VGW)AWS-OnPrem-VGW

고객 게이트웨이 : 기존OnPrem-CGW

정적 접두사 : 172.32.0.0/16OnPrem VPC의 IPv4 CIDR 대역을 기입

※ 선택 사항

  • 로컬 IPv4 네트워크 CIDR : 고객 게이트웨이와 VPN상에서 통신할 대역을 제한
  • 원격 IPv4 네트워크 CIDR : AWS측과 VPN상에서 통시할 대역을 제한

※ 터널 옵션 항목은 기입하지 않아도 AWS에서 자동으로 생성해줍니다.

따라서 이번 실습에서는 따로 옵션 지정 없이 그대로 사용할 예정입니다.

만일 사전에 준비된 키가 있다면 입력하여 사용 하실 수 있습니다.

VPN Connection을 생성하고 State가 available이 될 때 까지 잠시 기다린 후 하단의 Tunnel Details 항목에서 2개의 VPN Tunnel을 확인할 수 있습니다. 아직은 두 터널 모두 Down 상태인 것이 정상입니다.

4. Configuration 다운로드

다시 Site-to-Site VPN Connection 메뉴로 돌아와서 AWS-OnPrem-Connection을 선택하고 상단의 Download Configuration 클릭합니다.

아래와 같이 구성을 맞추고 다운로드 합니다.

공급 업체 : openswan

플랫폼 : openswan

소프트웨어 : openswan 2.6.38+

IKE버전 : ikev1

  • 다운로드 화면

5. openswan 설정

  • OnPrem-Server EC2에 SSH로 접속한 상태에서 root 권한으로 전환합니다.
[ec2-user@ip-10-0-0-195 ~]$ sudo su -
  • 이 단계에서부터 필요한 내용은 앞서 다운로드한 Configuration 파일에서 그대로 복사합니다.
  • /etc/ipsec.d/aws.conf 설정을 아래와 형식에 맞게 내용을 수정 후 저장해줍니다.
[root@ip-172-32-10-234 ipsec.d]# vim /etc/ipsec.d/aws.conf

conn Tunnel1
authby=secret
auto=start
left=%defaultroute
leftid=13.228.78.255
right=18.143.239.236
type=tunnel
ikelifetime=8h
keylife=1h
phase2alg=aes_gcm
ike=aes128-sha1
keyingtries=%forever
keyexchange=ike
leftsubnet=172.32.0.0/16
rightsubnet=52.0.0.0/16
dpddelay=10
dpdtimeout=30
dpdaction=restart_by_peer
  • /etc/ipsec.d/aws.secrets 설정을 아래와 같이 다운로드한 Configuration 파일에서 Pre-Shared Key 값을 붙여 넣습니다.
13.228.78.255 18.143.239.236: PSK "u94wi4E9Ybba1tmS4GrQyXL8MMYdXKwl"
<위 값은 사람마다 다름>
  • 아래 명령을 실행하여 openswan(ipsec) 서비스 시작 해줍니다.
systemctl start ipsec.service
systemctl enable ipsec.service
systemctl status ipsec.service
  • 아래와 같이 정상적으로 Active 되었는지 확인합니다.

라우팅 테이블 전파 활성화 및 PingTest

전파를 활성화 하기 전 Cloud VPC내의 EC2(Cloud-Server)에서 OnPrem VPC 내의 EC2(Cloud-Server) 프라이빗 ip로 ping 테스트를 실시하면 아래와 같이 ping이 가지 않는 것을 확인 할 수 있습니다.

VGW를 통해 CGW와 연결되어 VPN이 구성되게 되는데, 이 과정에서 둘 사이의 라우팅 테이블을 주고받기 위해서는 AWS즉, Cloud VPC의 라우팅 테이블에서 라우팅 전파 옵션을 활성화 시켜야 합니다.

왼쪽 메뉴에 Route Tables을 선택한 후 Cloud-rtb-public를 선택해 줍니다.

그 다음 Edit route propagation 버튼을 눌러 라우팅 전파 옵션을 편집해줍니다.

그렇다면 아래와 같이 자동으로 라우팅 테이블 라우팅 대상에 자동으로 입력되는 것을 확인하실 수 있습니다.

그런 다음 각 인스턴스의 Private IP로 Ping 테스트를 해보면 정상적으로 Ping이 수신 되는 것을 확인하실 수 있습니다.

이번 구성을 진행하면서 Site-to-Site VPN은 단순히 VPN 연결 리소스를 생성하는 것만으로 완성되는 것이 아니라는 점을 알 수 있었습니다. 양쪽 네트워크의 게이트웨이와 라우팅 설정, 터널 상태, 실제 트래픽이 이동하는 경로까지 함께 이해해야 정상적인 통신을 구성할 수 있었습니다.

처음에는 각각의 설정 항목이 독립적으로 보였지만, 직접 연결 과정을 따라가면서 모든 구성 요소가 하나의 네트워크 경로를 만들기 위해 서로 연결되어 있다는 점을 이해할 수 있었습니다. 이번 경험을 통해 하이브리드 네트워크의 기본적인 연결 구조를 보다 명확하게 익힐 수 있었으며, 앞으로 비슷한 VPN 연결 문제를 마주했을 때도 구성 요소별로 원인을 나누어 확인할 수 있을 것 같습니다.

글 | 메가존클라우드 Commercial Managed Unit 최영훈 매니저

게시물 주소가 복사되었습니다.

이런 콘텐츠도 있어요!

    테크

    RDS MySQL 성능 테스트를 통한 최적화

    Amazon Relational Database Service(Amazon RDS)는 AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스입니다. 이 서비스는 산업 표준 관계형 데이터베이스를 위한 경제적이고 크기 조절이 가능한 용량을 제공하고 공통 데이터베이스 관리 작업을 관리합니다.

    비즈니스

    금융 서비스 기업이 Datadog을 선택하는 이유통합 옵저버빌리티로 리스크를 줄이고 경쟁력을 높이다

    금융 서비스 산업에서는 시스템 안정성과 보안이 곧 경쟁력입니다. Datadog은 AI 기반 통합 옵저버빌리티를 통해 코어뱅킹부터 모바일 앱까지 전체 IT 환경을 하나의 플랫폼에서 모니터링하며, 빠른 장애 대응과 규제 준수, 비용 최적화까지 지원합니다. 실제 글로벌 금융 기업들의 도입 사례와 함께 Datadog의 핵심 가치를 소개합니다.

    테크

    1부. AI는 잘 도입했는데, 왜 비용에서 실패할까?

    AI는 왜 기존 IT보다 비용 관리가 어려울까?
    기존 IT 시스템은 서버와 스토리지 사용량을 기반으로 비교적 예측 가능한 비용 구조를 가지고 있었습니다. 반면 생성형 AI는 GPU 사용량, API 호출, 데이터 처리, 모델 추론 등 다양한 요소가 동시에 비용에 영향을 미칩니다.