Назад | Перейти на главную страницу

Подключение к экземпляру SQL-сервера на виртуальной машине через сеть только для хоста

Я установил виртуальную машину разработки с Windows Web Server 2008 R2 и установлен SQL Server 2008 R2 Express на нем тоже. Я не устанавливал на него никаких инструментов SQL, потому что они у меня есть на хост-машине.

Виртуальная машина работает на VMWare Workstation 8.

ВМ есть 2 сетевых карты

Я не использую браузер SQL и подключаюсь к нему напрямую, используя машина \ экземпляр, порт название. Таким образом я могу подключиться к нему, даже если SQL не обнаруживается.

Я открыл сетевой порт SQL Engine на брандмауэре.

Факты

Я могу получить доступ к моему SQL, используя мостовой IP-адрес, но не IP-адрес только для хоста. Я проверил протоколы для SQL Express и включил TCP / IP и проверил вкладку IP-адресов, которая показывает 5 IP-адресов:

Это как-то объясняет, почему я не могу получить доступ к своему SQL через сеть только для хоста. Даже если я изменю эти настройки и изменю мостовой IP-адрес на IP-адрес только для хоста, я все равно не смогу получить доступ к своему SQL.

кажется, что сеть только для хоста не видна для SQL. Хотя работает.

Другой факт заключается в том, что если я пингую свою виртуальную машину со своего хоста, я получаю ответ в мостовой сети, но не только в одном хосте.

Вопрос

Я подозреваю, что это каким-то образом связано с сетевыми настройками виртуальной машины только для хоста. А может и нет. Отсюда этот вопрос. Вопрос конечно Как я могу настроить SQL-сервер на моей виртуальной машине, чтобы я мог получить к нему доступ через свой хост-компьютер и с локального хоста (потому что веб-приложение работает на одном компьютере)? Но я не хочу, чтобы SQL-сервер был доступен через мостовую сеть, чтобы никто другой не мог получить к нему доступ.

разрешение

Хорошо, мне удалось решить эту проблему, настроив виртуальную сеть и настроив SQL Server.

Конфигурация виртуальной сети

Конфигурация My Host-only была настроена на автоматическую, но при использовании VMWare к этой сети не применялся какой-либо шлюз, поэтому я добавил шлюз по умолчанию, чтобы он был таким же, как DNS (в моем случае это был 192.168.100.254).

Это позволило сети Windows распознавать сеть не как общедоступную, а как частную. Это означает, что определенные уровни безопасности применяются к нему по-разному.

Теперь я могу пинговать любую машину в одну или другую сторону (с хоста на гостевую виртуальную машину и наоборот). Оба пинга получили ответ, которого раньше не было, поскольку сеть была помечена как общедоступная.

Конфигурация SQL Server

Настройка протоколов для экземпляра SQL Express пошла и настроила параметры TCP / IP и на первой вкладке (Протокол) установите Слушайте все к Нет это означает, что мне нужно настроить отдельные IP-адреса на втором tba (IP-адресах), где я Включено оба IP-адреса localhost (v4 и v6), а также изменили IP-адрес v4, чтобы он отражал IP-адрес виртуальной сети только для хоста:

  • устанавливать Айпи адрес на сетевой адрес только для хоста
  • устанавливать Включено к да

Затем очистил все эти три IP-адреса TCP динамические порты и установите статический TCP порт к 1433 что я хочу использовать.

Вуаля, это работает

Теперь я вернулся к хосту и попытался подключить SSMS к моей виртуальной машине, используя сначала мостовой IP-адрес. Это не удается. Затем в качестве второй попытки я использовал IP-адрес только для хоста и смог подключиться к моему экземпляру SQL Server. Успех.

Это полностью заблокировало мой экземпляр SQL Server для локальной машины и моего хоста разработки.