Развертывание службы 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, выполнив следующую команду.
Внимание
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