AWS托管Active Directory连接Node.js应用报ETIMEDOUT错误如何解决
问题排查与解决方案
你遇到的ETIMEDOUT端口389报错属于TCP网络连接超时,按优先级依次排查以下配置即可定位问题:
1. 安全组规则排查(最高概率)
- 先确认AWS Managed Microsoft AD对应的安全组入站规则,是否允许你的Node.js应用所在实例的IP访问TCP 389端口(LDAP)、TCP 636端口(LDAPS),如果是跨VPC的场景需要先打通VPC对等连接再放通对应IP段
- 再确认Node.js应用所在实例的出站规则,是否允许访问AD实例的389/636端口,默认出站全通的场景可以跳过这步
- 注意:报错中显示的目标地址72.13.4.97为公网IP,AWS托管AD默认不开启公网访问,不要直接用公网IP连接,必须改用AD的内网VPC IP,否则必然出现连接超时
2. Windows实例配置排查
- 如果你是通过这台加域的Windows EC2做代理连接AD,需要确认Windows Defender防火墙已经放通389端口的入站/出站访问,直接在防火墙规则中新增开放TCP 389端口的规则即可
- 先验证网络连通性再排查应用配置,你可以在应用服务器上用以下命令测试到AD的端口连通性:
# Linux应用服务器测试命令 telnet <AD内网IP> 389 # Windows应用服务器测试命令 Test-NetConnection <AD内网IP> -Port 389
3. 应用配置修正
- 确认Node.js应用里填写的AD地址是AWS托管AD的内网DNS名或者内网IP,禁止使用公网IP
- 生产环境不建议开启AD公网访问,所有访问请求都走VPC内网传输即可
内容的提问来源于stack exchange,提问作者vamsi Krishna
相关产品推荐
相关产品推荐

