Подключение к Microsoft SQL Server на Windows с Linux [закрыт]

Вопрос или проблема

Я подключаюсь из Linux к Microsoft SQL Server на Windows, используя драйвер FreeTDS ODBC.

Подключение не удается, поэтому я пытаюсь выяснить проблему.

Я запустил nmap:

igor@WaylandGnome ~/wx_copy $ nmap -p 1433 192.168.1.134
Starting Nmap 7.94 ( https://nmap.org ) at 2025-01-12 15:16 CST
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.13 seconds

igor@WaylandGnome ~/wx_copy $ nmap -Pn 1433 192.168.1.134
Starting Nmap 7.94 ( https://nmap.org ) at 2025-01-12 17:07 CST
Nmap scan report for 1433 (0.0.5.153)
Host is up.
All 1000 scanned ports on 1433 (0.0.5.153) are in ignored states.
Not shown: 1000 filtered tcp ports (no-response)

Nmap scan report for 192.168.1.134
Host is up.
All 1000 scanned ports on 192.168.1.134 are in ignored states.
Not shown: 1000 filtered tcp ports (no-response)

Nmap done: 2 IP addresses (2 hosts up) scanned in 401.77 seconds
igor@WaylandGnome ~/wx_copy $ 

(продолжение с Windows машины).

C:\> ipconfig
Windows IP Configuration
Ethernet adapter Ethernet 2:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix  . :
Ethernet adapter Bluetooth Network Connection:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix  . :
Wireless LAN adapter Local Area Connection* 3:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix  . :
Wireless LAN adapter Wi-Fi:
Connection-specific DNS Suffix  . : lan
IPv6 Address. . . . . . . . . . . : 2605:a601:a807:7400::5
IPv6 Address. . . . . . . . . . . : 2605:a601:a807:7400:a58f:50f6:292:e62d
Temporary IPv6 Address. . . . . . : 2605:a601:a807:7400:380e:71ac:246d:ff7b
Temporary IPv6 Address. . . . . . : 2605:a601:a807:7400:41dd:9e23:e919:cf26
Temporary IPv6 Address. . . . . . : 2605:a601:a807:7400:458b:94aa:f5b4:1d8b
Temporary IPv6 Address. . . . . . : 2605:a601:a807:7400:5d26:a53f:3b79:7611
Temporary IPv6 Address. . . . . . : 2605:a601:a807:7400:643a:108e:3e0e:4619
Temporary IPv6 Address. . . . . . : 2605:a601:a807:7400:9ca9:954b:70d4:b43b
Temporary IPv6 Address. . . . . . : 2605:a601:a807:7400:a500:dcaf:b56a:a9f3
Link-local IPv6 Address . . . . . : fe80::a58f:50f6:292:e62d%3
IPv4 Address. . . . . . . . . . . : 192.168.1.134
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : fe80::7258:a4ff:fe83:7bd0%3
                                   192.168.1.1

Порт 1433 открыт в брандмауэре COMODO:

image

Ответ или решение

Теория

Подключение к Microsoft SQL Server с Linux возможно с использованием драйвера ODBC от FreeTDS. Однако, для успешного соединения необходимо убедиться, что правильно настроены сетевые параметры и доступы. Порт 1433, используемый для связи с SQL Server, должен быть открыт и доступен для подключения из вашей сети. Ваше текущее заключение о неполном подключении связано с блокировкой запроса либо на стороне брандмауэра, либо с некорректной сетевой конфигурацией.

Пример

В предоставленных вами выводах из nmap и ipconfig показано, что хост 192.168.1.134 недоступен через стандартные сетевые запросы. Тем не менее, во втором случае nmap -Pn подтверждает, что хост активен, но все порты находятся в состоянии фильтрации, что указывает на то, что брандмауэр или другое сетевое оборудование может препятствовать соединению.

Проблема может также состоять в неправильно настроенной брандмауэрной политике, где, несмотря на настройки в COMODO Firewall, запросы с Linux могут неправильно интерпретироваться и отклоняться.

Применение

  1. Проверка настроек SQL Server:

    • Убедитесь, что SQL Server настроен слушать порт 1433. Это можно сделать через SQL Server Configuration Manager, проверив настройки TCP/IP.
    • Подтвердите, что SQL Server работает и служба запущена.
  2. Настройки брандмауэра:

    • Проверьте еще раз правила COMODO Firewall и убедитесь, что правила разрешают входящие TCP-соединения на порт 1433 от вашего IP или сети.
    • Попробуйте временно отключить брандмауэр для проверки, улучшится ли соединение.
  3. Сетевая диагностика:

    • Используйте команды traceroute (Linux) и tracert (Windows), чтобы понять, где именно теряется соединение.
    • На Linux проверьте, виден ли SQL Server с помощью telnet или nc на порт 1433: telnet 192.168.1.134 1433.
  4. Проверка конфигурации FreeTDS и ODBC:

    • Убедитесь, что файл конфигурации FreeTDS указан правильно, включая имя сервера, порт и тип базы данных. Пример конфигурации freetds.conf:
      [NAME]
      host = 192.168.1.134
      port = 1433
      tds version = 7.3
  5. Использование утилит для диагностики:

    • Запустите tsql — утилиту из пакета FreeTDS для проверки подключения.

Следуя изложенным схематичным проверкам и корректировкам конфигураций, вы сможете диагностировать и решить проблему подключения с Linux к SQL Server на Windows.

Оцените материал
Добавить комментарий

Капча загружается...