Вопрос или проблема
Я подключаюсь из 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:
Ответ или решение
Теория
Подключение к Microsoft SQL Server с Linux возможно с использованием драйвера ODBC от FreeTDS. Однако, для успешного соединения необходимо убедиться, что правильно настроены сетевые параметры и доступы. Порт 1433, используемый для связи с SQL Server, должен быть открыт и доступен для подключения из вашей сети. Ваше текущее заключение о неполном подключении связано с блокировкой запроса либо на стороне брандмауэра, либо с некорректной сетевой конфигурацией.
Пример
В предоставленных вами выводах из nmap
и ipconfig
показано, что хост 192.168.1.134 недоступен через стандартные сетевые запросы. Тем не менее, во втором случае nmap -Pn
подтверждает, что хост активен, но все порты находятся в состоянии фильтрации, что указывает на то, что брандмауэр или другое сетевое оборудование может препятствовать соединению.
Проблема может также состоять в неправильно настроенной брандмауэрной политике, где, несмотря на настройки в COMODO Firewall, запросы с Linux могут неправильно интерпретироваться и отклоняться.
Применение
-
Проверка настроек SQL Server:
- Убедитесь, что SQL Server настроен слушать порт 1433. Это можно сделать через SQL Server Configuration Manager, проверив настройки TCP/IP.
- Подтвердите, что SQL Server работает и служба запущена.
-
Настройки брандмауэра:
- Проверьте еще раз правила COMODO Firewall и убедитесь, что правила разрешают входящие TCP-соединения на порт 1433 от вашего IP или сети.
- Попробуйте временно отключить брандмауэр для проверки, улучшится ли соединение.
-
Сетевая диагностика:
- Используйте команды
traceroute
(Linux) иtracert
(Windows), чтобы понять, где именно теряется соединение. - На Linux проверьте, виден ли SQL Server с помощью
telnet
илиnc
на порт 1433:telnet 192.168.1.134 1433
.
- Используйте команды
-
Проверка конфигурации FreeTDS и ODBC:
- Убедитесь, что файл конфигурации FreeTDS указан правильно, включая имя сервера, порт и тип базы данных. Пример конфигурации
freetds.conf
:[NAME] host = 192.168.1.134 port = 1433 tds version = 7.3
- Убедитесь, что файл конфигурации FreeTDS указан правильно, включая имя сервера, порт и тип базы данных. Пример конфигурации
-
Использование утилит для диагностики:
- Запустите
tsql
— утилиту из пакета FreeTDS для проверки подключения.
- Запустите
Следуя изложенным схематичным проверкам и корректировкам конфигураций, вы сможете диагностировать и решить проблему подключения с Linux к SQL Server на Windows.