IPSec VPN 설정

실습

IDC 를 AWS 다른 region 에 구성한 뒤, ec2로 openswan 을 설치한 cgw를 만든다.

이후 AWS VPC에서 SITE-TO-SITE VPN을 연결하는 실습을 해본다.

IDC 구성

임의로 IDC 를 구성해보았다. 오레곤 region에 openswam을 설치한 customer gateway device를 생성 하여 구성하였다.

  • Region : 오레곤

VPC 생성

  • name : hanna-idc-vpc
  • CIDR : 10.60.0.0/16
  • 테넌시 : Default

subnet 생성

Public subnet

‍

‍

Private subnet

‍

routing table 생성 및 서브넷 연결

Public routing table

‍

  • name : hanna-idc-public-rt
  • 0.0.0.0/0 → IGW

‍

Private routing table

routing table 생성

‍

‍

서브넷 연결

  • name : hanna-idc-private
  • 10.50.0.0/16 → IDC CGW EC2의 eni

‍

Internet Gateway 생성

IDC VPC의 Public subnet 전용 인터넷 게이트웨이를 생성한다.

‍

인터넷 게이트웨이 생성

‍

1. VPC에 연결

  • name : hanna-idc-IGW

‍

라우팅 테이블 편집

Public subnet routing table 편집

‍

public subnet에 IGW를 추가한다.

‍

‍

CGW 인스턴스 생성

인스턴스 생성

‍

‍

보안그룹 생성

‍

‍

Openswarm 은 udp 4500 포트 사용

PING을 위해 ICMP를 허용하였으며, 터미널 접속을 위해 SSH Port 역시 열어두었다.

‍

eip 연결

‍

‍

sudo su -

yum install -y openswan

HTML

‍

 

/etc/sysctl.conf 파일을 수정하고, network를 다시 시작한다.

‍

# vi /etc/sysctl.conf

net.ipv4.ip_forward=1

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.eth0.send_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.eth0.accept_redirects = 0

net.ipv4.conf.ip_vti0.rp_filter = 0

net.ipv4.conf.eth0.rp_filter = 0

net.ipv4.conf.default.rp_filter = 0

net.ipv4.conf.all.rp_filter = 0

# systemctl restart network

HTML

‍

Private subnet에 EC2 생성

‍

해당 EC2는 VPN 구성 테스트를 위한 용도이다.

‍

보안그룹은 SSH와 ICMP만 허용.

라우팅 테이블 편집

Private subnet의 라우팅 테이블 편집

‍

‍

이후 생성 할 VPN의 VPC CIDR과 방금 전 public subnet에 생성한 CGW EC2의 ENI를 설정한다.

‍

(대상 → 네트워크 인터페이스 → hanna-idc-public)

‍

AWS 측

Site-to-Site vpn을 생성하여 고객 IDC와 연결을 맺는 AWS측 구성. Seoul 리전에 구성하였다.

VPC 생성

  • name : hanna-aws-vpc
  • CIDR : 10.50.0.0/16

Subnet 생성

라우팅 테이블 생성

서브넷 연결

인터넷 게이트웨이 생성

VPC 연결

ec2 생성

‍

‍

Site-to-Site VPN 연결

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

‍

  • 이름 : hanna-cgw
  • 라우팅 : 정적 (static)
  • ip 주소 : idc cgw 의 eip
  • 나머지는 설정하지 않아도 된다.

‍

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

VGW 생성 후 → vpc 에 연결

‍

‍

Site-to-Site vpn 연결 생성

‍

  • 앞서 만들어 둔 가상 프라이빗 게이트웨이와 고객 게이트 웨이를 입력한다.
  • 라우팅 옵션 : 정적
  • 정적 IP 접두사
    • 10.60.0.0/16 (IDC의 VPC CIDR을 입력한다)

‍

생성이 완료되면 사용가능 상태가 되지만, 터널 모두 작동 중지 상태인 것을 확인할 수 있다.

‍

터널을 UP 하기 위해서는 CGW에 구성을 따로 해주어야 한다.

‍

‍

라우팅테이블 설정

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

‍

중요한 점은, site-to-site vpn을 생성하기 전에 vgw 생성만 완료하고 라우팅 전파를 해주어야 하는 점이다.

‍

만약 vpn 을 생성하고 라우팅 테이블을 설정하면 라우팅 테이블 설정이 변경되지 않으며 tunnel 이 올라오지 않는다.

‍

‍

‍

라우팅 테이블의 idc vpc와 관련된 규칙은(맨 아래) 이후 자동으로 업데이트 된다.

‍

구성 다운로드

본격적으로 터널을 구성하기 위한 작업이다.

‍

site-to-site vpn 을 선택하여 맨 왼쪽 위의 구성 다운로드를 선택하여 다운받는다.

‍

‍

IDC VPC의 CGW에서 구성

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

‍

aws.conf 파일 생성

‍

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

conn Tunnel1

authby=secret

auto=start

left=%defaultroute

leftid=52.42.3.179

right=3.34.222.44

type=tunnel

ikelifetime=8h

keylife=1h

phase2alg=aes128-sha1;modp1024

ike=aes128-sha1;modp1024

# auth=esp

keyingtries=%forever

keyexchange=ike

leftsubnet=<LOCAL NETWORK>

rightsubnet=<REMOTE NETWORK>

dpddelay=10

dpdtimeout=30

dpdaction=restart_by_peer

HTML

‍

구성 파일을 다운로드하면 .txt 파일로 다운되어 안에 위와 같은 정보와 구성 방법이 안내 되어 있다.

‍

먼저 openswan을 설치한 cgw ec2의 /etc/ipsec.d/ 폴더에 aws.conf 와 같이 뒤에 .conf 로 끝나는 설정 파일을 생성하여 위의 내용을 복사 붙여 넣기 한다.

‍

‼️ 주의할 점

✅ leftid, rightid는 구성파일에 적혀있으므로 고대로 복사하면 되지만, leftsubnet, rightsubnet 은 입력해야한다.

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

‍

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

‍

aws.secrets 파일 생성

/etc/ipsec.d/aws.secrets

**52.42.3.179 3.34.222.44: PSK "hanna_tunnel1"**

HTML

‍

.secrets 로 된 파일을 생성하여 구성 파일에 있는 Pre-shared key 값을 복사 붙여넣는다.

‍

openswan(ipsec) 서비스 재시작

systemctl status ipsec.service

systemctl start ipsec.service

systemctl enabel ipsec.service

HTML

‍

# ipsec status

000 Total IPsec connections: loaded 1, active 1

HTML

‍

위와 같이 출력되면 제대로 터널이 up 된 것이다.

‍

[ec2-user@ip-10-60-0-134 ~]$ sudo netstat -nptul

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2477/rpcbind

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3094/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2892/master

tcp6 0 0 :::111 :::* LISTEN 2477/rpcbind

tcp6 0 0 :::22 :::* LISTEN 3094/sshd

udp 0 0 127.0.0.1:4500 0.0.0.0:* 17823/pluto

udp 0 0 10.60.0.134:4500 0.0.0.0:* 17823/pluto

udp 0 0 0.0.0.0:951 0.0.0.0:* 2477/rpcbind

udp 0 0 127.0.0.1:500 0.0.0.0:* 17823/pluto

udp 0 0 10.60.0.134:500 0.0.0.0:* 17823/pluto

udp 0 0 0.0.0.0:68 0.0.0.0:* 17406/dhclient

udp 0 0 0.0.0.0:111 0.0.0.0:* 2477/rpcbind

udp 0 0 127.0.0.1:323 0.0.0.0:* 2507/chronyd

udp6 0 0 :::951 :::* 2477/rpcbind

udp6 0 0 ::1:500 :::* 17823/pluto

udp6 0 0 fe80::5b:2bff:fe6b::546 :::* 17453/dhclient

udp6 0 0 :::111 :::* 2477/rpcbind

udp6 0 0 ::1:323 :::* 2507/chronyd

HTML

‍

4500 port에서도 정상적으로 서비스가 실행되는 것을 확인할 수 있다.

결과 확인

터널이 정상적으로 올라온 것을 확인할 수 있다.

  • AWS 측

  • Site-to-Site VPN 연결

  • IDC VPC의 CGW에서 구성

관련 키워드
클라우드
관련 키워드
클라우드
관련 콘텐츠
Tech Guide
클라우드
보안
AWS
Tech Guide
Tech Guide
클라우드
운영 최적화
AWS
Tech Guide
eBook
클라우드
운영 최적화
No items found.
eBook