Есть ли возможность подключиться к серверу Azure SQL через VPN-клиент Azure P2S?
В частности, я хочу заставить клиентов, подключенных через VPN-клиент Azure S2P, использовать VPN для подключения к серверу БД. Одна из причин заключается в том, что IP-адреса клиентов часто меняются, и для предоставления доступа этим клиентам необходимо создать множество (временных) правил брандмауэра. Предположим, что есть несколько сотрудников с меняющимися IP-адресами по всему миру, которым требуется прямой доступ к БД.
Проблема в том, что при доступе к серверу базы данных Azure необходимо, чтобы соединение было выполнено с использованием полного доменного имени SQL-сервера, в противном случае, то есть только по IP-адресу, это не удастся. (См. [1])
Это текущая конфигурация:
Я вижу здесь три варианта:
Первое решение работает, когда я вручную помещаю правило в файл хостов клиента, чтобы преобразовать полное доменное имя SQL-сервера в его частный IP-адрес VN. Учитывая большое количество подключаемых клиентов, это не решение по понятным причинам. Есть ли способ распространить такое правило DNS через VPN Azure? Где мне нужно настроить разрешение имен (какой-то сервер DNS Azure?) И распространение (этого DNS-сервера через VPN)? Распространение DNS через VPN-клиент можно настроить в XML-файле конфигурации клиента, добавив туда DNS-сервер (см. [6]). Проблема в том, что у меня нет DNS-сервера для виртуальной сети в Azure, для этого должны использоваться частные DNS-зоны, но у них нет IP-адреса DNS.
Что касается второй идеи, мне удалось настроить ручной маршрут, как описано здесь: [2] для маршрутизации трафика к серверу SQL через VPN. Очевидно, что соединение осуществляется через VPN (как я вижу на Wireshark), но оно заканчивается на сервере SQL с общедоступным IP-адресом клиента, что в конечном итоге не имеет никакого значения. Похоже, что общедоступный IP-адрес инкапсулирован, пока соединение выполняется через VPN. Насколько я понял, невозможно направить весь или часть интернет-трафика через Azure VPN. Но есть ли способ настроить маршрутизацию таким образом, чтобы клиенты, подключенные к VPN-клиенту, получали какой-либо статический IP-адрес или диапазон, который можно отфильтровать на брандмауэре SQL-сервера? Придется ли мне настраивать какой-нибудь виртуальный сетевой NAT (как описано здесь [3]) Это будет довольно странная установка.
Также я попытался настроить частную зону DNS, чтобы переопределить публичную запись DNS для mydatabase.database.windows.net (а не privatelink.database.windows.net!) См. [4], [5]. Однако эти частные записи DNS никоим образом не распространяются через VPN-клиент.
[2] https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-p2s-advertise-custom-routes
[3] https://docs.microsoft.com/en-us/azure/virtual-network/nat-overview
[4] https://docs.microsoft.com/en-us/azure/azure-sql/database/dns-alias-overview
Самое простое решение - использовать конечные точки службы. Попросите ваших пользователей подключиться к VPN для маршрутизации трафика через виртуальную сеть, затем включите конечные точки служб на вашем сервере SQL, чтобы разрешить трафик только из этой виртуальной сети.