SW 개발

[admin] openvpn 설치 및 사용하기 (오드로이드,라즈베리파이,우분투)

. . . 2018. 7. 3. 17:22
반응형

오드로이드에 open  vpn 을 설치한다.

 -> 오드로이드 / 라즈베리파이 / 오렌지파이등등의 임베드드 보드에서 다음과 같이 사용가능하다.

 -> pc 의 ubuntu 에서도 다음과 같이 설정하여 사용가능하다.

 

참고한 url

open vpn 서버 설치 및 설정

포트포워딩

iptime 의 포트포워딩시 udp / tcp 를 모두 연다

설치

OpenVPN 2.3부터 Easy-RSA가 다른 프로젝트로 떨어져 나가면서 OpenVPN을 설치할 때 함께 설치되지 않게 되었다. 때문에, 먼저 apt-get install easy-rsa 로 Easy-RSA를 설치해 준다.

  • apt-get install openvpn easy-rsa

Easy-RSA 설치가 끝난 뒤, /usr/share/easy-rsa/ 로 이동하고, vars 파일을 입맛에 맞게 수정해 준다.

키설정

/usr/share/easy-rsa/ 로 이동

vars 파일 수정

  • $ vi vars
  • // 사용자 환경에 맞게 설정해준다.
  • export KEY_COUNTRY="KR"
  • export KEY_PROVINCE="Seoul"
  • export KEY_CITY="Seoul"
  • export KEY_ORG="Fort-Funston"
  • export KEY_EMAIL="chalsu@mail.com"
  • export KEY_OU="MyOrganizationalUnit"

Server Key 생성

Server용 인증키를 생성한다.

  • // key 생성을 위한 기본 변수 설정
  • $ source .vars
  • NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/kim/easy-rsa-2.2.2/easy-rsa/2.0/keys
  • // 초기 clean
  • $ ./clean-all
  • // CA key 생성
  • $ ./build-ca
  • // Server key 생성
  • $ ./build-key-server server
  • // Diffie Hellman parameters 생성 (for server)
  • $ ./build-dh

Client Key 생성

이후 OpenVPN Client 구축에 필요한 인증키를 생성한다. 

Client가 여러개라면 각 클라이언트 마다 다른 client key가 필요하다.

예를 들어 5대의 client가 있다면 5개의 key가 필요하다.

  • // Client key 생성
  • // ./build-key "client_name"
  • $ ./build-key client01

위 과정을 진행하면 client01 이라는 이름의 client key가 생성된다.

추가 client에 대한 key가 필요하다면 client02, client03, …등의 식별 가능한 이름으로 추가 key를 생성하면 된다.

 

Server key 복사

생성된 Server key를 OpenVPN 디렉토리로 복사한다.

  • $ cd keys/
  • // key를 복사할 폴더 생성
  • $ sudo mkdir -p /etc/openvpn/server_keys
  • // Server와 관련된 key 파일들 복사
  • $ sudo cp dh2048.pem ca.crt server.crt server.key /etc/openvpn/server_keys/

OpenVPN server 설정파일 작성

OpenVPN server에 적용할 설정파일을 작성한다.

  • /usr/share/doc/openvpn/samples/
    • openvpn의 설정 파일 샘플
  • vi server.conf 를 입력, 설정 파일의 값을 적절하게 수정한다.
  • $ sudo vi /etc/openvpn/server.conf
  • port 1194
  • # use the same settings as we are using on the server
  • dev tun
  • # UDP server
  • proto udp
  • # key 경로 및 파일명 설정
  • ca /etc/openvpn/server_keys/ca.crt
  • cert /etc/openvpn/server_keys/server.crt
  • key /etc/openvpn/server_keys/server.key # This file should be kept secret
  • dh /etc/openvpn/server_keys/dh2048.pem
  • # VPN 네트워크 영역을 지정한다. 일반적으로 10.8.0.0을 사용한다.
  • server 10.8.0.0 255.255.255.0
  • # Uncomment this directive to allow different
  • # clients to be able to "see" each other.
  • client-to-client
  • keepalive 10 120
  • # 인증서 중복 허용
  • duplicate-cn
  • # 압축 사용
  • comp-lzo
  • # 재연결 시 동일한 키 사용
  • persist-key
  • # 재연결 시 동일한 디바이스 사용
  • persist-tun
  • # ubuntu 에서 openvpn 서버의 사용자 권한을 낮춘다.
  • user nobody
  • group nogroup
  • # cipher method
  • cipher BF-CBC # or AES-128-CBC, DES-EDE3-CBC
  • # Set log file verbosity
  • verb 3

OpenVPN 포트포워드 설정

OpenVPN 서버를 실행한 뒤, 리눅스 커널에서 IP 포워딩을 활성화하기 위하여 echo 1 > /proc/sys/net/ipv4/ip_forward 를 입력한다.

부팅시 자동 실행을 위해 sysctl.conf에 다음과 같은 내용을 추가한다.

  • vi /etc/sysctl.conf
  • net.ipv4.ip_forward=1

openvpn 실행

  • sudo openvpn server.conf

자동실행되게 하려면 service 에 등록하던가 직접 rc.local 에 등록하던가 한다.






각종 클라이언트에서의 사용

안드로이드건, pc건 openvpn 클라언트를 사용하기 위해서는 .ovpn 파일이 있어야한다.

ovpn 파일을 만들기위한 준비

openvpn 서버측에서 만든 인증용 파일들중에 다음의 파일을 따로 복사해놓는다.

  • ca.crt
  • 클라이언트이름.crt
  • 클라이언트이름.key

주의사항

  • “클라이언트이름” 으로 만든 key 의 경우 한개의 클라이언트당 1개다.
    • easy-rsa 로 만든 클라이언트용 키 다,
      • ./build-key 클라이언트이름
  • 만약 클라이언트를 여러개 사용하고싶다면 여러개의 키를 만들어서 각각의 ovpn 파일을 만든다.
    • 1개의 키로 여러 클라이언트가 사용하게 하는것은 서버측 설정을 바꾸면된다고 한다…;;

.OVPN파일 만들기

  • ca.crt / 클라이언트이름.crt / 클라이언트이름.key

위의 3개 파일을 따로 복사해놓는다. 위의 3개의 파일에서 “CERTIFICATE”  / “PRIVATE” 부분을 카피하여 ovpn 파일을 작성한다.

openvpn_client_01.ovpn

  • client
  • proto udp
  • remote DDNS 서버 주소
  • port 1194
  • dev tun
  • nobind
  • key-direction 1
  • <ca>
  • -----BEGIN CERTIFICATE-----
  • # ca.crt 에 있는 CERTIFICATE를 복사해서 붙인다. (밑은 예시)
  • -----END CERTIFICATE-----
  • </ca>
  • <cert>
  • -----BEGIN CERTIFICATE-----
  • # 클라이언트이름.crt 에 있는 CERTIFICATE(맨 아래에 있음)를 복사해서 붙인다.(밑은 예시)
  • -----END CERTIFICATE-----
  • </cert>
  • <key>
  • -----BEGIN PRIVATE KEY-----
  • # 클라이언트이름.key 에 있는 CERTIFICATE(맨 아래에 있음)를 복사해서 붙인다.
  • -----END PRIVATE KEY-----
  • </key>

 

conf 파일 만들기

자신의 공유기 ddns 주소로 변경하고 붙여 넣은 후에 저장

openvpn_client_01.conf 

  • client
  • dev tun
  • proto udp
  • remote DDNS주소 1194
  • resolv-retry infinite
  • nobind
  • persist-key
  • persist-tun
  • ns-cert-type server
  • comp-lzo
  • verb 3

ovpn 사용하여 접속

  • 안드로이드 혹은 pc 의 openvpn 클라이언트에 conf 파일과 ovpn 파일을 카피한다.
  • 설정파일 불러오기 혹은 import 매뉴를 통해서 conf 파일과 ovpn 파일을 선택하면 된다.
    • 이미 해당 파일들에 ddns 주소나 포트번호등이 명시되어있기 때문에 별도의 설정없이 바로 접속가능하다.
  • 이때, 공유기쪽에 openvpn 에서 사용할 포트를 포트포워딩을 했다면 udp / tcp 포트를 모두 열어주면된다.


반응형