실습

Azure와 Openvpn를 이용한 S2S vpn 연결

ping핑이 2024. 2. 6. 17:51

인프라/클라우드 엔지니어 양성 교육과정의 프로젝트에서 맡은 부분을 진행한 내용입니다.

먼저 이번 주제의 아키텍처입니다.

Azure(Public)에 Openvpn Server를, 로컬에 Openvpn client를 생성하여 S2S vpn연결을 구성합니다.

그 후 local에서 Azure VM의 프라이빗 IP로 핑 테스트 및 SSH 접속을 해보는 것이 목표입니다.

local 환경이 windows인 점 참고 바랍니다.

 

1. VPN Access 서버 VM 생성

  1. 리소스 만들기에서 Openvpn access server를 검색하고 만들기를 클릭합니다.
    1. 가상머신이름 : OPENVPN_SERVER
    2. 가용성 옵션 : 중복 필요없음
    3. 크기 : Standard_B1s - 1vcpu, 1Gib 메모리 (저렴하기때문에)
    4. 인증형식 : 암호
    5. 가상 네트워크 : 새로 만들기 또는 기존 네트워크
    6. 보안그룹 : 기본
    7. 공용 아이피 부여
    8. 생성 후 ssh 접속을 해줍니다.
    9. 처음 접속 시 자동으로 Openvpn의 초기 설정이 시작 됩니다.
    10. yes를 입력해 설정을 시작합니다. Do you wish to login to the Admin UI as "openvpn"? 차례까지 엔터를 입력합니다.

Do you wish to login to the Admin UI as "openvpn"? 에서 no를 입력하고 서버의 admin ID 및 비밀번호(대문자,소문자,특수기호 반드시 포함) 설정 해줍니다.

마지막 Activation key 설정 문구는 엔터로 넘어갑니다.

설정을 마치고 난 모습입니다

그 뒤 로컬pc(window)의 브라우저에 https:// VM의 공용아이피:943/admin으로 server 설정페이지로 접속합니다.

설정한 admin id와 pw로 접속합니다.

configuration 탭 하위 networksettings 블레이드에서 Hostname or IP Address를 VM의 공용IP로 해줍니다.

하단의 save setting 후 Update Running Server를 눌러줍니다.

configuration 탭 하위 VPN Settings 에서 Routing 하위에 Yes, using Routing을 선택합니다.

User Management 탭의 User Permission 블레이드에서 user를 생성해줍니다.

Allow Auto-login을 체크하고 Password를 설정합니다.

Access Control에 Use Routing을 체크해주시고 these Networks 에 server의 네트워크 대역을 입력해줍니다.

VPN Gateway하단의 Configure VPN Gateway를 yes에 체크하고 로컬의 네트워크 대역을 입력해 줍니다.

Save Setting 후 Update Running Server를 눌러줍니다.

 

그 후 https:// VM의 공용아이피:943 로 접속하여 user id 와 pw 로 접속합니다.

그 뒤 OpenVPN Connect V3와 autologin profile을 다운 받습니다.

이를 다운 받은 PC는Openvpn client역할을 수행하게 됩니다.

 

2. VPN client 설정

  1. client 역할을 수행하기 위해 ip forwarding을 허용해 줍시다.
  2. 윈도우 키를 눌러 “레지스트리 편집기”를 입력하고 실행합니다
  3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 에서 IPEnableRouter에서 값 데이터를 1로 해줍니다.
  4. PC를 재부팅 합니다.
  5. openvpn connect 실행 후 다운받았던 profile을 드래그하여 업로드 해줍니다.

레지스트리 편집기

 

 

 

여기까지가 다음 그림에서 빨간 박스의 내용을 설정 한 것 입니다.

 

3. Routing 설정

 

현재 상태에서 openvpn client(192.168.x.x) 에서 Azure의 Access서버(10.0.x.x)에 핑 테스트가 될 것 입니다. (방화벽의 ICMP가 허용 됐을 때)

하지만 local의 다른 pc 에서 Azure의 private으로 핑 테스트는 불가 할 것입니다.

그 이유는 10.0.x.x이 목적지인 트래픽이 인터넷 게이트웨이를 통하기 때문이라고 생각됩니다.

따라서 우리는 10.0.x.x가 목적지인 트래픽이 openvpn client를 통해 azure 사설망에 접근하도록 라우팅을 해주어야 합니다.

현재 상태를 표현하자면 다음 그림과 같을 것 입니다.

  1. 다른 로컬 pc에서 관리자 권한으로 cmd창을 열어 줍니다.
  2. route add 10.0.x.x(azure network) mask 255.255.255.0 192.168.x.x(openvpn client) 를 통해 route를 추가 해줍니다.
  3. route add 172.27.232.x(openvpn vnet) mask 255.255.255.0 192.168.x.x(openvpn client) 를 통해 route를 추가 해줍니다.
  4. 그 후 openvpn Access server로 핑 테스트 해봅니다.

5. Azure에서도 라우팅을 해줍시다. Azure Vnet에서 라우팅하기 위해서는 “Route Table”이라는 리소스 가 필요합니다.

6. route table을 생성 해줍니다.

7. RouteTable 블레이드에서 설정탭의 경로에서 2개의 경로를 추가 해줍니다.

주소 접두사 : vpn 가상네트워크와 local의 네트워크다음

홉 형식 : 가상 어플라이언스

다음 홉의 IP 주소 : Openvpn Access server의 ip

서브넷 블레이드에서 서브넷을 추가 해줍니다.

 

8. Openvpn Access server의 가상머신의 네트워크 설정에서 NIC 블레이드로 이동해줍니다.

 

IP 전달 사용을 체크 해줍니다

그 후 VPNSERVER VM을 재부팅 해줍니다.

 

이로써 모든 설정이 완료되었습니다!

이제 local과 Azure VNET이 S2S VPN 연결이 되었습니다.

Local의 PC에서 Azure의 private(non-pip) linux VM으로 ssh 접속을 해봅시다(ssh 포트 개방)

ssh userid@10.0.0.6

접속 성공!!

 

 

물론 Local PC의 라우팅을 해줘야 Azure VNET으로 접속 할 수 있다는 한계가 있지만..

제 수준에서 S2S vpn 연결을 구현해봤다는 거에 의의가 있는 것 같습니다 ㅎㅎ..

2달전만해도 포트가 뭔지에 대해 질문하던 나였는데.. 조금 발전 한 것 같습니다.

 

안되거나 오류,누락 사항은 댓글 부탁드립니다.

 

출처 : https://openvpn.net/vpn-server-resources/site-to-site-routing-explained-in-detail/

'실습' 카테고리의 다른 글

vSphere 환경에서 VM Owner(Creator) 명시하기  (2) 2024.11.08