NGMsoftware

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

    학습


    기타 1. OpenVPN을 사용하여 서버 구축하기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. VPN을 구축하는 방법은 여러가지가 존재합니다. 대표적으로 PPTP와 L2PT, OpenVPN이 있습니다. 보안 수준은 PPTP가 가장 낮으며, OpenVPN이 가장 높습니다. 하지만, VPN 서버를 구축하는 방법은 PPTP가 쉽고 속도도 빠릅니다. 일반적으로 지역 또는 사이트 및 게임과 같은 아이피 우회에 사용하기 때문에 보안이 중요하다면 OpenVPN을 사용하는게 좋은 선택일 수 있습니다. 레퍼런스(참고 자료)도 많기 때문에 누구나 쉽게 VPN 환경을 구성할 수 있습니다. L2PT VPN 서버를 구축하는 방법은 아래 링크를 참고하면 쉽게 서비스할 수 있습니다.

    [ L2TP VPN 서버 구축하기 ]

     

    대부분 VPN 서비스 제공자들은 UDP 방식의 OpenVPN을 사용하고 있습니다. 그리고 클라이언트가 접속할 수 있도록 수많은 서버들을 관리하고, 랜덤하게 접속할 수 있도록 클라이언트를 제공합니다. 알려진 무료 또는 유료 서비스들은 대부분 지역(Region: 리전) 기반이라서 국내에서 접속할 수 없는 해외에 서버를 두고 컨텐츠(?)를 소비할 수 있게 해줍니다. 하지만, 게임이나 기타 국내 서비스를 이용하면서 IP를 우회해야 하는 경우에는 직접 서버를 구축하거나 일반 개인이 운영하는 VPN을 이용하기도 합니다. 텔레그램이나 카카오톡에서 VPN이나 임대 PC, 임대 서버등을 이용할때는 주의해야 합니다. 사업자도 없고, 문제가 발생되는 경우 그 어떤 보상도 받을 수 없기 때문입니다.

    RgBbaBA.png

     

     

    텔레그램이나 카카오톡 단톡방에서 VPN이나 임대 PC, 임대 서버를 구매하거나 서비스를 이용하기 전에 개인적으로 물어보시면 안전한 판매자인지 알려드리도록 하겠습니다. 또는, 판매자를 소개해드릴수도 있구요^^; 스크립트 제작 의뢰나 커스텀, 디자인의 경우에도 텔레그램이나 카카오톡으로 선입금하고 진행하면 사기 당할 수 있으니 항상 주의해야 합니다. 보통 사기꾼들은 계정을 여러개두고 어떤 판매자의 서비스가 좋다고 유도하니 가급적이면 소개나 특정인을 지칭한다면 개인 거래는 안하시는게 좋습니다. 텔레그램이나 카카오톡에서 검색하지 마시고, 구글 검색이나 홈페이지를 이용하세요~

     

    OpenVPN 서버 구축

    아래 사이트에서 OpenVPN을 다운로드 받습니다. 현재 OpenVPN 2.5-rc3 버전이네요. 정식 릴리즈가 아니니 다른 버전을 받아야 합니다.

    https://openvpn.net/community-downloads/

    MlS6Trj.png

     

     

    아래로 내려보면 OpenVPN 2.4.9 - released on 2020.04.17 버전이 있습니다. 다운로드 후 설치를 진행하세요.

    b8hCEMX.png

      

      

    항상 그렇듯이~ Next(다음)를 눌러서 설치를 진행하면 됩니다. 중간에 변경 사항이 있으니 잘 보고 따라하세요!

    AbMcLQy.png

     

     

    라이센스를 잘 읽어보고 I Agree를 클릭하세요.

    2r7JuP2.png

     

     

    EasyRSA 2 Certificate Management Scripts에 체크한 후 Next를 클릭하세요. 이 스크립트를 통해 openssl 인증 기관을 만들고 서명, 요청 및 발급을 간단하게 처리할 수 있게됩니다. OpenVPN에 사용되는 인증서를 만들기 위해 필요합니다. 생각해보면... 이 인증서를 이용해서 다른곳에 응용할 수 있을것도 같네요~

    6YiwXK9.png

     

     

    기본 폴더에 그냥 설치해줍니다.

    sdPOlGw.png

     

     

    다른 버전의 OpenVPN이 설치되어 있거나 OpenVPN GUI가 실행중이라면 자동으로 종료하고 설치를 진행해줍니다. 만약, 처음 설치하는 경우라면 이 화면이 표시되지 않습니다.

    J3Pv4by.png

     

     

    설치 진행중...

    rML5oA8.png

     

     

    설치가 완료되었습니다.

    pnOCRhv.png

     

     

    설치가 완료되면 기본적으로 "C:\Program Files\OpenVPN\easy-rsa" 폴더에 윈도우 커멘드로 환경을 구성할 수 있는 파일들이 존재합니다. 만약 윈도우가 32비트면 "C:\Program Files (x86)\OpenVPN\easy-rsa" 여기에 파일들이 위치합니다. 사용자 컴퓨터마다 다를 수 있으니 주의하세요.

    2YSodWU.png

     

     

    윈도우 커멘드창을 관리자 권한으로 실행하세요. 항상 관리자 권한으로 실행하려면 [ 여기 ] 내용을 참고해서 바로가기를 수정하세요.

    wFGIMSC.png

     

     

    폴더를 이동하세요.

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

    wwezUmt.png

     

     

    콘피그를 초기화합니다.

    init-config

    XOFhwQ7.png

     

     

    1개 파일이 복사 되었습니다. vars를 입력하고 실행(Enter)하세요.

    tsFWWav.png

     

     

    clean-all을 실행하면 기존 설정 파일들이 모두 삭제됩니다. easy-rsa 폴더 밑에 keys 폴더가 생성됩니다.

    clean-all

    VjRNUOY.png

     

     

    루트 인증서(Root CA: 루트 인증 기관에서 관리하는 공개 키 인증서나 자체 서명된 인증서)를 생성합니다. 인증서를 생성하기 위한 몇가지 정보를 입력해야 하는데요. 대부분은 빈값으로 엔터쳐서 넘어가도 됩니다. 하지만, Common Name은 임의의 값으로 입력해야 합니다. 예제에서는 ngm으로 입력했습니다. 이 값은 인증서를 만들때 중복되면 안됩니다.

    build-ca

    kCpA1IV.png

     

     

    이 과정을 마치면 "C:\Program Files\OpenVPN\easy-rsa\keys" 폴더에 ca.crt, ca.key 파일이 생성됩니다. 그다음 VPN 서버용 인증서를 만들고 방금 생성한 Root CA로부터 서명을 받습니다. 이번에도 Common Name은 임의의 값으로 입력해야 합니다. 예제에서는 ngmsoftware로 입력했습니다. 그리고, Sign the certificatey를 입력하세요. 1 out of 1 certificate requests certified, commit?y를 입력한 후 진행합니다.

    ARK97eI.png

     

     

    위 과정이 완료되면 아래 그림과 같이 "C:\Program Files\OpenVPN\easy-rsa\keys" 폴더에 server.crt, server.csr, server.key 파일이 생성됩니다.

    RGM4eCS.png

     

     

    DH 파라메터를 만듭니다. DH는 Diffie Hellman 알고리즘에 사용되는 prime number를 말합니다.

    build-dh

    2i6TVH4.png

     

     

    이제 마지막으로 ta 키파일을 생성하면 작업이 완료됩니다.

    C:\Program Files\OpenVPN\easy-rsa>cd keys
    
    C:\Program Files\OpenVPN\easy-rsa\keys>openvpn --genkey --secret ta.key
    
    C:\Program Files\OpenVPN\easy-rsa>

     

    OpenVPN 서버 구축을 위한 인증서 및 키 파일들이 모두 "C:\Program Files\OpenVPN\easy-rsa\keys" 폴더에 만들어졌습니다.

    tSNdL8r.png

     

     

    "C:\Program Files\OpenVPN\easy-rsa\keys" 폴더의 6개 파일(ca.crt, ca.key, dh2048.pem, server.crt, server.key, ta.key)을 복사한 후 "C:\Program Files\OpenVPN\config" 폴더에 붙여넣기 합니다. 그리고, "C:\Program Files\OpenVPN\sample-config" 폴더의 server.ovpn 파일도 "C:\Program Files\OpenVPN\config"에 붙여넣기 하세요. 최종적으로 "C:\Program Files\OpenVPN\config" 폴더에는 그림과 같이 포함되어 있어야 합니다.

    0yI8aOi.png

     

     

    OpenVPN 서버를 구동하기 위한 몇가지 설정을 변경해야 합니다. 이 설정값들은 사용자 환경에 맞게 수정하세요.

    • port: VPN 서비스 포트 (기본값: 1194)
    • proto: tcp 또는 udp 입력 (기본값: udp)
    • tls-auth ta.key 0: 주석 제거 (앞쪽의 세미콜론 삭제)
    • cipher AES-256-CBC: 주석 제거 (앞쪽의 세미콜론 삭제)
    • push "dhcp-option DNS 8.8.8.8": 변경하지 않아도 됨
    • push "dhcp-option DNS 8.8.4.4": 변경하지 않아도 됨
    • client-to-client: 변경하지 않아도 됨

     

    cmd에서 config 폴더로 이동한 후 서버를 실행합니다.

    C:\Program Files\OpenVPN\easy-rsa>cd..
    
    C:\Program Files\OpenVPN>cd config
    
    C:\Program Files\OpenVPN\config>openvpn server.ovpn
    Sat Oct 24 22:17:41 2020 OpenVPN 2.4.9 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Apr 16 2020
    Sat Oct 24 22:17:41 2020 Windows version 6.2 (Windows 8 or greater) 64bit
    Sat Oct 24 22:17:41 2020 library versions: OpenSSL 1.1.1f  31 Mar 2020, LZO 2.10
    Sat Oct 24 22:17:41 2020 Diffie-Hellman initialized with 2048 bit key
    Sat Oct 24 22:17:41 2020 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
    Sat Oct 24 22:17:41 2020 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
    Sat Oct 24 22:17:41 2020 interactive service msg_channel=0
    Sat Oct 24 22:17:41 2020 ROUTE_GATEWAY 8.8.8.8/255.255.255.0 I=14 HWADDR=2c:f0:5d:26:d7:ea
    Sat Oct 24 22:17:41 2020 open_tun
    Sat Oct 24 22:17:41 2020 TAP-WIN32 device [로컬 영역 연결] opened: \\.\Global\{EC6FB82F-1F03-468B-8902-E62B54F644B6}.tap
    Sat Oct 24 22:17:41 2020 TAP-Windows Driver Version 9.24
    Sat Oct 24 22:17:41 2020 Notified TAP-Windows driver to set a DHCP IP/netmask of 10.8.0.1/255.255.255.252 on interface {EC6FB82F-1F03-468B-8902-E62B54F644B6} [DHCP-serv: 10.8.0.2, lease-time: 31536000]
    Sat Oct 24 22:17:41 2020 Sleeping for 10 seconds...
    Sat Oct 24 22:17:51 2020 Successful ARP Flush on interface [38] {EC6FB82F-1F03-468B-8902-E62B54F644B6}
    Sat Oct 24 22:17:51 2020 C:\WINDOWS\system32\route.exe ADD 10.8.0.0 MASK 255.255.255.0 10.8.0.2
    Sat Oct 24 22:17:51 2020 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=25 and dwForwardType=4
    Sat Oct 24 22:17:51 2020 Route addition via IPAPI succeeded [adaptive]
    Sat Oct 24 22:17:51 2020 Could not determine IPv4/IPv6 protocol. Using AF_INET6
    Sat Oct 24 22:17:51 2020 Socket Buffers: R=[65536->65536] S=[65536->65536]
    Sat Oct 24 22:17:51 2020 setsockopt(IPV6_V6ONLY=0)
    Sat Oct 24 22:17:51 2020 UDPv6 link local (bound): [AF_INET6][undef]:1194
    Sat Oct 24 22:17:51 2020 UDPv6 link remote: [AF_UNSPEC]
    Sat Oct 24 22:17:51 2020 MULTI: multi_init called, r=256 v=256
    Sat Oct 24 22:17:51 2020 IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
    Sat Oct 24 22:17:51 2020 IFCONFIG POOL LIST
    Sat Oct 24 22:17:51 2020 Initialization Sequence Completed

     

     

    정상적으로 실행된 것을 알 수 있습니다. 다음에는 OpenVPN에 접속하는 방법을 테스트 해보도록 하겠습니다. 만약, 서버가 정상 구동되지 않는다면 방화벽에서 포트를 예외처리 해줘야 할수도 있습니다. 아직 외부에서 접속할 수 있도록 구성하지는 않았기 때문에 로컬 컴퓨터에서 테스트는 잘 동작할겁니다. 기타 궁금한 사항은 댓글로 남겨주세요~

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.