VyOS를 이용하여 VPN환경을 구축해보고 테스트 해보자

2022.09.08

소개

안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 AWS에서 VyOS를 이용하여 VPN환경을 구축하고 테스트 하는 방법에 대해 알아 보겠습니다.

이번 블로그에서 TransitGateway 와 Site to Site VPN을 이용하여 온프레미스로 연결하기전에 테스트를 위해 AWS에서 VyOS를 이용하여 서로 다른 리전에 서버 환경을 구축하고 AWS측과 온프레미스측 으로 나누어 테스트를 해보았습니다.

VyOS란?

VyOS는 Debian GNU/Linux 기반의 오픈 소스 네트워크 운영 체제로 무료로 라우팅 플랫폼을 제공합니다. 표준 amd64, i586 및 ARM 시스템에서 실행되기 때문에 클라우드 배포를 위한 라우터 및 방화벽 플랫폼으로 사용할 수 있습니다.

AWS에서는 Marketplace에서 간단하게 생성이 가능합니다.

사용가능한 플랫폼

사용가능한 플렛폼과 설치 및 사용 방법에 대한 내용은 아래의 링크를 통해 확인해 주세요.

Marketplace 사용요금

공급업체 에서 권장하는 인스턴스 타입은 c5n.large 입니다.

시간당(c5n.large기준): 0.522$

자세한 요금 EC2하면에서 아래의 사진과 같이 확인해 주세요.

구축해보기

이번 구축환경은 테스트용으로 블로그 작성후 전부 삭제완료 했습니다.

사전 준비

AWS (Tokyo Region)

  • VPC
  • Public Subnet(InternetGateway포함)
  • Private Subnet
  • TrasitGateway
  • 서버용EC2
  • SecurityGroup
  • NatGateway
  • EC2용IAM(AmazonSSMManagedInstanceCore)

온프레미스 (Seoul Region)

  • VPC
  • Public Subnet
  • Public Subnet(InternetGateway포함)
  • VyOS용EC2
  • 서버용EC2
  • SecurityGroup
  • VyOS용EIP
  • NatGateway
  • EC2용IAM(AmazonSSMManagedInstanceCore)

VyOS 관련

VyOS는 가용역역 [a, c] 에서만 생성 가능함으로 꼭 참고해주세요

TransitGateway 관련은 아래의 블로그를 참고해 주세요

Site to Site VPN 관련은 아래의 블로그를 참고해 주세요

TransitGateway RouteTable설정

TransitGateway RouteTable를 VPC용과 VPN용 2개를 생성합니다.

(TransitGateway RouteTable 생성도 위의 TransitGateway 관련 블로그를 참고해 주세요.)

TransitGateway용 RouteTable설정

위에서 TransitGateway와 Site to Site VPN을 생성한 후 TransitGateway RouteTable를 VPC용과 VPN용 2개를 생성했다면 각각의 TransitGateway RouteTable에 연결 설정을 해줍니다.

TransitGateway용 RouteTable에는 [TransitGateway연결] 에서 생성한 VPC용 리소스를 설정합니다.

VPN용 RouteTable에는 [Site to Site VPN]에서 자동으로 생성된 VPN용 연결 리소스를 설정합니다.

전파 설정

위의 연결설정이 완료된 후 TransitGateway RouteTable에 전파 설정을 해줍니다.

TransitGateway용 RouteTable에는 [Site to Site VPN]에서 자동으로 생성된 VPN용 연결 리소스를 설정합니다.

VPN용 RouteTable에는 [TransitGateway연결] 에서 생성한 VPC용 리소스를 설정합니다.

Vyos 네트워크 인터페이스 설정

EC2 인스턴스 화면에서 Vyos인스턴스를 선택하고 아래에서[네트워킹] 탭을 클릭하고 [네트워크 인터페이스]를 클릭합니다.

네트워크 인터페이스 화면에서 [작업] 버튼을 클릭하여 [소스/대상 확인 변경] 을 클릭합니다.

활성화를 해제해주시면 됩니다.

VPC RouteTable설정하기

온프레미스 VPC RouteTable

서버가 생성되어 있는 PrivateSubent의 라우팅 테이블에서 AWS측의 VPC CIDR를 추가하고 위의 Vyos의 네트워크 인터페이스를 설정합니다.

AWS VPC RouteTable

서버가 생성되어 있는 PrivateSubent의 라우팅 테이블에서 온프레미스측의 VPC CIDR를 추가하고 TGW를 설정합니다.

VyOS인스턴스 설정하기

ssh -i "[keyname].pem" vyos@[ec2 IP Address]

그런다음 [VyOS ec2 인스턴스] 에 위의 ssh 명령어로 접속합니다. [] 부분을 수정해주세요

(![]는 지워야 합니다.)

configure

위의 명령을 입력하여 설정 모드로 전환합니다. 설정모드로 변환되면 vyos@vyos# 로 변경됩니다.

set protocols static route [온프레미스 PrivateSubnet CIDR] next-hop [Vyos의 Subnet의 VPC 라우터 용 IP]

설정 모드로 변경하신 후 위의 명령어로 VyOS 자체에 [온프레미스 PrivateSubnet CIDR]로 라우팅을 추가합니다. 이는 다음 network 문에서 선언하는 CIDR가 VyOS 라우팅 테이블에 있어야 하기 때문입니다.

그런다음 VPC의 서브넷의 첫 번째 주소가 VPC 라우터 용으로 예약되므로 예로 Vyos의 Subnet이 172.16.0.0/24 라고 한다면 아래와 같이 설정합니다.

next-hop 172.16.0.1

Site to Site VPN하면에서 [구성 다운로드] 버튼을 클릭하여 다운로드 하여 설정할 정보들을 준비합니다.

다운받은 구성파일에서 [ctrl+f or cmd+f]로 아래의 터널설정하는 부분으로 이동합니다.

IPSec Tunnel #1 IPSec Tunnel #2

#수정전
set vpn ipsec site-to-site peer XXX.XXX.XXX.XXX local-address ['VyOS의 public IP Address']
set protocols bgp 65000 network 0.0.0.0/0

#수정후
set vpn ipsec site-to-site peer XXX.XXX.XXX.XXX local-address ['VyOS의 private IP Address']
set protocols bgp 65000 network [온프레미스 VPC IP CIDR]

이동 후 위의 내용처럼 [] 부분에 [VyOS의 private IP Address][온프레미스 VPC IP CIDR]로 수정 해줍니다. 위에서 다운받고 수정한 구성파일을 전부 복사하여 VyOS 설정모드에서 붙여놓기를 합니다.

commit

설정된 내용을 커밋 합니다.

save

커밋을 완료한 후 오류가 없으면 저장해줍니다.

exit

저장이 완료된 후 설정 모드에서 빠져나옵니다.

설정 모드에서 빠져나오시면vyos@vyos:~$ 로 변경됩니다.

터널 상태 및 Route, BGP 확인해보기

터널상태 확인

show vpn ike sa

show vpn ipsec sa

위의 2개의 명령어 입력하면 각각 사진과 같이 터널상태가 [up] 되어있는 것을 확인할 수 있습니다.

Site to Site VPN 화면에서 터널세부 정보 탭에서 2개의 터널이 [Up] 이 되신것을 확인할 수 있습니다.

Route확인

위의 명령어를 입력하면 연결된 VyOS의 Routetable을 확인할 수 있습니다

BGP확인

위의 명령어를 입력하면 VyOS에 전파된 BGP를 확인할 수 있습니다.

VyOS에서 전파 설정하기

set protocols bgp 65000 address-family ipv4-unicast network [온프레미스 VPC CIDR]

위의 명령어를 설정한 시점에 [AWS의 TransitGateway Route Table의 경로 탭] 을 확인하시면 온프레미스 네트워크가 VPN을 통해 전파되어 추가되어 있는 것을 확인할 수 있습니다.

연결 확인해보기

온프레미스에서 AWS 쪽으로

AWS에서 온프레미스 쪽으로

마무리

이번 블로그에서는 다소 복잡하지만 TrasitGateway와 Site to Site VPN을 이용하여 온프레미스 환경과 연결하기전 테스트할 수 있는 방법에 대해 알아보았습니다. VPN 테스트 환경을 준비하기 어려우신 분이나 처음하시는분들에게 조금이나마 도움이 되었으면 좋겠습니다.

참고 자료

[정적 라우팅 으로 구성하는 방법]

[VyOS구축 및 설정에 관한 블로그들]

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !