Member 11793729 Ответов: 2

Почему удаленное подключение MS SQL прекрасно работает с той же интернет-сетью (wifi), но не при изменении сети для клиентской машины.


Мое заявление VB.NET потребности пользователей, чтобы удаленно подключиться к базе данных SQL. Удаленное соединение отлично работает, когда оба компьютера находятся в одной сети (Wi-Fi), но не может подключиться к серверу, когда интернет-сеть изменяется для пользовательского компьютера. Конфигурация SQL, настройки TCP/IP, брандмауэр сделаны. Обратите внимание, что соединение устанавливается с IP - адресом при использовании той же сети Wi-Fi. Что может быть упущено ?

Что я уже пробовал:

Конфигурация SQL, настройки TCP/IP, брандмауэр сделаны.

Richard MacCutchan

Проверьте подключение, IP-адреса, порты и т. д.

2 Ответов

Рейтинг:
1

OriginalGriff

На первый взгляд, вы не меняете IP - адрес на "публичный" IP: если он начинается с 192.168.nnn.nnn, то это локальный адрес, который никогда не покидает Вашу локальную сеть-Интернет-IP-адреса никогда не находятся в этом диапазоне.
Таким образом, если БД размещена в вашей сети, то "192.168.0.10" будет обращаться к вашему серверу с вашего dev PC, но может быть принтером или планшетом на клиентах.


Member 11793729

Спасибо за ответ, но я получил свой публичный IP - адрес из стороннего интернета и попробовал. Я не работал. Я использую SQL express & also developer editions. Они имеют к этому какое-то отношение ?

OriginalGriff

Старайтесь не использовать как можно меньше слов - мы получаем только то, что вы печатаете для работы, поэтому мы не получаем никакого контекста за пределами этого.
Таким образом, мы не знаем, что означает "я получил свой публичный IP-адрес из стороннего интернета и попытался", и что произошло, когда "я не работал", остается для нас загадкой.
Попытайтесь точно объяснить, где находится сервер БД, где находится компьютер, который вы успешно протестировали, и где находится клиент. Расскажите нам строку подключения, которую вы использовали для каждого компьютера - цензурируйте пароли, пожалуйста, - и что произошло, когда вы это сделали. Любые сообщения об ошибках-это определенный бонус!

Member 11793729

Извините или опечатка и искренняя благодарность за вашу помощь. Я получил публичный IP-адрес своей SQL-машины с некоторых веб-сайтов (все они показывают одно и то же). Я тестировал с этим публичным IP, но уволил ошибку, сказав, что сервер не найден. Я использую нижеприведенную строку подключения :

Дим SQLConStr как String = "источник данных=" &амп; VarServer &ампер; "," &амп; VarIPSQLPort &ампер; ";начальный каталог= " &амп; VarSQLDB &ампер; ";сохранять сведения о безопасности=true;в идентификатор пользователя=" &амп; IPSQLUID &ампер; ";пароль=" &амп; IPSQLPSS &ампер; ";Комплексная безопасность=ложь;"

Переменная VarServer consist = IP-адрес + имя машины + имя экземпляра SQL

OriginalGriff

Ах. Вы сами принимаете гостей. ОК...
Во-первых, проверьте свое интернет-соединение: это статический или динамический IP-адрес? Если вы не знаете, то это, вероятно, динамический - обычно вам приходится доплачивать своему провайдеру за статический IP. Динамичность-это плохо: если ваше соединение не работает, нет никакой гарантии, что вы получите тот же IP-адрес, когда маршрутизатор восстановит соединение. Итак, отключение питания, аппаратный сбой, что угодно - и ваши клиенты навсегда отключены.
Во-вторых, вы действительно уверены, что хотите это сделать? Это опасно - вы открываете свой сервер БД для всех в интернете, кто хочет "попробовать". Убедитесь абсолютно, что удаленный доступ-это то, что вам нужно, и измените регистрационную информацию для учетной записи администратора(ов), прежде чем что-либо делать: если вы оставите учетную запись по умолчанию "sa" живой, то вы заслуживаете всего, что получите ...

Теперь проверьте, включен ли "удаленный доступ" на вашем SQL server: если вы используете SQL Express, то, вероятно, это не так: https://blogs.msdn.microsoft.com/sqlexpress/2005/05/05/how-to-configure-express-to-accept-remote-connections/

Member 11793729

Ваш комментарий : "Вы уверены, что хотите это сделать? Это опасно" - данные строки подключения не передаются ни одному пользователю и сохраняются в зашифрованном виде. Файл приложения собирается при необходимости. Как ты думаешь, это небезопасно ? Что такое безопасная альтернатива удаленному подключению? Есть ограниченные, но разрозненные пользователи, которые будут подключаться из разных мест.

OriginalGriff

Вы думаете, что вам нужно сказать кому-то, кто вы есть, чтобы вас нашли? Или есть случайные шашки, которые найдут ваш сервер и попытаются увидеть, что у вас есть на нем? Помните, что это, вероятно, не только одна БД, которую вы размещаете на этом экземпляре SQL, поэтому все данные находятся под угрозой. Затем идет грубое форсирование паролей, эксплойты, неизвестные в настоящее время лазейки безопасности, удаленные обновления безопасности, DDoS-атаки ...
Это не очень хорошая идея, на самом деле это не так - особенно если вы не знаете, что именно вы делаете!

Я бы предложил либо VPN (хорошая идея, не так уж много работы), либо приложение WCF "man-in-the-middle" для контроля доступа. Прямой доступ обычно считается плохой идеей.

Richard Deeming

Как быстро мы забываем! :)
SQL Slammer - Википедия[^]

Рейтинг:
0

Wendelius

Несколько вещей, которые нужно проверить с помощью Configuration Manager
- По возможности не используйте динамические порты: Настройка сервера для прослушивания определенного TCP - порта- SQL Server | Microsoft Docs[^]
- Убедитесь, что порт 1433 разрешен всеми брандмауэрами между конечными точками
- Если вы используете именованный экземпляр, то могут потребоваться динамические порты, в зависимости от других экземпляров, см. Настройка Брандмауэра Windows для разрешения доступа к SQL Server - SQL Server | Microsoft Docs[^] , особенно Секция динамических портов[^]


Member 11793729

Все они прекрасно работают с одной и той же сетью, используя IP-адрес, порт 1433, экземпляр имени и т. д. То же самое не работает, как только интернет - сеть изменяется для клиентской машины.

Wendelius

Это не только брандмауэр на вашей стороне, но и на стороне клиента и возможные брандмауэры между ними. Все они должны разрешать сетевой трафик на выбранные IP-адреса и порты.

Просто чтобы убедиться, что IP-адрес правильный, Вы пробовали пинговать базу данных со стороны клиента? Работает ли пинг?

Member 11793729

Спасибо за помощь. Вы правы, я попробовал ping, и он не работает, но работает для той же сети ( я думаю, что это использует IP-адрес локальной сети). Возможно, проблема с публичным IP-адресом.