logo

한국어

[Ubuntu] OpenVPN 서버 설치 스크립트

관리자 2018.04.23 16:32 조회 수 : 16

다운로드: install_openvpn_ubuntu.sh
#!/bin/sh
#####################################################################
#
# OpenVPN 설치 스크립트 (for Ubuntu)
# 디폴트포트: 1194/udp
#
#####################################################################

#####################################################################
#
# OpenVPN 서버 네트워크 값 설정
# ex) "192.168.0.0 255.255.255.240"
#
#####################################################################
CONF_SERVER_NETWORK="192.168.1.0 255.255.255.240"

#####################################################################
#
# 패키지 설치
#
#####################################################################
apt-get install -y easy-rsa
apt-get install -y openvpn

#####################################################################
#
# 환경변수 설정
#
#####################################################################
rm -rf /usr/share/easy-rsa/keys
mkdir -p /usr/share/easy-rsa/keys
cd /usr/share/easy-rsa
sed -i "s/KEY_COUNTRY=\"US\"/KEY_COUNTRY=\"KR\"/g" /usr/share/easy-rsa/vars
sed -i "s/KEY_PROVINCE=\"CA\"/KEY_PROVINCE=\"Seoul\"/g" /usr/share/easy-rsa/vars
sed -i "s/KEY_CITY=\"SanFrancisco\"/KEY_CITY=\"Seoul\"/g" /usr/share/easy-rsa/vars
sed -i "s/KEY_ORG=\"Fort-Funston\"/KEY_ORG=\"My Company\"/g" /usr/share/easy-rsa/vars
. /usr/share/easy-rsa/vars

#####################################################################
#
# easy-esa로 키 생성 (server, client)
#
# A challenge password를 반드시 입력해야 한다.
#
#####################################################################
./clean-all
echo -en "\n\n\n\n\n\n\n\ny\ny\n" | ./build-ca
clear
echo "#####################################################################"
echo "#"
echo "# ./build-key-server server"
echo "#"
echo "# 'A challenge password[]' is mandatory !"
echo "#"
echo "#####################################################################"
./build-key-server server
clear
echo "#####################################################################"
echo "#"
echo "# ./build-key client"
echo "#"
echo "# 'A challenge password[]' is mandatory !"
echo "#"
echo "#####################################################################"
./build-key client
clear
./build-dh
cp -R keys /etc/openvpn

#####################################################################
#
# openvpn 설정 파일 복사
#
#####################################################################
cp -fv /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
cd /etc/openvpn
gzip -fd server.conf.gz

#####################################################################
#
# openvpn 설정 파일 수정
#
#####################################################################

CONF_SERVER_NETWORK="192.168.0.0 255.255.255.240"
sed -i "s/ca ca.crt/ca keys\/ca.crt/g" /etc/openvpn/server.conf
sed -i "s/cert server.crt/cert keys\/server.crt/g" /etc/openvpn/server.conf
sed -i "s/key server.key  # This file should be kept secret/key keys\/server.key  # This file should be kept secret/g" /etc/openvpn/server.conf
sed -i "s/dh dh2048.pem/dh keys\/dh2048.pem/g" /etc/openvpn/server.conf
sed -i "s/server 10.8.0.0 255.255.255.0/server ${CONF_SERVER_NETWORK}/g" /etc/openvpn/server.conf
sed -i "s/;client-to-client/client-to-client/g" /etc/openvpn/server.conf
sed -i "s/;duplicate-cn/duplicate-cn/g" /etc/openvpn/server.conf
sed -i "s/;max-clients 100/max-clients 100/g" /etc/openvpn/server.conf
sed -i "s/;push \"dhcp-option DNS 208.67.222.222\"/push \"dhcp-option DNS 8.8.8.8\"/g" /etc/openvpn/server.conf
sed -i "s/;push \"dhcp-option DNS 208.67.220.220\"/push \"dhcp-option DNS 8.8.4.4\"/g" /etc/openvpn/server.conf
sed -i "s/;push \"redirect-gateway def1 bypass-dhcp\"/push \"redirect-gateway def1 bypass-dhcp\"/g" /etc/openvpn/server.conf
sed -i "s/;user nobody/user nobody/g" /etc/openvpn/server.conf
sed -i "s/;group nogroup/group nogroup/g" /etc/openvpn/server.conf
sed -i "s/;log         openvpn.log/log \/var\/log\/openvpn.log/g" /etc/openvpn/server.conf
echo "plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so login" >> /etc/openvpn/server.conf

#####################################################################
#
# IP Forwarding 설정
#
#####################################################################
sed -i "s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g" /etc/sysctl.conf

#####################################################################
#
# 자동 시작 설정
#
#####################################################################
systemctl enable openvpn
systemctl stop openvpn
systemctl start openvpn
systemctl status openvpn