Развертывание 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