Схема следующа. OpenVPN-сервер находится в РФ, к нему подключаютсся клиенты, а также шлюз, через который идёт весь трафик. Обязательно использование режима DCO (Data channel offloading) для OpenVPN-интерфейсов клиента и шлюза, т.к. при включении этого режима производительность увеличивается драматически. Поэтому использование готовых скриптов типа github/angristan нам не подходит, будем поднимать всё ручками. Для начала нам нужно два сервера - в РФ и в забугорище. Оба подготавливаем идентично: ``` apt update && apt dist-upgrade -y ``` Если произошёл апгрейд ядра, нужно обязательно перезагрузиться, т.к. в дальнейшем мы будем устанавливать расширения ядра. ``` reboot ``` Когда перезагрузились, устанавливаем необходимые пакеты: ``` apt install -y openvpn openvpn-dco-dkms easy-rsa ``` Далее включаем модуль openvpn-dco: ``` modprobe ovpn-dco-v2 ``` Проверяем, включилось ли: ``` lsmod | grep ovpn ``` Если вывод пуст, разбираемся. Если вывод что-то типа > ovpn_dco_v2 86016 0 > ip6_udp_tunnel 16384 1 ovpn_dco_v2 > udp_tunnel 32768 1 ovpn_dco_v2 То всё хорошо, можно примменять на постоянку: ``` echo "ovpn-dco-v2" | sudo tee -a /etc/modules ``` ``` update-initramfs -u -k all ``` Можно ещё раз перезагрузиться и проверить наличие dco-модуля после перезагрузки `lsmod | grep ovpn` Теперь приступим к настройке OpenVPN-сервера. Инициализируем инфраструктуру открытых ключей и выпускаем сертификат сервера (без паролей для автозапуска): ``` make-cadir ~/openvpn-ca && cd ~/openvpn-ca ./easyrsa init-pki ./easyrsa build-ca nopass ./easyrsa gen-dh # Генерация и подписание ключей сервера ./easyrsa gen-req server nopass ./easyrsa sign-req server server # Генерация секретного ключа защиты от сканирования (TLS-Crypt) openvpn --genkey secret tls-crypt.key ``` Копируем ключи в рабочую директорию OpenVPN-сервера: ``` cp pki/ca.crt pki/dh.pem pki/issued/server.crt pki/private/server.key tls-crypt.key /etc/openvpn/server/ ``` Создаём конфиг сервера: ``` nano /etc/openvpn/server/server.conf ``` Вставляем следующее содержимое: ``` dev tun proto udp port 1194 server 10.210.0.0 255.255.255.0 topology subnet # Сертификаты и секреты ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.crt key /etc/openvpn/server/server.key dh /etc/openvpn/server/dh.pem tls-crypt /etc/openvpn/server/tls-crypt.key # Максимальная скорость (Только AES-128-GCM, без сжатия) data-ciphers AES-128-GCM data-ciphers-fallback AES-128-GCM # Логирование (минимум операций, разгрузка CPU) verb 1 mute 20 # Тайм-ауты и папка индивидуальных настроек keepalive 10 120 persist-key persist-tun client-config-dir /etc/openvpn/server/ccd # Маршрут по умолчанию для клиентов push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 1.1.1.1" ``` ``` ip -details link show dev tun0 ```