Развертывание службы OpenVPN

Этот образ гарантирует только базовую функциональность. Если у вас есть возможность настроить все самостоятельно, рекомендуется сделать это или использовать реализацию этого образа в качестве примера. Перед использованием вам потребуются базовые знания 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 на адрес нужного вам 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.
# Он содержит закомментированную часть properties.local. Вы можете скопировать конфигурацию openvpn.* из нее
# в /data/usr/properties.local для автоматического подключения к 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