본문 바로가기

클라우드/Public Cloud(Naver, Amazon)

AWS VPN 설정 (openswan 실습)

VPN이란 Virtual Private Network 즉 가상 사설망을 의미한다. 공중망을 통한 연결을 전용선처럼 사용하는 효과를 누릴수 있도록 하는 것이다. 기존의 인터넷 서비스를 사용하고 있는데 이것을 사설 네트워크처럼 쓰고 싶다면 가상으로 사설망을 만들어 사용하는 것이다. (전용선의 개념) -> 보안이 철저해야 하는 서버의 전용선을 구축하기 힘들 때 인터넷 회선을 빌려 쓰는 기술이다. 

 

VPN은 인터넷 연결을 암호화하여 보안을 극대화하는 장점을 가지고 있고, 통신 비용의 절감의 효과 등 장점을 가지고, 저렴한 가격에 매력적인 서비스를 제공하지만 인터넷의 특징인 보안상의 위험에 노출되는 단점과 기존의 속도보다 느리다는 등과 같은 단점도 가지고 있다.

 

AWS환경에서 실습을 하겠다. 서울리전과 도쿄리전의 ec2에 VPN을 설정하여 사설 망 통신을 해보겠다.

(직접 IDC환경을 구축하지 않았다. openswan이라는 오픈소스를 통해 가상의 IDC 환경을 구성하였다. tokyo리전이 아래쪽에 IDC환경이라고 생각하면 된다.)

먼저 기초적인 세팅을 한다. (VPC, EC2 생성 -> 생략)

Seoul 리전

VPC -> 172.30.0.0/16 

Pub Subnet -> 172.30.1.0/24 (RT igw 추가)

Pri Subnet -> 172.30.11.0/24 (RT nat-gw 추가)

Pub ec2(Bastion) -> 공인 IP xxx.xxx.xxx.xxx, 사설 IP 172.30.1.11

Pri ec2 -> 사설 IP 172.30.11.210

생성이 완료되면 Pri ec2에 ssh 접속까지 한다.

Tokyo 리전

VPC -> 10.11.0.0/16

Pub Subnet ->  10.11.1.0/24(RT igw 추가)

Pub ec2(openswan) -> 공인 IP xxx.xxx.xxx.xxx, 사설 IP 10.11.1.182

역시 생성이 완료되면 Pub ec2(openswan)에 ssh 접속!

 

기초 세팅이 완료되면 Seoul 리전에서 고객 게이트웨이를 생성한다. (IDC 측 게이트웨이)

이름을 입력하고 라우팅 정적으로 설정한 후 IP 주소는 openswan의 공인 ip를 입력하면 생성이 완료된다.

가상 프라이빗 게이트웨이는 VPN연결의 AWS측 VPN 접선기이다. 하나의 VPC에는 하나의 가상 프라이빗 게이트웨이만 연결할 수 있다. 자율 시스템 번호(ASN)는 사용자 지정하여 생성할 수 있다. 고객 게이트웨이와 가상 프라이빗 게이트웨의 ASN이 같으면 VPN연결 생성 시 에러가 발생하기 떄문에 달라야 한다.

프라이빗 게이트웨이를 생성한다.

이름을 입력하고 Amazon 기본 ASN으로 하겠다.

생성완료 후에 가상 프라이빗 게이트웨이를 VPC에 연결하여야 한다. 

서울리전에 해당되는 VPC를 선택하고 연결한다.

이제 VPN 연결을 생성해야 한다. VPN 연결 생성 클릭!

이름을 입력하고 생성했던 가상 프라이빗 게이트웨이와 고객 게이트웨이를 클릭하고 라우팅 옵션은 정적으로 설정하고 openswan(데이터 센터)의 사설 ip를 입력하여 준다. (터널 옵션은 고객에서 제공해주는 값을 사용할 수 있으나 AWS에서 생성된 값을 사용하는 것이 편리하다.)

그 후 VPN 속성에서 구성 다운로드 를 클릭한 후 openswan을 선택한 후 다운로드 한다.

다운로드 하면 설정해야 할 메뉴얼들이 나온다.

이제 openswan을 설정하겠다. tokyo 리전의 Pub ec2에 ssh 접속한다.

메모장의 메뉴얼들을 간단히 정리했다. (구성 다운로드 한 메뉴얼 그대로 따라서 실행하면 된다.)

----------------------------------------------------------------------------------------------------------------------------------

yum install -y openswan 

vi /etc/sysctl.conf (

net.ipv4.ip_forward = 1 #아래쪽에 값 추가
net.ipv4.conf.default.rp_filter = 0 #아래쪽에 값 추가
net.ipv4.conf.default.accept_source_route = 0 #아래쪽에 값 추가

:wq

sysctl -p

vi /etc/ipsec.conf

include /etc/ipsec.d/*.conf #이 값이 주석이 풀어져 있어야 한다.

vi /etc/ipsec.d/aws.conf

conn Tunnel1
            authby=secret
            auto=start
            left=%defaultroute
            leftid=xxx.xxx.xxx.xxx # 도쿄리전 IDC(openswan) 공인 ip
            right=xxx.xxx.xxx.xxx # VPN Tunnel의 외부 ip (터널 하나)
            type=tunnel
            ikelifetime=8h
            keylife=1h
            phase2alg=aes128-sha1;modp1024
            ike=aes128-sha1;modp1024
            keyingtries=%forever
            keyexchange=ike
            leftsubnet= <LOCAL NETWORK> # [ IDC의 사설 IP 대역(tokyo) ex) 10.11.0.0/16]
            rightsubnet= <REMOTE NETWORK> # [ AWS의 사설 IP 대역(Seoul) ex) 172.30.0.0/16]
            dpddelay=10
            dpdtimeout=30
            dpdaction=restart_by_peer

:wq

vi /etc/ipsec.d/aws.secrets

xxx.xxx.xxx.xxx(leftid) xxx.xxx.xxx.xxx(rightid):PSK "(메모장의 암호화 키)"

:wq

 

systemctl restart ipsec.service

systemctl status ipsec # 무사히 active 되어있는지 확인한다

-----------------------------------------------------------------------------------------------------------------------------------

그 후 보게 되면 VPN의 상태가 사용가능으로 바뀌고 Tunnel1이 작동함을 확인할 수 있다.

 

여기서 라우팅 테이블도 고쳐야 한다. 서울리전의 Pri Subnet의 라우팅 테이블에 추가한다. Pri ec2에서 가상 프라이빗 게이트 웨이를 거쳐 IDC의 사설 IP 대역에 도달하여야 한다. (대상: 생성한 가상 프라이빗 게이트웨이, IDC의 사설 IP대역)

이렇게 하면 무사히 모든 설정이 완료된다. ping으로 테스트를 해보겠다.

서울 리전(Pri ec2) -> IDC(openswan)의 사설 ip

IDC(openswan)의 사설 ip -> 서울 리전(Pri ec2) 

무사히 사설 IP 대역끼리 ping이 완료됨으로 보아 VPN 설정을 성공적으로 마쳤다.