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

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

Установка

Устанавливаем OpenVPN:

apt update
apt install openvpn easy-rsa

Сертификаты сервера

Создадим символьную ссылку на каталог со скриптами:

ln -s /usr/share/easy-rsa /etc/openvpn/easy-rsa

Меняем значения в /etc/openvpn/easy-rsa/vars. Данная информация будет указана в сертификатах и ключах:

nano /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

Передаём значения переменных из vars в переменные оболочки:

cd /etc/openvpn/easy-rsa
. ./vars

Создаём каталог PKI:

./easy-rsa init-pki

Создаем корневой сертификат:

./easy-rsa build-ca

Полученные файлы будут расположены в:

/etc/openvpn/easy-rsa/pki/ca.crt
/etc/openvpn/easy-rsa/pki/private/ca.key

Формируем ключ Диффи-Хеллмана:

./easyrsa gen-dh

Полученный файл будет расположен в:

/etc/openvpn/easy-rsa/pki/dh.pem

Создаем запрос на сертификат для сервера и генерируем сам сертификат (вместо имени «vpn-server» можете указать своё имя сервера). Добавьте опцию nopass. Без этого файл запроса будет защищен паролем, что впоследствии может привести к проблемам с разрешениями:

./easyrsa gen-req vpn-server nopass
./easyrsa sign-req server vpn-server
После ввода команды подтверждаем правильность данных, введя yes и вводим пароль, который указывали при создании корневого сертификата.

Полученные файлы будут расположены в:

/etc/openvpn/easy-rsa/pki/issued/vpn-server.crt
/etc/openvpn/easy-rsa/pki/private/vpn-server.key

Создадим ta ключ, чтобы использовать параметр tls-auth, добавив дополнительную проверку целостности.  Это обеспечит дополнительный уровень безопасности протокола SSL/TLS:

openvpn --genkey --secret pki/ta.key

Полученный файл будет расположен в:

/etc/openvpn/easy-rsa/pki/ta.key

Сертификаты клиента

Создаем запрос на сертификат и сам сертификат(вместо имени «vpn-client» можете указать своё имя клиента):

./easyrsa gen-req vpn-client nopass
./easyrsa sign-req client vpn-client
После ввода команды подтверждаем правильность данных, введя yes и вводим пароль, который указывали при создании корневого сертификата.

Полученные файлы будут расположены в:

/etc/openvpn/easy-rsa/pki/issued/vpn-client.crt
/etc/openvpn/easy-rsa/pki/private/vpn-client.key

Создание конфигурационных файлов сервера и клиента

Создадим конфигурационный файл сервера:

nano /etc/openvpn/server.conf

и приведём его к виду:

port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/vpn-server.crt
key /etc/openvpn/easy-rsa/pki/private/vpn-server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log         /var/log/openvpn/openvpn.log
log-append  /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1

Разрешаем обмен трафиком между сетевыми интерфейсам:

echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf && sysctl -p

Необходимо добавить в автозагрузку, например, с помощью пакета iptables-persistent, маскарадинг клиентов OpenVPN:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE

Запускаем сервер:

systemctl daemon-reload
service openvpn start
service openvpn@server start

Подключение

Копируем следующие файлы на устройство-клиент:

/etc/openvpn/easy-rsa/pki/ca.crt
/etc/openvpn/easy-rsa/pki/issued/vpn-client.crt
/etc/openvpn/easy-rsa/pki/private/vpn-client.key
/etc/openvpn/easy-rsa/pki/ta.key

На устройстве, с которого вы будете подключаться по OpenVPN (клиент), необходимо создать конфигурационный файл клиента (client.ovpn) и привести его к виду (server_ip необходимо заменить на IP-адрес сервера):

remote server_ip 1194
client
resolv-retry infinite
nobind
proto udp
dev tun
comp-lzo
ca ca.crt
cert vpn-client.crt
key vpn-client.key
tls-client
tls-auth ta.key 1
keepalive 10 120
persist-key
persist-tun
verb 3
user nobody
group nogroup

Устанавливаем на клиент ПО OpenVPN.

После установки запускаем программу от имени администратора, далее нажимаем правой кнопкой мыши на значок в системном трее в правом нижнем углу и выбираем «Настройки...». Переходим во вкладку «Расширенные» и указываем директорию для хранения конфигураций C:\Program Files\OpenVPN\config.

Файлы vpn-client.crt, vpn-client.key, ca.crt, ta.key, client.ovpn необходимо скопировать в директорию C:\Program Files\OpenVPN\config.

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