我设置了一个运行 SQL Server 的 RDS 实例,配置为“可公开访问”。安全组允许服务器本身和第二个(不同的)特定安全组在 1433 上进行入站连接。
我在第二个安全组中运行了两台服务器,它们位于同一子网中。一台运行 Windows Server 2016,另一台运行 Ubuntu。从 Ubuntu 机器上,我可以毫无问题地连接到数据库服务器(telnet、nmap、nc 和 sqsh 都可以正常使用)。Windows 服务器无法连接——它报告超时。
在 Windows 服务器上安装了 nmap,它报告端口被“过滤”,原因是“无响应”。
我禁用了 Windows 防火墙,但仍然发生同样的事情。
有人能建议我如何着手找出这里出了什么问题吗?
答案1
我已经解决了这个问题。将 RDS 实例设置为“可公开访问”是错误的——我以为这意味着“在网络上监听”,但应该意识到这不可能是正确的。
当 RDS 实例“可公开访问”时,它会导致 Windows 将 DNS 名称解析为外部的(公共)IP 地址,这会导致路由混乱。通过禁用公共可访问性,DNS 条目将解析为私有 IP,一切正常。