Ubuntu 에 OpenVPN 설치하기


우분투 16.04 LTS 버전을 기준으로, OpenVPN 설치하는 방법을 정리해본다.

필요한 패키지 설치

mkdir openvpn-ca
cd openvpn-ca
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
export KEY_NAME="server"
./clean-all
./build-dh
openvpn --genkey --secret keys/ta.key
cd ~/openvpn-ca/keys
sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
  * server.conf 파일을 변경하자. 마지막 두줄은 추가해야 한다.
    * sudo vi /etc/openvpn/server.conf
<code>
proto tcp # udp 는 주석 처리
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 168.126.63.2"
push "dhcp-option DNS 8.8.8.8"
tls-auth ta.key 0
cipher AES-128-CBC
user nobody
group nogroup
key-direction 0
auth SHA256
sudo vi /etc/sysctl.conf

net.ipv4.ip_forward=1 앞에 #이 붙어 있을텐데, #을 지우자. 저장하고 나와서 ..

sudo sysctl -p 

sudo iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
sudo systemctl start openvpn@server
sudo systemctl status openvpn@server
ip addr show tun0
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
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
chmod 700 ~/client-configs/make_config.sh
~/client-configs/make_config.sh akpil

이렇게 하면 akpil.ovpn 파일이 생성된다. 이 파일을 클라이언트 디바이스에 전송하여 적용시키면 된다.


2018/03/14 akpil