본문으로 바로가기
반응형

이번 시간엔 온프레미스 환경과 퍼블릭 클라우드 환경을 VPN으로 연결하여 하이브리드 클라우드를 구축해보도록 하겠다. 

(온프레미스 환경은 VMware으로 Untangle을 이용하여 구현하였고 퍼블릭 클라우드는 AWS를 사용하였다.)

 

<시나리오>

AWS에 웹서버가 있고 온프레미스 환경(집, 회사 등)에 데이터베이스가 있다. 

VPN을 통해 서로 통신이 되도록 한다.

 

 

<사전 구성>

VMware에 Untangle과 Ubuntu 16.04를 설치한다. 

 

 

Untangle의 Settings

Untangle의 첫 번째 랜카드는 NAT, 두 번째 랜카드는 LAN segment로 하고 vSwitch를 준다.

(LAN segment는 가상의 스위치를 만들어준다.)

 

Untangle은 IP 공유기 역할을 하면서 DHCP 서버이기도 하다.

첫 번째 랜카드를 NAT로 한 이유는 인터넷이 되게 하는 외부 NIC이고 

두 번째 랜카드를 LAN segment로 한 이유는 Ubuntu와 연결하는 내부 NIC이다.

따라서 Ubuntu는 인터넷을 할 수 있다.

(Untangle을 UTM 이라고도 한다.)

 

Ubuntu의 Settings

Ubuntu를 처음 설치할 때는 DHCP로 IP를 할당받을 수 있게 랜카드를 NAT로 사용한다.

그 후 설치가 완료되면 Ubuntu 종료 후 랜카드를 LAN segment에 vSwitch로 연결한다.

 

 

1. VPC 및 EC2 인스턴스 생성하기

 

1.1 VPC 생성

 

MY-VPC (172.32.0.0/16)라는 VPC를 만들어준다.

 

 

퍼블릭 서브넷 용도로 사용할 서브넷을 만들어준다. (MY-PRIVATE : 172.32.1.0/24)

 

 

인터넷 게이트웨이(MY-IGW)를 생성하고 MY-VPC에 연결한다.

 

 

 

MY-VPC 라우팅 테이블에 인터넷 게이트웨이 등록 및 서브넷 연결을 해준다.

 

 

1.2 EC2 인스턴스 생성

 

WEB이라는 인스턴스를 생성하였고 퍼블릭 IP 자동 할당 기능은 비활성화하였다.

(그 외의 AMI, 인스턴스 유형, 스토리지 등은 기본값을 사용하였다.)

 

※ 웹서버에 처음에 퍼블릭 IP를 주지 않고 추후에 EIP를 통해 인터넷과 연결할 것이다.

 

 

인스턴스 WEB의 보안 그룹(SG-WEB)의 인바운드 규칙은 위치 무관으로 해준다.

 

 

 

 

2. VPN 생성하기

 

2.1 고객 게이트웨이 생성

VPC 서비스에서 VPN 선택 후 고객 게이트웨이 생성을 눌러준다.

여기서 고객 게이트웨이는 local(고객 쪽)을 의미한다.

 

 

고객 게이트웨이는 MY-CGW로 지정하며 

라우팅은 정적,

IP주소는 내 IP를 넣어준다.

 

이렇게 MY-CGW가 생성되었다.

 

 

2.2 가상 프라이빗 게이트웨이 생성

 

이번에는 가상 프라이빗 게이트웨이를 생성한다.

가상 프라이빗 게이트웨이는 Remote(AWS 쪽)을 의미한다.

 

 

가상 프라이빗 게이트웨이는 MY-VGW로 지정하며 ASN은 기본을 선택하고 생성해준다.

 

 

생성하면 저렇게 detached 상태가 되는데 이것을 MY-VPC에 연결한다.

 

 

 

MY-VGW가 attaching 상태가 되었다.

 

 

2.3 사이트 간 VPN 연결 생성 

 

고객, 가상 프라이빗 게이트웨이 작업이 끝났으면 

이제는 사이트 간 VPN 연결을 생성해준다.

 

 

VPN 이름을 MY-VGW-CGW-CONECTION으로 지정하였다.

대상 게이트웨이 유형은 가상 프라이빗 게이트웨이, MY-VGW로 지정하고

고객 게이트웨이는 MY-CGW로 지정한다.

 

라우팅 옵션은 정적을 선택한 다음 Untangle 뒤쪽에 있는 Ubuntu 데이터베이스의 CIDR 값인 

10.0.0.0/24를 넣어준다.

 

터널 옵션은 기본 옵션 사용을 선택하고 VPN 연결 생성을 클릭한다.

(기본 옵션을 사용하면 터널 내부의 CIDR 값, 공유 키 등을 AWS가 알아서 지정해준다.)

 

※ 터널 옵션

터널 옵션에서 터널이 2개가 있는데 그 이유는

2개 중에 하나는 이용 중에 있고 다른 하나는 스탠바이 상태인데 이용 중에 있는 터널이 문제가 생겨서 

사용할 수 없게 되면 스탠바이하고 있던 터널로 옮겨서 사용할 수 있게 한다. 즉, Failover 기능이다.

(하지만 이렇게 Failover 상태이어서 수 초가 아닌 수 분 정도는 중단이 된다. 무중단을 추구하지만

어쩔 수 없이 몇 분 동안은 장애가 발생한다.)

 

 

※ 터널링

VPN은 두 지점 간의 트래픽들을 암호화해서 누군가가 그 트래픽을 해석할 수 없도록 터널링 한다.

터널링을 통해서 캡슐화되어 있어서 실제로 WireShark 같은 걸로 통해서 트래픽을 도청하려고 보면

IP 등이 알던 것과는 전혀 다르게 되어있어서 해커들이 원하는 정보를 얻을 수 없게 된다.

 

키를 가지고 데이터를 암호화시키는 거고 터널 내부에 IP CIDR가 있는데 내가 로컬에서 이용하고 있는

데이터베이스의 10.0.0.0/24와 내가 만든 MY-VPC의 172.32.0.0/16이 있는데

터널링 기능을 사용하게 되면 해커가 트래픽을 도청해서 볼 때 172.32.0.0/16이란 CIDR가 없고 

10.0.0.0/24라는 CIDR도 없다. 

터널 안에서만 왔다 갔다 하는 IP가 따로 정해져 있기 때문에 해커가 도청을 해도 의미가 없게 된다.

(해커한테 트래픽 도청의 의미는 우선적으로 출발지와 목적지의 IP를 먼저 알아야 하는데

터널링 때문에 의미가 없어진다.)

 

대기 중 상태가 되는 데 사용 가능 상태가 될 때까지 기다린다.

 

사용 가능 상태가 되면 구성 다운로드를 클릭한다.

 

 

공급업체 : Microsoft

플랫폼 : Windows Server

소프트웨어 : 2012 R2 (원래는 윈도우 2021 서버를 이용해야 했지만 대신 Untangle을 사용하였다.)

위와 같이 구성하고 다운로드를 클릭한다.

 

그러면 VPN 텍스트 파일이 다운로드된다.

 

VPN 텍스트 파일을 통해서 Untangle에 구성해준다.

 

Untangle 로그인 후 Apps에 들어가서 IPsec VPN을 클릭한다.

IPsec Tunnels에 Add로 들어가서 VPN 텍스트에 나와있는 터널 2개를 만들어준다.

 

구성할 때 Phase 1을 체크하고 

Encryption : AES-128

Hash : SHA-1로 설정해야 한다.

 

 

 

이렇게 두 지점 간에 모든 세팅이 끝났다.

이제 라우팅 테이블에 VPN을 등록해줘야 한다. 

 

 

 

라우팅 테이블에 등록이 완료되었으면 

WEB 인스턴스의 프라이빗 IP(172.32.1.10)로 Ubuntu 데이터베이스에서 핑을 해본다.

 

 

 

EC2 인스턴스로 핑이 간다.

정상적으로 VPN 연결이 된 것을 볼 수 있다.

 

 

3. 온프레미스 데이터베이스에서 인스턴스로 접속하기

 

데이터베이스에서 인스턴스로 SSH 접속 시도를 해보면 접속이 되지 않는다.

 

Ubuntu 데이터베이스에서 AWS 인스턴스로 접속하기 위해서는 호스트에 있는 키를

데이터베이스로 가져와야 한다.

 

키를 데이터베이스로 옮기기 위해 'Berryz WebShare'를 사용하였다.

 

WebShare0.952Rev1187.zip
0.99MB

 

3.1 Berryz WebShare

 

웹쉐어의 환경설정에서 80 포트 대신 8080 또는 8888로 변경해주고

VMware의 IP 대역을 선택한다.

 

 

ftp라는 폴더를 만들었고 그 안에 EC2 인스턴스의 키가 들어있다.

 

 

웹 브라우저 주소창에 192.168.10.1:8888로 접속해보면 키가 올라와 있는 것을 확인할 수 있다.

이제 Ubuntu 데이터베이스에서 wget을 이용하여 다운로드해준다.

 

 

wget http://192.168.10.1:8888/ftp/test.pem을 통해 

test.pem 키가 정상적으로 받아졌다.

 

키의 권한을 400으로 주고 ssh -i 옵션을 주어 EC2 인스턴스에 접속해보면

정상적으로 접속한 것을 볼 수 있다.

 

 

3.2 EIP 할당하여 인터넷과 통신하기

 

현재 인스턴스에 퍼블릭 IP가 없으므로 구글로 핑이 안 나가는 것을 볼 수 있다. 

 

인스턴스가 인터넷과 통신하기 위해 EIP를 할당하여 통신이 되도록 한다.

 

 

 

정상적으로 인터넷과 통신이 되는 것을 볼 수 있다.

 

이렇게 VPN을 통해서 온프레미스 환경과 클라우드 환경을 연결하여 통신이 되도록 하였다.

 

반응형