NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    기타 2. OpenVPN 클라이언트 구성하기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트입니다. 이전 시간에 [ OpenVPN을 이용하여 서버 구축하기 ]에 대해 알아보았습니다. 오늘은 OpenVPN 서버를 구동하고, 클라이언트에서 접속하는 방법에 대해 알아보도록 하겠습니다. 이외에도 외부에서 접속하기 위한 방화벽 문제나 공유기의 포트포워딩도 알아봐야 합니다. 이 내용까지 진행하면 로컬에서 서버 구동 및 클라이언트 접속 테스트를 완료할 수 있습니다.

     

    우선 서버를 구동시켜야 합니다. 관리자 권한으로 윈도우 명령창(CMD)을 실행합니다. 아래 명령을 수행해서 OpenVPN 폴더로 이동하세요.

    cd C:\Program Files\OpenVPN\easy-rsa

    oLU2i7P.png

     

     

    vars를 실행하여 시스템 변수의 패스를 등록해줍니다. 그리고, config 폴더로 이동하세요. openvpn server.ovpn으로 서버를 실행시킵니다.

    vars
    cd..
    cd config
    openvpn server.ovpn

    fmGgG4p.png

     

     

    클라이언트를 테스트하기 위해 VMware에 윈도우 10을 설치합니다. 만약, 다른 컴퓨터가 있으면 굳이 VMware에서 테스트할 필요는 없습니다. 클라이언트 테스트용 컴퓨터에 OpenVPN을 다운로드 후 설치하세요. 설치는 서버와 동일하게 진행하시면 됩니다. 다만, 아래 그림의 EasyRSA 2 Certificate Management Scripts는 설치하지 않아도 됩니다. 기본값은 체크되어 있지 않으므로 확인 후 그냥 진행하세요.

    6YiwXK9.png

     

     

    설치가 완료되었으면 서버에서 생성한 서버 인증서와 클라이언트에서 사용할 인증서를 복사해서 옮겨야 합니다. 아직 클라이언트 인증서는 만들지 않았으므로 아래 절차대로 인증서부터 생성하세요. Common Name은 유니크한 값을 사용해야 합니다. 앞에서 서버 구축시 ngm은 사용했으므로 ngm_client_test로 만들었습니다. 아래 그림을 참고하여 y를 입력하세요.

    build-key client

    HpkZL6r.png

     

     

    아래 파일들을 복사하여 테스트 컴퓨터의 "C:\Users\<사용자 계정>\OpenVPN\config\client" 폴더에 붙여넣기 해줍니다.

    7Kp2OJ7.png

     

     

    Visual Studio 2019 Code를 실행하고, "C:\Program Files\OpenVPN\sample-config" 폴더의 client.ovpn을 열어주세요. 아래 그림과 같이 remote에 서버 아이피를 입력하세요.

    # The hostname/IP and port of the server.
    # You can have multiple remote entries
    # to load balance between the servers.
    remote 172.30.1.3 1194
    ;remote my-server-2 1194

     

     

    이 파일을 복사해서 테스트 컴퓨터의 바탕화면에 복사해둡니다. 그리고, 트레이에 OpenVPN GUI에서 우클릭 후 "파일 불러오기"를 클릭하세요.

    lyn1iIb.png

     

     

    바탕화면에 붙여넣기한 client.ovpn을 선택합니다. 아래 그림과 같이 인증서를 가져온 폴더에 해당 파일이 자동으로 생성된것을 알 수 있습니다. 참고로, client.ovpn 파일을 먼저 불러오면 "C:\Users\<사용자 계정>\OpenVPN\config" 폴더 아래에 동일한 이름의 폴더가 생성되고 복사됩니다. 그리고, 인증서 파일들을 이곳에 붙여넣기 해도 됩니다.

    1F07EaU.png

     

     

    다시 OpenVPN GUI에서 우클릭하고 연결을 클릭하세요. 만약, 여러개의 클라이언트가 있다면 목록형태로 표시되고, 2차 메뉴에 연결이 나타납니다.

    tdxtfSR.png

     

     

    정상적으로 연결되면 아이콘의 색상이 바뀝니다.

    IIEOKFc.png

     

     

    연결된 OpenVPN에서 우클릭 후 "상태 보기"를 클릭하세요.

    lQ9lgso.png

     

     

    아래와 같이 VPN 서버에 접속된 것을 알 수 있습니다.

    Sun Oct 25 13:12:06 2020 OpenVPN 2.4.9 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Apr 16 2020
    Sun Oct 25 13:12:06 2020 Windows version 6.2 (Windows 8 or greater) 64bit
    Sun Oct 25 13:12:06 2020 library versions: OpenSSL 1.1.1f  31 Mar 2020, LZO 2.10
    Sun Oct 25 13:12:06 2020 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
    Sun Oct 25 13:12:06 2020 Need hold release from management interface, waiting...
    Sun Oct 25 13:12:07 2020 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
    Sun Oct 25 13:12:07 2020 MANAGEMENT: CMD 'state on'
    Sun Oct 25 13:12:07 2020 MANAGEMENT: CMD 'log all on'
    Sun Oct 25 13:12:07 2020 MANAGEMENT: CMD 'echo all on'
    Sun Oct 25 13:12:07 2020 MANAGEMENT: CMD 'bytecount 5'
    Sun Oct 25 13:12:07 2020 MANAGEMENT: CMD 'hold off'
    Sun Oct 25 13:12:07 2020 MANAGEMENT: CMD 'hold release'
    Sun Oct 25 13:12:07 2020 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
    Sun Oct 25 13:12:07 2020 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
    Sun Oct 25 13:12:07 2020 TCP/UDP: Preserving recently used remote address: [AF_INET]172.30.1.3:1194
    Sun Oct 25 13:12:07 2020 Socket Buffers: R=[65536->65536] S=[65536->65536]
    Sun Oct 25 13:12:07 2020 UDP link local: (not bound)
    Sun Oct 25 13:12:07 2020 UDP link remote: [AF_INET]172.30.1.3:1194
    Sun Oct 25 13:12:07 2020 MANAGEMENT: >STATE:1603599127,WAIT,,,,,,
    Sun Oct 25 13:12:07 2020 MANAGEMENT: >STATE:1603599127,AUTH,,,,,,
    Sun Oct 25 13:12:07 2020 TLS: Initial packet from [AF_INET]172.30.1.3:1194, sid=861a3df9 6e1054e0
    Sun Oct 25 13:12:07 2020 VERIFY OK: depth=1, C=US, ST=CA, L=SanFrancisco, O=OpenVPN, OU=changeme, CN=ngm, name=changeme, emailAddress=mail@host.domain
    Sun Oct 25 13:12:07 2020 VERIFY KU OK
    Sun Oct 25 13:12:07 2020 Validating certificate extended key usage
    Sun Oct 25 13:12:07 2020 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
    Sun Oct 25 13:12:07 2020 VERIFY EKU OK
    Sun Oct 25 13:12:07 2020 VERIFY OK: depth=0, C=US, ST=CA, L=SanFrancisco, O=OpenVPN, OU=changeme, CN=ngmsoftware, name=changeme, emailAddress=mail@host.domain
    Sun Oct 25 13:12:07 2020 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, 4096 bit RSA
    Sun Oct 25 13:12:07 2020 [ngmsoftware] Peer Connection Initiated with [AF_INET]172.30.1.3:1194
    Sun Oct 25 13:12:08 2020 MANAGEMENT: >STATE:1603599128,GET_CONFIG,,,,,,
    Sun Oct 25 13:12:08 2020 SENT CONTROL [ngmsoftware]: 'PUSH_REQUEST' (status=1)
    Sun Oct 25 13:12:08 2020 PUSH: Received control message: 'PUSH_REPLY,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 1,cipher AES-256-GCM'
    Sun Oct 25 13:12:08 2020 OPTIONS IMPORT: timers and/or timeouts modified
    Sun Oct 25 13:12:08 2020 OPTIONS IMPORT: --ifconfig/up options modified
    Sun Oct 25 13:12:08 2020 OPTIONS IMPORT: route options modified
    Sun Oct 25 13:12:08 2020 OPTIONS IMPORT: peer-id set
    Sun Oct 25 13:12:08 2020 OPTIONS IMPORT: adjusting link_mtu to 1624
    Sun Oct 25 13:12:08 2020 OPTIONS IMPORT: data channel crypto options modified
    Sun Oct 25 13:12:08 2020 Data Channel: using negotiated cipher 'AES-256-GCM'
    Sun Oct 25 13:12:08 2020 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
    Sun Oct 25 13:12:08 2020 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
    Sun Oct 25 13:12:08 2020 interactive service msg_channel=680
    Sun Oct 25 13:12:08 2020 ROUTE_GATEWAY 192.168.5.2/255.255.255.0 I=3 HWADDR=00:0c:29:13:2a:74
    Sun Oct 25 13:12:08 2020 open_tun
    Sun Oct 25 13:12:08 2020 TAP-WIN32 device [로컬 영역 연결] opened: \\.\Global\{329F95D7-16DD-44BB-BE1B-E660F3845A29}.tap
    Sun Oct 25 13:12:08 2020 TAP-Windows Driver Version 9.24 
    Sun Oct 25 13:12:08 2020 Notified TAP-Windows driver to set a DHCP IP/netmask of 10.8.0.6/255.255.255.252 on interface {329F95D7-16DD-44BB-BE1B-E660F3845A29} [DHCP-serv: 10.8.0.5, lease-time: 31536000]
    Sun Oct 25 13:12:08 2020 Successful ARP Flush on interface [10] {329F95D7-16DD-44BB-BE1B-E660F3845A29}
    Sun Oct 25 13:12:08 2020 MANAGEMENT: >STATE:1603599128,ASSIGN_IP,,10.8.0.6,,,,
    Sun Oct 25 13:12:13 2020 TEST ROUTES: 1/1 succeeded len=1 ret=1 a=0 u/d=up
    Sun Oct 25 13:12:13 2020 MANAGEMENT: >STATE:1603599133,ADD_ROUTES,,,,,,
    Sun Oct 25 13:12:13 2020 C:\Windows\system32\route.exe ADD 10.8.0.1 MASK 255.255.255.255 10.8.0.5
    Sun Oct 25 13:12:13 2020 Route addition via service succeeded
    Sun Oct 25 13:12:13 2020 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
    Sun Oct 25 13:12:13 2020 Initialization Sequence Completed
    Sun Oct 25 13:12:13 2020 MANAGEMENT: >STATE:1603599133,CONNECTED,SUCCESS,10.8.0.6,172.30.1.3,1194,,
    

     

     

    OpenVPN 서버에 연결되고 바이트를 수신할 수 있게됩니다. cmd에서 ipconfig를 실행하면 가상 사설망으로부터 할당 받은 아이피가 표시됩니다.

    rCyBoRz.png

     

     

    다시 서버쪽 내용을 보면 클라이언트가 접속한 기록을 확인할 수 있습니다.

    Sun Oct 25 13:12:10 2020 MULTI_sva: pool returned IPv4=10.8.0.6, IPv6=(Not enabled)
    Sun Oct 25 13:12:10 2020 MULTI: Learn: 10.8.0.6 -> ngmclient/172.30.1.3:58832
    Sun Oct 25 13:12:10 2020 MULTI: primary virtual IP for ngmclient/172.30.1.3:58832: 10.8.0.6
    Sun Oct 25 13:12:11 2020 ngmclient/172.30.1.3:58832 PUSH: Received control message: 'PUSH_REQUEST'
    Sun Oct 25 13:12:11 2020 ngmclient/172.30.1.3:58832 SENT CONTROL [ngmclient]: 'PUSH_REPLY,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 1,cipher AES-256-GCM' (status=1)
    Sun Oct 25 13:12:11 2020 ngmclient/172.30.1.3:58832 Data Channel: using negotiated cipher 'AES-256-GCM'
    Sun Oct 25 13:12:11 2020 ngmclient/172.30.1.3:58832 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
    Sun Oct 25 13:12:11 2020 ngmclient/172.30.1.3:58832 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
    

     

    이렇게해서 간단하게 OpenVPN 서버를 구축하고 클라이언트에서 접속하는 방법에 대해 알아보았습니다. 사실 수많은 서버를 곳곳에 구축해두고 랜덤하게 접속할 수 있도록하는 클라이언트를 만들면 안정적인 속도로 서비스를 운영할 수 있을겁니다. 지역별로 PC방에 몇대씩 서버를 구축해두면 좋을거 같네요. PC방 혜택도 받을 수 있을테구요. 옵션을 보면 다양하게 서버를 구축해서 서비스할 수 있을텐데요. 물리적인 한계로 인해 더 깊이있게 테스트해보지는 못했습니다. 혹시라도 잘못된 내용이나 추가해야 할 내용이 있으면 댓글로 남겨주세요~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.