사용자 도구

사이트 도구


ubuntu에_openvpn_설치

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
ubuntu에_openvpn_설치 [2018/03/14 10:10] – 만듦 akpilubuntu에_openvpn_설치 [2018/03/14 10:25] (현재) akpil
줄 5: 줄 5:
 우분투 16.04 LTS 버전을 기준으로, OpenVPN 설치하는 방법을 정리해본다. 우분투 16.04 LTS 버전을 기준으로, OpenVPN 설치하는 방법을 정리해본다.
  
-  - 필요한 패키지 설치 +필요한 패키지 설치 
-    sudo apt-get update && sudo apt-get upgrade +  sudo apt-get update && sudo apt-get upgrade 
-    sudo apt-get install openvpn easy-rsa +  sudo apt-get install openvpn easy-rsa 
-  CA (Certificate Authority) 빌드 +  CA (Certificate Authority) 빌드 
-    mkdir openvpn-ca +<code> 
-    cd openvpn-ca +mkdir openvpn-ca 
-    변수 수정하기, 아래에 있는 것이 vars 파일에 들어 있는데, 적당히 바꾸면 된다. (안 바꿔도 별일은 없지만 ..) +cd openvpn-ca 
-      vi vars +</code> 
-        export KEY_COUNTRY="US" + 
-        export KEY_PROVINCE="CA" +  * 변수 수정하기, 아래에 있는 것이 vars 파일에 들어 있는데, 적당히 바꾸면 된다. (안 바꿔도 별일은 없지만 ..) 
-        export KEY_CITY="SanFrancisco" +    vi vars 
-        export KEY_ORG="Fort-Funston" +<code> 
-        export KEY_EMAIL="me@myhost.mydomain" +export KEY_COUNTRY="US" 
-        export KEY_OU="MyOrganizationalUnit" +export KEY_PROVINCE="CA" 
-        export KEY_NAME="server" +export KEY_CITY="SanFrancisco" 
-    ln -s openssl-1.0.0.cnf openssl.cnf +export KEY_ORG="Fort-Funston" 
-    source vars (또는 source ./vars) +export KEY_EMAIL="me@myhost.mydomain" 
-      NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/.../openvpn-ca/keys 이라고 나오면 정상적이다. +export KEY_OU="MyOrganizationalUnit" 
-    ./clean-all +export KEY_NAME="server" 
-    ./build-ca 를 실행하면 몇가지 물어보는데, 그냥 엔터키만 눌러서 쭉 넘어가고 버전에 따라 다른데, 끝에 가서 진짜로 할 거냐 (y/n)를 물어보는데, y 를 누르면 계산을 하면서 CA 파일을 만든다. 아참, challenge password 라는 게 보이면 비밀번호를 굳이 입력하지 않고 엔터 치면 된다. +</code> 
-    - ./build-dh 를 실행해서 DH (Diffie-Hellman) 키를 생성하자. 이건 좀 오래 걸린다. +    ln -s openssl-1.0.0.cnf openssl.cnf 
-    openvpn --genkey --secret keys/ta.key 를 실행하여 HMAC(Hash-based Message Authentication Code) 키를 생성시키자. +    source vars (또는 source ./vars) 
-  - 서버 설정 +      NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/.../openvpn-ca/keys 이라고 나오면 정상적이다. 
-    cd ~/openvpn-ca/keys +<code> 
-    sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn +./clean-all 
-    gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf +</code> 
-    server.conf 파일을 변경하자. 마지막 두줄은 추가해야 한다. +    ./build-ca 를 실행하면 몇가지 물어보는데, 그냥 엔터키만 눌러서 쭉 넘어가고 버전에 따라 다른데, 끝에 가서 진짜로 할 거냐 (y/n)를 물어보는데, y 를 누르면 계산을 하면서 CA 파일을 만든다. 아참, challenge password 라는 게 보이면 비밀번호를 굳이 입력하지 않고 엔터 치면 된다. 
-      sudo vi /etc/openvpn/server.conf +    DH (Diffie-Hellman) 키를 생성하자. 이건 좀 오래 걸린다. 
-        proto tcp # udp 는 주석 처리 +<code> 
-        push "redirect-gateway def1 bypass-dhcp" +./build-dh 
-        push "dhcp-option DNS 168.126.63.2" +</code> 
-        push "dhcp-option DNS 8.8.8.8" + 
-        tls-auth ta.key 0 +    * HMAC(Hash-based Message Authentication Code) 키를 만들자. 
-        cipher AES-128-CBC + 
-        user nobody +<code> 
-        group nogroup +openvpn --genkey --secret keys/ta.key 
-        key-direction 0 +</code> 
-        auth SHA256 + 
-    서버 네트워크 설정 +  * 서버 설정 
-      sudo vi /etc/sysctl.conf +<code> 
-        - 아래 항목 주석 해제 +cd ~/openvpn-ca/keys 
-        net.ipv4.ip_forward=1 앞에 #이 붙어 있을텐데, #을 지우자. +sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn 
-      sudo sysctl -p  +gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf 
-      sudo iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE +  server.conf 파일을 변경하자. 마지막 두줄은 추가해야 한다. 
-      iptables 설정을 부팅때마다 실행시키기 위해서는 몇가지 방법이 있는데, /etc/rc.local 파일 정도에 윗줄의 명령에서 sudo 를 빼고 입력하거나 sudo apt-get install iptables-persistent 를 실행하여 현재의 iptables 규칙을 저장하느냐의 방법이 있는데, 내 경우는 /etc/rc.local 파일에 적는 것을 추천한다. +    sudo vi /etc/openvpn/server.conf 
-      혹시라도 서버 앞단에 있는 방화벽이나 공유기 등에서 1194 포트가 막혀 있는지 확인해보고, 막혀 있다면 포트포워딩이나 열어야 하며, 그게 불가능하다면 다른 열려 있는 포트로 바꾸자. 바꾸려면 위에서 설명한 server.conf 파일과 아래에 설명할 클라이언트에서 포트를 바꿔서 적어주어야 한다. +<code> 
-    서버 실행 +proto tcp # udp 는 주석 처리 
-      sudo systemctl start openvpn@server 으로 실행을 하고, +push "redirect-gateway def1 bypass-dhcp" 
-      sudo systemctl status openvpn@server 으로 상태를 보자.. 그리고 +push "dhcp-option DNS 168.126.63.2" 
-      ip addr show tun0 해서 tun0 가 뜨는지를 보자. 이게 안 뜬다면 설정이 제대로 안된 거다. +push "dhcp-option DNS 8.8.8.8" 
-    클라이언트 키 생성 +tls-auth ta.key 0 
-      cd openvpn-ca +cipher AES-128-CBC 
-      source vars (또는 source ./vars) +user nobody 
-      ./build-key akpil akpil 대신 다른 이름을 써도 된다. +group nogroup 
-      mkkdir -p client-configs/files +key-direction 0 
-      cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf +auth SHA256 
-      vi ~/client-configs/base.conf 아래 세줄은 추가하여야 한다. +</code> 
-        remote your-public-address-here 1194 + 
-        proto tcp # udp 는 주석 처리 +    *  서버 네트워크 설정 
-        user nobody # 주석 해제 +<code> 
-        group nogroup # 주석 해제 +sudo vi /etc/sysctl.conf 
-        #ca ca.crt # 붙여서 주석처리 + 
-        #cert client.crt # 붙여서 주석처리 +net.ipv4.ip_forward=1 앞에 #이 붙어 있을텐데, #을 지우자. 저장하고 나와서 .
-        #key client.key # 붙여서 주석처리 + 
-        key-direction 1 +sudo sysctl -p  
-        cipher AES-128-CBC + 
-        auth SHA256 +sudo iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE 
-      vi ~/client-configs/make_config.sh +</code> 
-        #!/bin/bash +  * iptables 설정을 부팅때마다 실행시키기 위해서는 몇가지 방법이 있는데, /etc/rc.local 파일 정도에 윗줄의 명령에서 sudo 를 빼고 입력하거나 sudo apt-get install iptables-persistent 를 실행하여 현재의 iptables 규칙을 저장하느냐의 방법이 있는데, 내 경우는 /etc/rc.local 파일에 적는 것을 추천한다. 
-        # First argument: Client identifier +  혹시라도 서버 앞단에 있는 방화벽이나 공유기 등에서 1194 포트가 막혀 있는지 확인해보고, 막혀 있다면 포트포워딩이나 열어야 하며, 그게 불가능하다면 다른 열려 있는 포트로 바꾸자. 바꾸려면 위에서 설명한 server.conf 파일과 아래에 설명할 클라이언트에서 포트를 바꿔서 적어주어야 한다. 
-        KEY_DIR=~/openvpn-ca/keys +  서버 실행 
-        OUTPUT_DIR=~/client-configs/files +<code> 
-        BASE_CONFIG=~/client-configs/base.conf +sudo systemctl start openvpn@server 
-        cat ${BASE_CONFIG} \ +</code> 
-            <(echo -e '<ca>') \ + 
-            ${KEY_DIR}/ca.crt \ +<code> 
-            <(echo -e '</ca>\n<cert>') \ +sudo systemctl status openvpn@server 
-            ${KEY_DIR}/${1}.crt \ +</code> 
-            <(echo -e '</cert>\n<key>') \ + 
-            ${KEY_DIR}/${1}.key \ +<code> 
-            <(echo -e '</key>\n<tls-auth>') \ +ip addr show tun0 
-            ${KEY_DIR}/ta.key \ +</code> 
-            <(echo -e '</tls-auth>') \ +  * tun0 가 뜨는지를 보자. 이게 안 뜬다면 설정이 제대로 안된 거다. 
-            > ${OUTPUT_DIR}/${1}.ovpn + 
-      chmod 700 ~/client-configs/make_config.sh + 
-      ~/client-configs/make_config.sh akpil +  * 클라이언트 키 생성 
-      이렇게 하면 akpil.ovpn 파일이 생성된다. 이 파일을 클라이언트 디바이스에 전송하여 적용시키면 된다.+<code> 
 +cd openvpn-ca 
 +source vars (또는 source ./vars) 
 +./build-key akpil akpil 대신 다른 이름을 써도 된다. 
 +mkkdir -p client-configs/files 
 +cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf 
 +vi ~/client-configs/base.conf 아래 세줄은 추가하여야 한다. 
 + 
 +remote 서버 ip 주소 또는 도메인 이름 1194 
 +proto tcp # udp 는 주석 처리 
 +user nobody # 주석 해제 
 +group nogroup # 주석 해제 
 +#ca ca.crt # 붙여서 주석처리 
 +#cert client.crt # 붙여서 주석처리 
 +#key client.key # 붙여서 주석처리 
 +key-direction 1 
 +cipher AES-128-CBC 
 +auth SHA256 
 + 
 +</code> 
 + 
 +  * 클라이언트 인증서를 만들기 위한 스크립트 파일을 하나 만들자. 
 + 
 +<file make_config.sh> 
 +vi ~/client-configs/make_config.sh 
 + 
 +#!/bin/bash 
 +# First argument: Client identifier 
 +KEY_DIR=~/openvpn-ca/keys 
 +OUTPUT_DIR=~/client-configs/files 
 +BASE_CONFIG=~/client-configs/base.conf 
 +cat ${BASE_CONFIG} \ 
 +     <(echo -e '<ca>') \ 
 +     ${KEY_DIR}/ca.crt \ 
 +     <(echo -e '</ca>\n<cert>') \ 
 +     ${KEY_DIR}/${1}.crt \ 
 +     <(echo -e '</cert>\n<key>') \ 
 +     ${KEY_DIR}/${1}.key \ 
 +     <(echo -e '</key>\n<tls-auth>') \ 
 +     ${KEY_DIR}/ta.key \ 
 +     <(echo -e '</tls-auth>') \ 
 +     > ${OUTPUT_DIR}/${1}.ovpn 
 +</file> 
 + 
 +<code> 
 +chmod 700 ~/client-configs/make_config.sh 
 +~/client-configs/make_config.sh akpil 
 +</code> 
 + 
 +이렇게 하면 akpil.ovpn 파일이 생성된다. 이 파일을 클라이언트 디바이스에 전송하여 적용시키면 된다. 
 ----------- -----------
  
 2018/03/14 akpil  2018/03/14 akpil 
ubuntu에_openvpn_설치.1520991650.txt.gz · 마지막으로 수정됨: 2018/03/14 10:10 저자 akpil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki