Устанавливаем 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. Без этого файл запроса будет защищен паролем, что впоследствии может привести к проблемам с разрешениями:
Полученные файлы будут расположены в:
/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» можете указать своё имя клиента):
Полученные файлы будут расположены в:
/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.