오늘은 OpenVPN을 설치하고 사용하는 방법을 알아보겠습니다.
OpenVPN을 사용하여 사용자가 VPC내부 네트워크에 있는 것처럼 EC2, RDS에 접근을 할 수 있습니다.
목 차
1. OpenVPN EC2 생성
2. OpenVPN 사용자 생성
3. 사용자 로그인
4. 오류
1. OpenVPN EC2 생성
우선 OpenVPN에 사용될 인스턴스를 생성하여 줍니다.
OpenVPN은 마켓플레이스에서 사용할 수 있습니다.
우리가 사용할 AMI는 "OpenVPN Access Server" 입니다.
무료버전이니 선택하여 사용해 줍니다.
최소 권장은 t2.small이나 t2.micro를 사용하여도 무관합니다.
그리고 추후에 SSH 로그인을 위해 키페어를 넣어줍니다.
네트워크는 기존에 만들어놨던 VPC를 사용하였습니다.
이번 OpenVPN은 퍼블릭서브넷에 생성을 해줄 것입니다.
보안그룹은 SSH/22(My IP), HTTPS/443이랑 OpenVPN에 사용될 UDP/1194, TCP 943을 인바운드 규칙으로 넣어줍니다.
처음에 시큐리티 그룹 설정을 할 때 22번 포트랑 443포트만 넣어줬었는데 마지막에 OpenVPN어플을 다운로드하였는데
접속이 안 됐습니다. 그래서 찾아봤더니 943포트랑 1194포트도 열어줘야 하더라구요
관련자료 링크 : https://aws.amazon.com/ko/blogs/korea/setting-up-openvpn-access-server-in-amazon-vpc/
스토리지는 기본구성으로 해줬습니다.
EC2생성 완료했습니다.
2. OpenVPN 사용자 생성
OpenVPN 인스턴스가 생성됐으니 SSH로 접속해 줍니다.
저는 SSH를 통한 접속을 위해서 Window PowerShell을 사용하였고, 키가 C드라이브 Download에 있어서 키가 있는 곳까지 경로를 이동해 줍니다.
SSH접근을 위해 명령어를 쳤더니 접근이 불가하네요.
여기서는 root가 아닌 openvpnas라는 계정으로 접속해야 합니다.
명령어를 수정해 줍니다.
접속을 하면 약관동의에 여부와 설정에 대한 내용들이 나옵니다
저는 다 엔터를 눌러줬고 설정에 대한 내용은 밑에 더보기에 넣어놨습니다.
서버 설치는 이렇게 완료되었습니다.
admin URL로 접근하여 사용자 계정을 만들어야 합니다
이때 ID와 Password는 사진하단에 따로 나와있으니 복사 붙여 넣기 하시면 됩니다.
아니면 "sudo passwd openvpn" 명령어를 사용하여 편한 비밀번호로 변경하셔도 됩니다.
(Amazon 사용자 데이터가 지정되지 않은 경우 필수) OpenVPN 액세스 서버 설정 마법사는 어플라이언스에 처음 로그인할 때 자동으로 실행됩니다. 나중에 이 마법사를 다시 실행하려면 터미널에서 sudo ovpn-init –ec2 명령을 실행하십시오.
EULA를 자세히 읽고 yes를 입력하여 동의함을 나타냅니다.
> 이것이 기본 액세스 서버 노드입니까?
설명: 이것이 초기 액세스 서버 노드인 경우 Enter를 눌러 기본 설정을 채택하십시오. 그렇지 않고 장애 조치 노드를 설정하는 경우 이를 no 로 변경하십시오.
> Admin Web UI에서 사용할 네트워크 인터페이스 및 IP 주소를 지정하십시오.
설명: 이것은 OpenVPN 액세스 서버가 Admin Web UI 요청을 수신하는 인터페이스가 됩니다. 나열된 인터페이스에 대한 액세스 권한이 있는지 확인하십시오. 그렇지 않으면 서버에 로그인할 수 없습니다. 사용할 인터페이스가 확실하지 않은 경우 모든 인터페이스에 대해 옵션 1 을 선택하십시오. 네트워크에서 어플라이언스에 DHCP 임대를 할당하지 않았거나 서버에 고정 IP를 사용하려는 경우 여기에서 모든 인터페이스를 지정하고 다음 섹션의 고정 IP 할당 지침을 따라야 합니다. 이 기사. 이 옵션은 Web Admin UI에서 마법사 완료 후 언제든지 변경할 수 있습니다.
> 관리 웹 UI의 포트 번호를 지정하십시오.
설명: 웹 기반 관리 영역에 액세스 하는 데 사용할 포트입니다. 일반적으로 사용자 지정을 원하지 않는 한 기본 포트에 그대로 두는 것이 안전합니다.
> OpenVPN 데몬에 대한 TCP 포트 번호를 지정하십시오
설명: 클라이언트가 VPN 서버에 연결하는 데 사용할 포트입니다. 서버가 NAT 기반 라우터 뒤에 있는 경우 이 포트를 인터넷으로 전달해야 합니다. 기본적으로 웹 기반 관리 영역도 사용자의 편의를 위해 이 포트에서 실행되지만 관리 웹 UI 인터페이스에서 이 설정을 비활성화할 수 있습니다.
> 클라이언트 트래픽은 기본적으로 VPN을 통해 라우팅 되어야 합니까?
설명: 원격 사용자가 VPN을 통해 연결하기를 원하는 소규모 네트워크만 있는 경우 no 를 선택하십시오 . 그렇지 않고 사용자가 연결되어 있는 동안 모든 것이 VPN을 통과하도록 하려면(특히 비보안 링크를 통해 데이터 통신을 보호하려는 경우에 유용함) 이 옵션에 대해 예를 선택하십시오.
> 클라이언트 DNS 트래픽은 기본적으로 VPN을 통해 라우팅 되어야 합니까?
설명: VPN 클라이언트가 온사이트 DNS 서버를 사용하여 로컬 도메인 이름을 확인할 수 있게 하려면 이 옵션에 대해 예를 선택하십시오. 그렇지 않으면 아니오를 선택하십시오 . 이전 옵션에 대해 예를 선택한 경우 여기에서 이 옵션에 대해 설정한 것과 상관없이 모든 트래픽이 VPN을 통해 라우팅 됩니다.
> 내부 DB를 통한 로컬 인증을 사용하시겠습니까?
설명: OpenVPN 액세스 서버에서 사용자 인증을 위한 내부 인증 데이터베이스를 유지하려면 이 옵션에 대해 예를 선택하십시오. 이 옵션이 켜져 있으면 관리 웹 UI 내에서 사용자 이름과 암호를 정의 및/또는 변경할 수 있습니다. 이 옵션에 대해 아니요를 선택하면 Linux PAM 인증이 사용되며 Linux 운영 체제 자체 내에서 사용자를 추가/변경/삭제해야 합니다. LDAP 또는 RADIUS를 인증 방법으로 사용하려면 Web Admin UI에 로그인한 후 이를 변경해야 합니다.
> 개인 서브넷은 기본적으로 클라이언트에 액세스 할 수 있어야 합니까? 설명:이 옵션은 OpenVPN 액세스 서버의 기본 보안 설정을 정의합니다. 클라이언트 트래픽은 언제 기본적으로 VPN을 통해 라우팅 되어야 합니까? no 로 설정되면 VPN 클라이언트가 액세스 할 수 있는 서브넷 목록을 정의합니다. 관리 웹 UI 영역에 로그인하면 이 목록에 더 많은 항목을 추가할 수 있습니다. 클라이언트 트래픽을 기본적으로 VPN을 통해 라우팅해야 합니까 ? 예 로 설정됩니다.
> Admin UI에 "openvpn"으로 로그인하시겠습니까?
설명: 액세스 서버 관리 UI 영역에 로그인하는 데 사용할 초기 사용자 이름을 정의합니다. 이 사용자 이름은 "잠금" 관리자 사용자 이름으로도 사용되어 자신의 서버에서 자신을 잠글 수 있습니다. 고유한 사용자 이름을 지정하려면 아니오를 선택하십시오 . 그렇지 않으면 기본값으로 yes를 수락합니다.> > 기존 사용자 또는 새 사용자 계정에 대한 사용자 이름을 지정하십시오.
설명: 기본 ' openvpn ' 대신 사용하려는 초기 사용자 이름을 입력하십시오.
> '사용자' 계정의 비밀번호 입력:
> '사용자' 계정의 비밀번호 확인:
설명: 계정에 사용할 비밀번호를 지정하십시오.
> > OpenVPN-AS 라이센스 키를 지정하십시오(또는 나중에 지정하려면 공백으로 두십시오).
설명: OpenVPN 액세스 서버 소프트웨어용 라이센스 키를 구입한 경우 여기에 입력하십시오. 그렇지 않으면 비워 둡니다. OpenVPN 액세스 서버에는 테스트용으로 두 개의 무료 라이선스가 포함되어 있습니다.
설정 마법사를 완료한 후 관리 웹 UI 영역에 액세스 하여 VPN의 다른 측면을 구성할 수 있습니다. Amazon은 머신 내부의 탄력적/외부 IP를 공개하지 않기 때문에 설정 마법사에 표시된 링크는 웹 인터페이스에 액세스 할 때 작동하지 않습니다. 이러한 이유로 내부 IP 주소를 Amazon에서 제공한 외부 IP로 교체해야 합니다. 앞서 언급한 바와 같이 관리 웹 UI에서 이 동작을 비활성화하지 않는 한 VPN 포트와 관리 포트 모두에서 관리 웹 UI에 액세스할 수 있습니다.
참고: 관리 UI 에 "openvpn"으로 로그인하시겠습니까?옵션을 설정하려면 sudo passwd openvpn을 실행 하고 Enter 키 를 눌러 이 계정의 암호를 정의해야 합니다.
admin URL을 통해 접근하면 에러 메시지가 표시됩니다.
이것은 해당 서버에서 자체 발행한 인증서를 통해 SSL 접속을 제공하기 때문에 브라우저에서 접속이 안전하지 않을 수도 있음을 경고하는 것입니다.
고급버튼을 눌러 openvpn웹서버에 접근해 줍니다.
2-7에 나와있는 ID와 Password를 사용하여 로그인합니다.
간단한 약관이 나오며 동의해서 다음 페이지로 넘어갑니다.
왼쪽 내비게이션 바 CONFIGURATION > VPN Settings로 들어가 사진에 표시되어 있는 부분을 Yes로 바꿔줍니다.
이 설정은 클라이언트 인터넷 트래픽이 vpn을 통해 라우팅을 해주는 설정으로
해당 설정을 해줘야 마지막 단계의 테스트를 할 때 내 IP가 openVPN주소로 바뀝니다.
저는 user1으로 생성을 하였고 사진에 4번 More Settings을 클릭하여 5번 Password를 설정해 줍니다.
그리고 꼭 Update Running server를 클릭해 줘야 설정값들이 업데이트됩니다.
3. 사용자 로그인
2-11에서 만들어준 user1 사용자계정으로 로그인합니다.
저는 windows를 사용 중이기에 알맞은 클라이언트를 다운로드하여 설치했습니다.
이렇게 VPN연결이 모두 완료되었습니다.
이제 물리적으로는 회사/집이지만, 논리적으로는 VPC 내부 네트워크에 들어와 있는 것과 같습니다.
4. 오류
모든 실습이 다 끝난 줄 알았는데 다음날 다시 들어가려고 보니 해당 서버에 접근이 안 됐습니다.
그래서 다시 powershell로 ssh 접근을 하여 sudo ovpn-init –ec2 명령어를 사용하여 openvpn 설정을 초기화해주고 다시 설정했습니다.
그럼에도 불구하고 똑같은 오류가 났습니다.
그래서 한참을 찾은 결과!
답을 저기서 찾을 수 있었습니다.
VPN 클라이언트가 배포된 후 호스트 이름, 프로토콜 또는 포트 번호를 변경하면 기존 클라이언트를 사용할 수 없게 됩니다(클라이언트 웹 서버에서 새 클라이언트 구성 또는 VPN 설치 프로그램을 다운로드할 때까지) 라고 설명되어 있네요.
저는 openvpn 인스턴스를 생성하였을 때 EIP할당을 하지 않았습니다.
그래서 인스턴스를 중지한 후 다시 시작하였을 때 IP가 바뀌어서 접근이 안 됐던 거 같습니다.
이렇게 서버를 생성할 때 EIP의 중요성까지 다시 깨닫게 된 좋은 경험이었습니다 :)
참고자료
'AWS > OpenVPN' 카테고리의 다른 글
[Open VPN #2] OpenVPN으로 Private Subnet EC2 접속 (0) | 2023.03.19 |
---|