Развертывание VPN-сервиса

Этот образ гарантирует только корректную работу базовых функций. Если у вас есть возможность настроить всё самостоятельно, рекомендуется развернуть сервис самостоятельно или использовать этот образ как пример реализации. Перед использованием необходимо обладать базовыми знаниями Linux и Docker. Этот образ протестирован на Debian 9. В этой статье описывается использование на Debian 9; как правило, инструкция подходит и для других систем, например Ubuntu. Порт службы по умолчанию — 1190/UDP, убедитесь, что это правило разрешено в брандмауэре.

Подготовка

Вам также необходимо внести следующие изменения на сервере и выполнить следующие команды:

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

Если на вашем сервере установлен ufw, необходимо добавить следующее в начало файла /etc/ufw/before.rules. Здесь eth0 и подсеть нужно изменить в соответствии с фактическим интерфейсом и конфигурацией вашего сервера. Обратите внимание: блок добавляется перед правилом *filter, если оно есть.

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.27.27.0/24 -o eth0 -j MASQUERADE
COMMIT

Измените следующую настройку в файле /etc/default/ufw на ACCEPT.

DEFAULT_FORWARD_POLICY="ACCEPT"

Наконец, выполните следующую команду, чтобы перезагрузить правила брандмауэра ufw:

ufw reload

Если на вашем сервере не установлен ufw, убедитесь, что правило FORWARD в iptables установлено в ACCEPT, и выполните следующую команду:

Внимание

После перезагрузки сервера это правило, возможно, потребуется применить снова; рекомендуется установить ufw.

iptables -P FORWARD ACCEPT

Начальная настройка

Теперь создайте каталог для хранения конфигурации OpenVPN-сервиса.

mkdir -p ~/lamda-openvpn-server

Затем выполните следующую команду для инициализации OpenVPN-сервиса:

docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-server-new

Дождитесь завершения выполнения команды. Теперь в каталоге ~/lamda-openvpn-server вы увидите файл конфигурации config.ovpn. Вы можете открыть его в редакторе. Рекомендуется изменять только следующие параметры:

# Подсеть и маска VPN
server 172.27.27.0 255.255.255.0
# Порт VPN-сервиса
port 1190

# Если нужно, чтобы VPN-клиенты обращались к какому-либо сетевому интерфейсу на сервере, можно добавить маршрут.
# Внимание: в этом случае клиент сможет обращаться только к IP текущего хоста в этой подсети.
# Для полного доступа к этой подсети потребуется дополнительная настройка.
push "route 192.168.68.0 255.255.255.0"

# Замените 114.114.114.114 на адрес DNS-сервера, который вам нужен
push "dhcp-option DNS 114.114.114.114"

Создание учётных данных клиента

После редактирования создайте клиента. myname можно заменить на любое другое имя, но имена не должны повторяться.

docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-new myname

После создания получите учётные данные клиента с помощью следующих команд:

# Внимание: IP в конфигурации — это автоматически определённый текущий публичный IP; если он неверен, измените его вручную.
#
# Создать конфигурацию ovpn и перенаправить её в файл myname.ovpn. Этот файл можно использовать в клиентах, таких как OpenVPN Connect.
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-profile ovpn myname >myname.ovpn
# Создать OpenVPNProfile для lamda; его можно напрямую использовать в lamda.
# В выводе содержатся настройки openvpn.*. О том, как их указать для автоматического подключения к VPN, см. раздел конфигурации службы.
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-profile lamda myname

Отзыв учётных данных клиента

Если необходимо отозвать учётные данные какого-либо клиента, выполните следующую команду. После отзыва может потребоваться перезапустить OpenVPN-сервис.

docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-revoke myname

Запуск OpenVPN-сервиса

Теперь вы можете выполнить следующую команду, чтобы запустить OpenVPN-сервис на переднем плане и напрямую видеть журналы подключений клиентов и устранять ошибки.

docker run -it --rm --name openvpn-server --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn run

Убедившись, что всё работает корректно, рекомендуется запустить сервис в фоновом режиме. Используйте следующую команду для фонового запуска:

docker run -d --rm --name openvpn-server --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn run

Справочная документация

Базовая документация: https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/

Настройка маршрутизации: https://community.openvpn.net/openvpn/wiki/BridgingAndRouting