Использование переадресации портов для соединений с базой данных имеет смысл только в экстремальных условиях.В целом это не очень хорошая идея, потому что:
изменение настроек брандмауэра ОС / пересылки пакетов обычно требует привилегий системного администратора, которые могут быть недоступны пользователю / установщику клиентского приложения..
Настройка правил переадресации портов зависит от системы, и именно этого в первую очередь пытаются избежать люди, написав свои клиенты, например, на Java.
Для правильной настройки правил переадресации портов требуется опыт работы в сети, выходящий далеко за пределы того, что обычно требуется для указания клиентского приложения на нужный сервер БД.Вы не должны зависеть от людей, имеющих такие знания под рукой.
добавляет слой косвенности, который не сразу виден, если только кто-то не взглянет на настройки ОС.Журналы клиента и информация об отладке будут все указывать на процесс базы данных, который на самом деле не существует, добавляя еще больше путаницы к потенциальной будущей проблеме.
это добавляет еще одну точку, где что-то может сломаться- что, если обновление ОС изменяет способ обработки правил переадресации портов?Что если новое приложение брандмауэра решит заблокировать перенаправленные пакеты, несмотря на существование правила пересылки на уровне ОС?Ваше клиентское приложение просто сообщит о невозможности подключения к серверу БД, и вы почесываете голову, пытаясь выяснить, в чем дело.
оно может потенциально мешать другим приложениям,невидимым перенаправлением их портов. знаете ли вы настроенные порты сервера на всех ваших целевых системах?Что, если локальный пользователь также пытается использовать, например, SSH-туннелирование, а его почтовый клиент непреднамеренно пытается связаться с вашим сервером БД?
он плохо масштабируется вообще .Что если у вас есть несколько приложений, говорящих с несколькими серверами?
Я упоминал об этом раньше, но это заслуживает повторения: вы действительно хотите, чтобы ваши люди (или вы сами) прошли через это?журналы и файлы конфигурации от клиентов, которые утверждают, что подключаются к localhost:XXXX
?
Мне только когда-либо приходилось использовать переадресацию портов, как это один раз, когда мне приходилось туннелироватьчерез соединение SSH для доступа к серверу БД, который в противном случае был недоступен из-за ограничений безопасности.Это была среда разработки, и я никогда не использовал бы что-то подобное в производстве - по крайней мере, без большой суеты с людьми, заставляющими меня прыгать через обручи вот так.
Если вы хотите, чтобы все ваши клиентыприложения для подключения к одному серверу БД, то это проблема конфигурации.Рассматривайте это так, как если бы вы хотели, чтобы все ваши приложения использовали одну и ту же цветовую тему или одну и ту же разметку окна:
пусть они разбирают общий файл конфигурации, используя общий класс Java для совместного использованиянастройки БД.
позволяют им читать одну и ту же переменную окружения - хотя переменные окружения в некоторых системах, как правило, немного привередливы.Лично я бы держался подальше от этой альтернативы - у нее есть все недостатки решения для переадресации портов, за исключением того, что ваше клиентское приложение будет знать, с каким сервером БД оно действительно будет разговаривать.
Запустите их с помощью одного сценария с опцией, связанной с общей БД.
используйте централизованную инфраструктуру конфигурации для распределения правильной конфигурации среди всех клиентов - хотя тогда вам необходимо будет установитьсервер конфигурации: -)
Не не используйте неясные и хрупкие обходные пути.
Удобный совет:
Недобавьте больше сложности своей жизни, она уже достаточно сложна.