지니의 따듯한 공간

AWS - VPC를 이용한 프라이빗 네트워크 구축 및 OpenVPN 설치 본문

카테고리 없음

AWS - VPC를 이용한 프라이빗 네트워크 구축 및 OpenVPN 설치

Jineer 2020. 6. 1. 22:29

 

 

-------

서브넷

--------

마법사 이용해서 2개 바로만듬.

짝수 - 퍼블릭 / 가용영역 A     :       홀수 - 프라이빗 / 가용영역 B   

 

이제 VPC / 서브넷 생성했고, 외부와 통신하기 위해 퍼블릭 영역에 IGW 인터넷 게이트웨이 생성 해야한다.

이렇게  VPC에 IGW 연결했고, 라우팅 테이블 작성 시작

 

라우팅 테이블에 ip 경로 설정 ! 

퍼블릭 서브넷을 위한 라우팅 테이블,  

프라이빗 서브넷을 위한 라우팅 테이블 설정

라우팅 테이블을 서브넷에 연결 해준다.

igw를 검색해서, 아까 만들었던 인터넷게이트웨이를 선택하고, 저장 !

 

자, 그리고 ~!

사설망(프라이빗)에서 퍼블릭으로 연결을 할려면 무조건 NAT/PAT가 필요하다.

 NAT를 생성해보자~!

하지만, 마법사를 이용해서 생성해서 아까 NAT GATEWAY대신 NAT instanse 사용한다고 해서 자동 생성 된 상태

-----

NAT역할 하는게 있으니 , 다시 프라이빗 라우팅 테이블 작성 !

이번에는 NAT를 인스턴스로 생성 했으니 , IGW가 아니라 Instance를 누르고 NAT이 설치된 인스턴스 선택 해야한다 !

 

여기까지가 기본적인 VPC를 이용한 퍼블릭 , 프라이빗 네트워크 디자인 그리기 이다.

자, 이제~ 퍼블릭 서브넷에 OpenVPN 설치하기 ! 

프라이빗 영역에 웹 서버 설치~! 

VPC 마법사로 생성 할 때 , 키페어 생성 안하고 만들어서 처음에 NAT용 인스턴스 키페어 X ->

기존 이미지로 시작 -> 똑같은 인스턴스 생성 하면서 키페어 생성 

 

AWS는 중지했다가 다시 시작하면 DHCP에서 IP받아온다 -> 탄력적 IP 연결

 

만들었던 인스턴스에 원격 접속 고고 ! 

PuTTy  /  XShell  / TeraTerm 이용

유닉스 기반에서는 명령어를 통해 바로 ssh 접근 가능하지만,

윈도우에서 터미널 툴을 이용해서 접속하려면 퍼블릭 DNS를 이용해서 인스턴스에 연결한다.

 

ㅇㅇㅇ

우분투로 

ㅇ최초에는 경로를 선택해서 aws에서 생성할때 등록한 키 가져온다.

처음에 한번 연결에 실패했는데, nat ami가 리눅스 아마존으로 되어있어서 접속 계정을 ec2-user 로 바꾸고,

22번 포트가 닫혀있다고해서, aws 콘솔에서 보안그룹을 추가 했다.

 

git 페이지에 있는 docker 이미지를 다운 받기 위해 OS에 git 설치

sudo yum update -y

sudo yum install git -y

git version 

git 설치 확인
git clone 명령어를 이용해 깃 저장소에 올린 openVPN 설치된 docker 이미지 다운

git / 오픈 소스 기반으로 개발자들이 주로 사용하는 저장소 api등 많은 오픈 소스들을 찾아 볼 수 있다.

현재 위치를 금방 설치한 openvpn 경로로 이동 

https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/docker-basics.html

 

Amazon ECS의 도커 기본 사항 - Amazon Elastic Container Service

Amazon ECS의 도커 기본 사항 도커는 사용자가 Linux 컨테이너를 기반으로 하는 분산 애플리케이션을 빌드, 실행, 테스트 및 배포할 수 있도록 해주는 기술입니다. Amazon ECS는 작업 정의에 도커 이미��

docs.aws.amazon.com

도커 설치 안되어있으면 참고 하시길

 

도커가 설치 안되어있으면 도커 설치부터 ㄱㄱ

 

docker build -t cpjvpn . 명령어로 도커 이미지 생성
이렇게 뜨면 cpjvpn이름으로 도커 이미지 생성 완료 됬다는 뜻

이제 구성 파일과 키를 저장하기위한 볼륨이나 디렉토리가 필요하다. 

키가 해당 디렉토리에 저장되기 때문에 매우 중요한 단계 - 결과적으로 해당 디렉토리를 안전하게 유지하는 것이 좋다!

구성파일 + 키를 담을 디렉터리 생성

openVPN 구성 파일 생성  :뒤에 포트번호 적어서 포트번호 변경가능 , 기본은 1194

생성된 파일 확인

그 다음 PKI를 초기화 해야한다. 

이 때 CA 인증서 생성이 포함 , PKI에 속하는 개인키 있음. 개인키를 보호하기 위한 비밀번호 설정

해당 명령어

 

누구냐 이 오류는..

삭제하고 친한 Ubuntu로 간다.. Git은 이미 내장되어있었고, docker만 apt install docker.io 명령어로 설치

나머지는 같은방식으로 진행 -> 마찬가지로 같은 오류메세지로 실패 했다.

명령어로 easy-rsa 생성
그랬더니 이번엔 파일을 못 찾는다.. 

경로에서 자꾸 문제가 생기니까 Docker 위에서 작동하니까 docker 볼륨을 생성하고 거기로 경로를 수정 -> 오류 해결

docker volume create 명령어
다시 인증서 생성 하는 명령어 !
인증서 다운 중
인증서 생성 완료

비밀번호 jineer로 설정 했음! 루트 인증서는 생성 했으니 ,

 

 이제 클라이언트 개인용 인증서를 만들자 !

클라이언트 계정 + 비밀번호 없이 들어올 수 있게 생성 (키만 있으면 = nopass)

 사용자에게 배포할 클라이언트 config 파일 생성 ! 

 

OpenVPN 서버 실행 하고, AWS 보안 그룹 1194포트 허용해주자 ~! (Openvpn 기본 포트 :1194)

 

VPN 서버 실행
docker ps 명령어로 실행중인 docker 확인 가능 / vpnServer 동작 중인거 확인 가능 

이제 클라이언트에 파일 배포하고, 서버로 접속해보자~!

 

클라이언트 환경(윈도우)에서 XFTP 툴로 서버에 FTP연결

 

XFTP -> FTP를 이용해 서버에서 클라이언트 배포 파일 전송 ( 클라이언트 CN , 계정 정보 )

XFTP -> FTP를 이용해 서버에서 클라이언트 배포 파일 전송 ( 클라이언트 CN , 계정 정보 )

작업 표시줄 더보기 -> 자물쇠 모양 컴퓨터 우클릭 -> 파일 불러오기

Windows OpenVPN GUI를 설치하면 작업 표시줄 더 보기란에 자물쇠가 걸린 컴퓨터 아이콘이 생성

아이콘 클릭 -> 우클릭 -> 파일 불러오기

클라이언트 파일 선택 
우클릭 -> 연결 버튼 클릭
VPN 서버로부터 사설IP 할당 받음으로서 VPN 연결 확인
vpn서버로 부터 할당받은 ip 확인

CMD -> ipconfig -> IP정보 확인

whatismyip / ipinfo.io 사이트 접속해서 제대로 할당받은지 다시 확인 !

연결해 주었던 탄력 IP 및 VPN서버의 리전인 Tokyo로 위치정보 확인 

테스트 끝~!   

Split Tunnel 사용

추가적인 기능으로 OpenVPN 에서 Split Tunnel은 특정 아이피 대역을 VPN Gateway 를 통하도록 한다. 설치때 사용한 ovpn_genconfig 은 기본값으로 클라이언트의 모든 트래픽이 VPN 네트워크를 통하게 한다. 따라서 이를 변경해줘야 한다. AWS 내의 내부 자원이므로 아이피 대역은 VPC의 아이피 대역을 적어준다.

 

#push "redirect-gateway def1" # => 모든 트래픽이 VPN 을 통하는 설정, 주석처리 / 삭제

push "route 10.20.0.0 255.255.0.0 vpn_gateway" # VPC 대역에 접근할 때만 VPN 을 통하도록 클라이언트 접속 설정에 PUSH

 route VPC-ip 대역 

 

다중 클라이언트 접속

한 클라이언트 CN으로 동시에 접속가능하게 하려면 duplicate-cn 을 사용한다. 모바일과 PC에서 동시에 접속하려면 필요할 것이다.

duplicate-cn

 

 

Comments