openvpn 설치해보기
관련링크
본문
블로그에 적었던 것을 그대로 긁어서 보기 이상할 수도 있습니다... ;ㅅ;a
참고 url 들
http://blog.yunochi.co.kr/?p=568
http://inmile.tistory.com/15
http://blog.syszone.co.kr/2495
http://incredible.ai/ubuntu/2016/07/04/Open-VPN/
https://www.joinc.co.kr/w/Site/System_management/VPN/OpenVPN
등등 구글 검색으로 다수의 블로그들과 stackoverflow 사이트 글에서 도움을 받았습니다.
설치 환경
집과 회사 모두 J3160 보드를 사용했고 OS 는 각각 Ubuntu Server 17.10 , Ubuntu Server 16.04 LTS 를 썼습니다.
J3160 보드는 집에서 개인 서버용으로 사용할 것을 찾다가 이것을 활용해서 vpn 서버를 셋팅해주는 분(아마도 지인들에게?)의 블로그를 보고 선택했었습니다. 20~25 명 정도까지는 무난하게 커버한다고 합니다.
openvpn 설치
제 경우엔 따로 압축 파일을 받아 설치하는 것 없이 패키지 설치관리자를 통해 문제없이 설치되었습니다.
# apt update
# apt install openvpn easy-rsa -y
다음 easy-rsa 파일들을 openvpn 밑으로 복사해 와서 작업했습니다.
패키징 관리 시스템을 통해 설치한 경우 복사본을 만들어 편집하는 것을 권장하고 있습니다.
# mkdir /etc/openvpn/cert
# cp /usr/share/easy-rsa/* /etc/openvpn/cert/
인증서 생성
# cd /etc/openvpn/cert/
vars 파일의 내용 수정
# 작업하는 easy-rsa 경로를 적어준다.
# vars 파일을 다른 특정 위치에 둔게 아니라면
# 기본값 `pwd` (현재작업디렉토리) 그대로 놔둬도 상관없다.
export EASY_RSA="/etc/openvpn/cert/"
export KEY_COUNTRY="KR"
export KEY_PROVINCE="SEOUL"
export KEY_CITY="SEOUL"
export KEY_ORG="MY-HOME"
export KEY_EMAIL="XXX@XXXX.com" # 이메일 주소 적어준다
export KEY_OU="MY-HOME"
export KEY_NAME="server"
var 적용
# source ./vars
키 초기화
# ./clean-all
ca key, server key 생성
# ./build-ca
# ./build-key-server server
Diffie Hellman 파라미터 생성
# ./build-dh
client key 생성
client01, client02 등 편한 방식으로 키를 생성 합니다.
이 후에 특정 키를 폐기 시키고 싶은 경우 해당 키를 재생성하면 기존 키는 못 쓰게 됩니다.
# ./build-key client01
tls 인증을 위한 키 만들어두기
# openvpn --genkey --secret ta.key
인증서 배포
ca.crt, client.crt, client.key, ta.key 를 해당 클라이언트에 맞게 배포하면 됩니다.
client01 이면 ca.crt, client01.crt, client01.key, ta.key 이렇게 건내주면 됩니다.
openvpn 서비스 설정 편집
# nano /etc/default/openvpn
파일 내용 중에 다음 항목들을 수정해줍니다.
# AUTOSTART 주석해제
AUTOSTART="all"
# config 파일 위치 지정
OPTARGS="/etc/openvpn/server.conf"
server.conf 파일 만들기
# nano /etc/openvpn/server.conf
# 자신의 환경에 맞게 ip 주소 적어준다
local 192.168.0.144
# 적당한 사용하고 싶은 포트 번호 적기.
# 공유기 사용시 포트포워딩 해주도록 한다.
port 4094
# udp / tcp 중 선택
proto tcp
dev tun
# 인증서,키 파일들 위치 지정
ca /etc/openvpn/cert/keys/ca.crt
cert /etc/openvpn/cert/keys/server.crt
key /etc/openvpn/cert/keys/server.key
dh /etc/openvpn/cert/keys/dh2048.pem
# client 에 할당할 subnet 지정
server 10.8.0.0 255.255.255
keepalive 10 120
# 생성해둔 ta.key 경로를 적어준다
tls-auth /etc/openvpn/cert/keys/ta.key 0
# 압축 사용
comp-lzo
persist-key
persist-tun
# 로그 파일
status openvpn-status.log
# 암호방식, BF-CBC 는 sweet32 공격 위험 경고가 뜬다.
cipher AES-256-CBC
verb 3
방화벽 포트 열기
# ufw allow 4094
client 설정
openvpn 윈도우용 installer 받아 설치후 인증서는 기본 위치에 넣었습니다.
client.ovpn 파일 작성
client
dev tun
proto tcp
remote XXX.XXX.XXX.XX 4094 # 공유기에 bind 된 public ip 적어줌
auth-nocache
nobind
persist-key
persist-tun
ca ca.crt
cert Client.crt
key Client.key
remote-cert-tls server
tls-auth ta.key 1
comp-lzo
cipher AES-256-CBC
verb 3
연결을 수행하고 문제가 없다면 트레이 아이콘에 녹색불이 들어오고
상태창을 열어보면 잘 접속된 것을 확인할 수 있습니다.