问题背景:
1、应用服务器:172.16.100.21文章源自玩技e族-https://www.playezu.com/744980.html
2、数据库服务器:172.16.100.22 (sqlServer 1433)文章源自玩技e族-https://www.playezu.com/744980.html
如图所示文章源自玩技e族-https://www.playezu.com/744980.html
文章源自玩技e族-https://www.playezu.com/744980.html
(图片可点击放大查看)文章源自玩技e族-https://www.playezu.com/744980.html
一、问题现象文章源自玩技e族-https://www.playezu.com/744980.html
开发工程师反馈:文章源自玩技e族-https://www.playezu.com/744980.html
1、办公区的PC telnet 172.16.100.22 1433 sqlServer端口是通的,用Navicat可以连上数据库 文章源自玩技e族-https://www.playezu.com/744980.html
2、但是非常奇怪的是:应用服务器172.16.100.21 上telnet 172.16.100.22 1433却不通,应用服务器联调不成功文章源自玩技e族-https://www.playezu.com/744980.html
文章源自玩技e族-https://www.playezu.com/744980.html
(图片可点击放大查看)
二、问题确认与分析
我这边检查发现
1、应用服务器和数据库服务器使用的同一云服务器安全组规则
如下图所示
(图片可点击放大查看)
可以看到安全组规则对外是(0.0.0.0/0)全部开放1433端口
2、我尝试用运维区的服务器也进行端口探测
发现172.16.100.22 1433 sqlServer端口是通的
(图片可点击放大查看)
所以非常纳闷 这时以为问题应该出在数据库服务器上面,是不是数据库服务器自身做了啥限制
检查过172.16.100.22的操作系统防火墙配置,没有做任何限制,防火墙直接关闭的
也询问过开发工程师,数据库层面有没有限制,也说没有做限制
这也太奇怪了吧
三、继续排查
检查数据库服务器上的安全防护软件(HIDS)也没有做限制
与该开发工程师沟通过,联调阶段数据库服务器可以重启,也进行过重启,问题依旧 (虽然重启能解决80%的问题)
问题陷入僵局
四、跳出思维定势,问题瞬间解决
在沟通(battle)的过程中,突然开发工程师的一句话提醒了我:应用服务器对外访问有没有限制?对外?下行规则都放开外部访问的,他说的对外访问是指上行规则?出方向?
是啊,问题有没有可能出在源服务器上,而不应该出在目的服务器上,得转换一下方向
这时我打算去检查一下应用服务器自身操作系统防火墙的出站规则,突然在安全组上行规则(出方向)看到这个小细节
(图片可点击放大查看)
系统判定了一些高危端口,默认将其加入了安全组并禁止。 对于 Windows 云服务器,系统默认限制了几个“上行安全组”规则:
协议 TCP,端口3389,1433,445,135,139;
协议 UDP,端口1434,445,135,137,138。
Windows 云服务器向外发起 远程桌面连接,您需要在安全组中放行规则 tcp 上行 3389 端口;
Windows 云服务器向外发起 sql Server 连接,您需要在安全组中放行规则 tcp 上行 1433 端口。
瞬间知道原因了 这时加了一条规则解决问题
(图片可点击放大查看)
开发反馈应用服务器:172.16.100.21可以正常连上172.16.100.22 (sqlServer 1433)数据库,问题解决
五、