AWS - VPC를 이용한 프라이빗 네트워크 구축 및 OpenVPN 설치
-------
서브넷
--------
짝수 - 퍼블릭 / 가용영역 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를 이용해서 인스턴스에 연결한다.
우분투로
처음에 한번 연결에 실패했는데, nat ami가 리눅스 아마존으로 되어있어서 접속 계정을 ec2-user 로 바꾸고,
22번 포트가 닫혀있다고해서, aws 콘솔에서 보안그룹을 추가 했다.
git 페이지에 있는 docker 이미지를 다운 받기 위해 OS에 git 설치
sudo yum update -y
sudo yum install git -y
git version
git / 오픈 소스 기반으로 개발자들이 주로 사용하는 저장소 api등 많은 오픈 소스들을 찾아 볼 수 있다.
현재 위치를 금방 설치한 openvpn 경로로 이동
https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/docker-basics.html
도커 설치 안되어있으면 참고 하시길
이제 구성 파일과 키를 저장하기위한 볼륨이나 디렉토리가 필요하다.
키가 해당 디렉토리에 저장되기 때문에 매우 중요한 단계 - 결과적으로 해당 디렉토리를 안전하게 유지하는 것이 좋다!
openVPN 구성 파일 생성 :뒤에 포트번호 적어서 포트번호 변경가능 , 기본은 1194
그 다음 PKI를 초기화 해야한다.
이 때 CA 인증서 생성이 포함 , PKI에 속하는 개인키 있음. 개인키를 보호하기 위한 비밀번호 설정
삭제하고 친한 Ubuntu로 간다.. Git은 이미 내장되어있었고, docker만 apt install docker.io 명령어로 설치
나머지는 같은방식으로 진행 -> 마찬가지로 같은 오류메세지로 실패 했다.
경로에서 자꾸 문제가 생기니까 Docker 위에서 작동하니까 docker 볼륨을 생성하고 거기로 경로를 수정 -> 오류 해결
비밀번호 jineer로 설정 했음! 루트 인증서는 생성 했으니 ,
이제 클라이언트 개인용 인증서를 만들자 !
사용자에게 배포할 클라이언트 config 파일 생성 !
OpenVPN 서버 실행 하고, AWS 보안 그룹 1194포트 허용해주자 ~! (Openvpn 기본 포트 :1194)
이제 클라이언트에 파일 배포하고, 서버로 접속해보자~!
XFTP -> FTP를 이용해 서버에서 클라이언트 배포 파일 전송 ( 클라이언트 CN , 계정 정보 )
Windows OpenVPN GUI를 설치하면 작업 표시줄 더 보기란에 자물쇠가 걸린 컴퓨터 아이콘이 생성
아이콘 클릭 -> 우클릭 -> 파일 불러오기
CMD -> ipconfig -> IP정보 확인
연결해 주었던 탄력 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