我正在尝试访问通过 IP NAT 映射公开的 SQL Server。所有端口均开放。我不知道 NAT 的详细信息(是否相关),因为那是公司其他地方隐藏在一堆繁文缛节中的内容。
这就是我的想法。当您尝试访问 SQL Server 的命名实例时,客户端会询问命名实例正在哪个端口上运行。如果我通过 RDP 进入 SQL Server,我可以使用netstat
找出该实例的端口并可以成功通过防火墙连接。但是,通过实例名称连接不起作用。我的猜测是,服务器在某个时刻使用其内部 IP 地址进行响应,并且客户端正在使用该地址。
有谁知道这是否属实以及是否有解决方法?
实例监听端口协议发现受SQL Server 浏览器服务。这使用 1434 上的 UDP。通过 UDP 1434 的 NAT 转发,您的客户端应该能够与 SQL Server 浏览器服务交互(ifSQL Server Browser 的 UDP 响应数据包可以返回客户端,big如果),但即使是成功的互动也会让你的客户陷入困境:既然它knowsSQL Server动态监听端口,它是如何到达的? NAT 必须动态转发 SQL Server 选择的端口,或者必须转发all ports.
我建议让 SQL Server 侦听每个配置的静态分配的端口。看如何配置 SQL Server 实例以侦听特定 TCP 端口或动态端口。让您的 NAT 转发that港口。然后在您的客户端中在连接字符串中显式使用此端口。不要使用标准端口 1433,因为我假设 NAT 之前是公共互联网,而 1433 会受到各种机器人和恶意集群的持续频繁扫描。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)