В некоторых случаях необходимо обернуть OpenVPN во что-то для прохода через фаерволы. Отличным вариантом является stunnel.
Устанавливаем на сервер и на клиенте:
apt install stunnel4
Создаем ключи:
cd /etc/stunnel openssl genrsa -out key.pem 2048 openssl req -new -x509 -key key.pem -out cert.pem -days 3650 cat key.pem cert.pem >> stunnel.pem
Создаем файл конфигурации /etc/stunnel/stunnel.conf
chroot = /var/lib/stunnel4 pid = /stunnel.pid output = /stunnel.log setuid = stunnel4 setgid = stunnel4 socket = l:TCP_NODELAY=1 [openvpn] accept = XX.XX.XX.XX:YYYY connect = 127.0.0.1:1194 cert=/etc/stunnel/cert.pem key=/etc/stunnel/key.pem
где XX.XX.XX.XX - адрес на котором stunnel будет слушать, а YYYY - порт
Для того, чтобы сервис stunnel стартовал автоматически необходимо отредактировать файл /etc/default/stunnel4
ENABLED=1
Открываем порт на фаерволе (в моем случае это ufw):
sudo ufw allow YYYY
Теперь перезапустим службу stunnel, сервис должен полноценно заработать и начать принимать входящие соединения:
# sudo /etc/init.d/stunnel4 restart
Копируем stunnel.pem - сертификат с сервера в /etc/stunnel
Создаем файл конфигурации /etc/stunnel/stunnel.conf
output = /stunnel.log client = yes [openvpn] cert = /etc/stunnel/stunnel.pem accept = ZZ.ZZ.ZZ.ZZ:1194 connect = XX.XX.XX.XX:YYYY
где
Теперь перезапустим службу stunnel, клиент должен подключиться:
# sudo /etc/init.d/stunnel4 restart
Далее в OpenVPN со стороны клиента настраиваем подключение к ZZ.ZZ.ZZ.ZZ:1194 и проверяем работу