同区域AWS Web服务器与数据库服务器连接故障排查请求
跨VPC Web与数据库连接问题排查指南
先梳理下你的环境配置,方便针对性排查:
服务器配置
- Web服务器:Windows Server 2012 R2,IIS 8.5,托管基于.NET 3.5的VB.NET应用
- 数据库服务器:Oracle Linux 7.4,Oracle 12c Release 1,绑定弹性IP
- AWS环境:两台服务器分属同一根账号下的不同VPC
接下来按网络层→数据库层→Web应用层的顺序逐步排查:
一、网络连通性排查(跨VPC核心重点)
因为两台机器在不同VPC,网络打通是连接的前提:
- VPC互通配置检查:
确认是否已创建VPC对等连接或通过Transit Gateway实现跨VPC通信:- 检查对等连接状态是否为
active,双方VPC的路由表是否已添加对方VPC的CIDR段,目标指向对等连接/Transit Gateway
- 检查对等连接状态是否为
- 安全组规则验证:
- 数据库服务器安全组:入站规则需允许Web服务器所在VPC的CIDR段访问1521端口(Oracle默认端口),不要只加单个IP(除非Web服务器有固定弹性IP)
- Web服务器安全组:出站规则需允许访问1521端口到数据库服务器所在VPC的CIDR段或其弹性IP
- 网络ACL(NACL)检查:
NACL是无状态规则,需同时配置入站和出站:- 数据库VPC的NACL:入站允许1521端口来自Web VPC的流量,出站允许对应返回流量
- Web VPC的NACL:出站允许1521端口到数据库VPC的流量,入站允许对应返回流量
- 弹性IP与基础连通性测试:
在Web服务器上用PowerShell命令测试端口连通性:
或用telnet:Test-NetConnection 数据库弹性IP -Port 1521
如果测试失败,优先回到VPC互通、安全组/NACL的配置排查telnet 数据库弹性IP 1521
二、数据库端配置排查
网络通了之后,检查Oracle侧的服务配置:
- 监听状态与绑定地址:
在Oracle Linux服务器上执行命令查看监听状态:
确认监听绑定的是lsnrctl status0.0.0.0(允许所有IP访问)或数据库实例的私有IP/弹性IP,而不是仅localhost。可查看$ORACLE_HOME/network/admin/listener.ora文件,确保LISTENER段的HOST配置正确 - 数据库服务注册:
执行命令确认数据库服务已注册到监听:
输出中需能看到你的数据库服务名,否则监听无法转发连接请求lsnrctl services - Linux防火墙配置:
Oracle Linux 7.4默认使用firewalld,临时关闭测试:
如果关闭后能连接,说明需要在firewalld中添加1521端口的允许规则:sudo systemctl stop firewalldsudo firewall-cmd --add-port=1521/tcp --permanent sudo firewall-cmd --reload - 数据库用户权限:
确认数据库用户有跨网络连接的权限,且账号未锁定:-- 授予连接权限 GRANT CONNECT TO 你的用户名; -- 解锁账号(如果锁定) ALTER USER 你的用户名 ACCOUNT UNLOCK;
三、Web应用层配置排查
最后检查Web服务器和应用的配置:
- 连接字符串验证:
确认VB.NET应用的连接字符串格式正确,重点核对数据库地址(弹性IP)、端口、服务名:
可在数据库中查询服务名:Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=数据库弹性IP)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=你的数据库服务名)));User Id=你的用户名;Password=你的密码;SELECT service_name FROM v$services; - Windows防火墙配置:
检查Web服务器的Windows防火墙是否允许出站访问1521端口,可临时关闭防火墙测试连接 - IIS与.NET框架兼容性:
确认IIS的应用程序池配置为对应.NET 3.5版本,且应用池权限足够访问网络资源
内容的提问来源于stack exchange,提问作者pravinsham
相关产品推荐
相关产品推荐

