Настройка OpenVPN сервера на Ubuntu 16.04
Надёжность, доступная каждому

Настройка OpenVPN сервера на Ubuntu 16.04

Установка OpenVPN

#Устанавливаем openvpn и скрипты для генерации ключей
apt-get update && apt-get install openvpn easy-rsa

Затем необходимо привести файл /etc/openvpn/server.conf к следующему виду:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
push "redirect-gateway def1 bypass-dhcp" #default gateway через VPN
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
user nobody
group nogroup
server 10.8.0.0 255.255.255.0
keepalive 10 120
comp-lzo
persist-key
persist-tun
cipher AES-256-CBC
verb 3
#Разрешаем обмен трафиком между сетевыми интерфейсам
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf && sysctl -p
#SNAT для vpn клиентов
#Необходимо добавить в автозагрузку, например, с помощью пакета iptables-persistent
iptables -t nat -A POSTROUTING -s 10.8.0.0/8 -o eth1 -j MASQUERADE

Генерация серверных ключей и сертификатов

#Копируем скрипты для генерации ключей
cp -r /usr/share/easy-rsa/ /etc/openvpn
#Создаем директорию, в которой будут храниться ключи
mkdir /etc/openvpn/easy-rsa/keys
#При необходимости меняем значения в /etc/openvpn/easy-rsa/vars
#Данная информация будет указана в сертификатах и ключах
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
#Генерируем параметры Диффи-Хеллмана
openssl dhparam -out /etc/openvpn/dh2048.pem 2048
#Установка переменных окружения для PKI
cd /etc/openvpn/easy-rsa && source ./vars
./clean-all
#Генерация CA (при необходимости можно изменить реквизиты)
./build-ca
#Генерация  серверного ключа и сертификата
#При необходимости задаем реквизиты
#Если задать пароль, то его необходимо будет вводить при каждом запуске openvpn-сервера
#На вопросы о подписи сертификата необходимо ответить 'y'
cd /etc/openvpn/easy-rsa  && ./build-key-server server
cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn
systemctl daemon-reload
systemctl start openvpn.service

Генерация клиентских ключей и сертификатов

#Генерируем сертификаты и ключи для клиентов
#При необходимости задаем реквизиты
#Если задать пароль, то его необходимо будет вводить при каждом подключении к серверу
#На вопросы о подписи сертификата необходимо ответить 'y'
cd /etc/openvpn/easy-rsa && ./build-key client1
#Копируем следующие файлы на клиентскую машину
/etc/openvpn/easy-rsa/keys/client1.crt
/etc/openvpn/easy-rsa/keys/client1.key
/etc/openvpn/ca.crt

Также необходимо создать клиентский конфигурационный файл (client1.ovpn):

server_ip необходимо заменить на IP-адрес сервера
client
dev tun
proto udp
remote server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
remote-cert-tls server
comp-lzo
user nobody
group nogroup
cipher AES-256-CBC
verb 3

Подключение

Файлы client1.crt, client1.key, ca.crt, client1.ovpn необходимо скопировать в директорию config:

Затем в интерфейсе openvpn GUI необходимо нажать кнопку Connect.