Вопрос или проблема
Моя проблема, вероятно, супер тривиальна, но я действительно совершенно новичок в этих темах. У меня есть виртуальный сервер (Ubuntu 24.04, Plesk) с фиксированным IP (123.123.123.123 в примере) от моего провайдера IONOS. Он служит сервером OpenVPN и также является хостом для MariaDB (доступен только для localhost). Я могу подключаться к серверу OpenVPN через свои VPN-клиенты для Windows. Но приложение для Windows может общаться с MariaDB только в том случае, если я сделаю его общедоступным, а не только для localhost.
Мой файл vpnserver.conf выглядит так:
port 1194
proto tcp4
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
remote-cert-tls client
server 10.8.1.0 255.255.255.0
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "redirect-gateway def1 bypass-dhcp"
ca ca.crt
cert vpnserver.crt
key vpnserver.key
dh dh.pem
tls-crypt ta.key
cipher AES-256-GCM
auth SHA512
tls-version-min 1.2
verb 3
Приложение для Windows получает доступ к серверу БД напрямую через соответствующий ODBC-коннектор, т.е. 123.123.123.123:3306 (и, конечно, имя пользователя и пароль). Именно этот доступ должен быть туннелирован через OpenVPN, вздох.
Теперь вопрос в том, нужны ли мне еще маршруты или переадресация портов и т.д.
В UFW сервера указано:
# ufw-before-output
# ufw-before-forward
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8 -o ens6 -j MASQUERADE
COMMIT
Ответ или решение
Для подключения к серверу MariaDB через OpenVPN на вашем виртуальном сервере с Ubuntu 24.04 и Plesk, необходимо следовать нескольким шагам, которые обеспечат правильную настройку сети и безопасный доступ к базе данных. Ваша проблема заключается в том, что MariaDB доступна только локально, и вы хотите, чтобы ваше Windows приложение могло подключаться к ней через туннель OpenVPN.
1. Основные шаги настройки OpenVPN
Ваша текущая конфигурация OpenVPN (vpnserver.conf) выглядит довольно стандартно для создания туннеля, однако нужно убедиться, что OpenVPN настроен правильно для вашего случая. Проверьте следующие моменты:
- Параметры сети OpenVPN: Убедитесь, что адресация VPN-сети не пересекается с вашей локальной сетью. Ваша настройка использует диапазон
10.8.1.0/24
, что обычно подходит. - Наличие маршрутов: Откройте файл конфигурации клиентского OpenVPN клиента и добавьте следующий маршрут, чтобы убедиться, что трафик на базу данных направляется через туннель.
route 10.8.1.0 255.255.255.0
2. Настройка MariaDB для доступа через интерфейс OpenVPN
MariaDB по умолчанию будет слушать только на localhost
(127.0.0.1). Для того, чтобы она принимала соединения по IP-адресу OpenVPN (например, 10.8.1.1), необходимо изменить конфигурацию MariaDB:
-
Откройте конфигурационный файл MariaDB:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
-
Измените директиву
bind-address
:bind-address = 0.0.0.0
Это позволит MariaDB слушать на всех интерфейсах, что включает и интерфейс OpenVPN.
-
Настройте пользователя доступа к базе данных:
Убедитесь, что у вашего пользователя существует разрешение на доступ с IP-адреса OpenVPN, а также правильные права доступа. Заменитеyour_user
иyour_password
на свои данные.CREATE USER 'your_user'@'10.8.1.%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'10.8.1.%'; FLUSH PRIVILEGES;
3. Настройка брандмауэра (UFW)
Ваша конфигурация UFW выглядит неплохо, но убедитесь, что вы разрешаете входящие соединения на порт 3306 для интерфейса OpenVPN:
sudo ufw allow from 10.8.1.0/24 to any port 3306
4. Проверка подключения
После всех настроек выполните следующие шаги, чтобы убедиться, что ваше приложение Windows сможет подключиться к MariaDB через OpenVPN:
-
Перезапустите службы:
sudo systemctl restart mariadb sudo systemctl restart openvpn
-
Подключите OpenVPN клиент на вашем Windows.
-
Попробуйте подключиться к базе данных с использованием IP-адреса OpenVPN (например, 10.8.1.1) и соответствующих учетных данных.
5. Дополнительные советы
- Диагностика: Используйте команду
telnet 10.8.1.1 3306
из командной строки Windows, чтобы проверить доступ к базе данных через VPN. Если соединение не устанавливается, проверьте настройки OpenVPN, UFW и вашу конфигурацию MariaDB. - Логи: Всегда проверяйте логи OpenVPN и MariaDB на предмет ошибок, если что-то не работает.
Следуя этому подробному руководству, вы сможете правильно настроить доступ к MariaDB через OpenVPN, обеспечивая безопасное и защищенное подключение к вашей базе данных. Если у вас возникнут дополнительные вопросы или трудности, не стесняйтесь обращаться за дальнейшей помощью.