본문 바로가기

NHN Cloud

[NHN Cloud] Site-to-Site VPN 설정

반응형

1. 소개

NHN Cloud에서는 Site-to-Site VPN을 Native 서비스로 제공하고 있습니다. Site-to-Site VPN 서비스는 온프레미스 네트워크 사이에 암호화(IPSec)된 네트워크 연결을 제공합니다.

 

2. 주요기능

현재(23년 11월) Site-to-Site VPN 서비스는 BETA로 서비스를 제공하고 있습니다. 지원 가능한 고객 게이트웨이는 forti, srx, paloalto 장비에 대해서 지원하고 있습니다.

 

3. 구성도

아래에서는 Site-to-Site VPN 설정을 테스트할 구성도입니다.

 

 

 

  • 각 프로젝트2는 On-premise 환경으로 가정합니다.
  • 프로젝트 1에서 Site-to-Site VPN 서비스를 구성하여 프로젝트 2에 있는 vpn(openswan)과 연결합니다.

3.1 기본구성

기본적인 VPC, EC2구성은 완료된 상태로 가정합니다.

  1. VPC
  2. Subnet
  3. Internet Gateway
  4. EC2(test, db)
  • 2개의 VPC가 구성되어있으며 각 VPC에 대한 서브넷은 Public Subnet, Private Subnet, DB Subnet으로 구성되어있다고 가정합니다.

4. VPN 인스턴스 생성

프로젝트2에서 Project-2 VPC의 public subnet에 VPN용 인스턴스를 생성합니다.

인스턴스 생성 후 Floating IP를 연결합니다.

 

 

생성된 서버에 접속 후 아래 명령어로 VPN(openswan)을 설치합니다.

 

sudo yum install openswan -y

 

5. Site-to-Site VPN 구성

프로젝트 1에서 VPN Gateway(Site-to-Site VPN) 서비스를 구성합니다.

Network > VPN Gateway(Site-to-Site VPN) > 관리 항목에서 VPN 게이트웨이를 생성합니다. 

 

 

 

Network > VPN Gateway(Site-to-Site VPN) > VPN 연결 생성에서 VPN 연결을 진행합니다.

 

 

  • 게이트웨이: 앞서 관리 항목에서 생성한 Gateway를 설정합니다.
  • 피어게이트웨이 주소: 프로젝트 2의 vpn 서버 public ip 입니다.
  • 피어 대역: 프로젝트 2의 VPC 대역입니다.
  • Pre-Shared Key: 사전 공유 키 입니다.

 

 

피어 게이트웨이 주소 IP(133.186.251.54)를 확인합니다.

 

6. VPN 연결

프로젝트 2에서 생성한 vpn 서버에서 아래 명령어로 vpn 상세 설정을 진행합니다.

아래와 같이 forward 설정을 진행합니다.

sudo vim /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0

 

/etc/ipsec.d/nhn.conf 파일을 생성하고 아래와 같이 설정을 진행합니다.

 

sudo vim /etc/ipsec.d/nhn.conf

conn NHNVPN1
        authby=secret
        auto=start
        left=%defaultroute
        leftid=133.186.251.54
        right=125.6.42.33
        type=tunnel
        ikelifetime=8h
        keylife=1h
        phase2alg=aes192-sha1;modp1536
        ike=aes192-sha1;modp1536
        keyingtries=%forever
        keyexchange=ike
        leftsubnet=172.16.0.0/12
        rightsubnet=10.0.0.0/8
        dpddelay=10
        dpdtimeout=30
        dpdaction=restart_by_peer
        overlapip=yes

 

  • leftid: vpn 서버의 public ip를 설정합니다.
  • right: 프로젝트 1에서 site-to-site VPN의 피어 게이트웨이 주소 IP(133.186.251.54)를 설정합니다.
  • leftsubnet: vpn 서버의 VPC 대역을 설정합니다.
  • rightsubnet: 프로젝트 1의 site-to-site VPN의 VPC 대역을 설정합니다.

 

/etc/ipsec.d/nhn.secrets 파일을 생성하여 VPN 연결 생성 시에 넣었던 사전 공유키를 설정합니다.

 

sudo vim /etc/ipsec.d/nhn.secrets

133.186.251.54 125.6.42.33: PSK "pjtVPNtest!"

 

 

아래 명령어로 ipsec.service를 재시작합니다.

 

sudo systemctl start ipsec.service

 

 

아래 명령어로 vpn 연결이 정상적으로 이루어졌는지 확인합니다.

NHN Cloud 콘솔창에서는 vpn이 정상적으로 연결되었는지는 확인이 불가능해서 아래와 같은 명령어를 통해서 확인을 진행합니다.

 

sudo ipsec status | grep active

 

active에 숫자가 1로 올라가져 있다면 정상적으로 연결되었다고 가정합니다. ipsec status의 결과는 아래와 유사합니다.

 

000 Total IPsec connections: loaded 1, active 1

 

7. 라우팅 테이블 설정

project 간에 site-to-site vpn을 통해서 통신하기 위해서는 라우팅 테이블 설정이 필요합니다.

아래는 프로젝트 1에서 설정한 내용입니다.

 

 

test서버가 위치한 라우팅 테이블에서 라우트 생성을 진행합니다.

 

  • 대상 CIDR: 프로젝트 2의 VPC 대역으로 설정합니다. (만약 특정 subnet만 설정하고 싶다면 CIDR를 수정해서 설정할 수 있습니다.)
  • 게이트웨이: VPN Gateway > 관리에서 생성한 pjt-1 을 설정합니다.

 

아래는 프로젝트 2에서 설정을 진행합니다.

 

 

db 인스턴스가 위치한 서브넷의 라우팅 테이블을 수정합니다. 현재 vpn 인스턴스를 vpn으로 가정하고 설정하였기 때문에, test 서버 방향으로 통신을 할 경우에는 넥스트 홉을 게이트웨이로 설정해야 합니다.

양방향 통신이 필요해서 양쪽의 라우팅 설정이 필요합니다.

 

  • 대상CIDR: 프로젝트 1의 VPC 대역을 설정합니다.
  • 게이트웨이: vpn 인스턴스로 설정합니다.

 

8. 테스트

8.1 NAT 처리

ping 테스트 진행 전 vpn 서버에서 NAT 처리가 필요합니다. 

vpn 서버에 접속 후 아래 명령어로 NAT 설정을 진행합니다.

 

sudo iptables -t nat -I POSTROUTING -s 10.0.0.0/8 -d 172.16.0.0/12 -j SNAT --to-source 172.16.1.87

 

10.0.0.0/8 대역에서 오는 트래픽을 172.16.0.0/12 대역을 대상으로 SNAT를 적용하여 소스 IP를 172.16.1.87로 변환하는 것을 의미합니다.

 

-s: 프로젝트 1의 VPC 대역을 설정합니다.

-d: 프로젝트 2의 VPC 대역을 설정합니다.

--to-source: 프로젝트 2의 vpn 인스턴스의 private ip를 작성합니다.

 

8.2 ping 테스트

프로젝트 1의 test 서버에서 프로젝트 2의 db 서버로 ping 테스트를 진행합니다.

 

정상적으로 통신이 가능한 것을 확인할 수 있습니다.

만약 통신이 정상적으로 되지 않는다면 DB의 SG(security Group)에서 ICMP을 오픈합니다.

 

 

NHN Cloud의 Site-to-Site VPN을 통해서 test서버에서 db 서버로 통신이 가능한 것을 확인했습니다.

반응형