Postgres连接超时?Codex Neon防火墙白名单配置指南

2026-06-20阅读 0热度 0
防火墙

Neon连接超时这个坑,很多人踩过。Codex插件反复提示“connection timed out”,第一反应往往是检查插件装没装好、密码输没输对——但真正的原因往往很简单:网络链路在云侧就被拦住了。Neon作为无服务器PostgreSQL数据库,默认拒绝所有未显式授权的入站连接。本地防火墙、云白名单、SSL模式,这三样缺一个,就等着干着急吧。

确认Neon项目已启用公网访问并获取正确连接串

登录Neon控制台,进入目标Project,点开「Connection Details」,看「Connection string」字段。必须使用以postgresql://开头、包含@ep-xxx.us-east-1.aws.neon.tech结构的完整URL。千万别只复制host或database部分,踩过这个坑的人不少。

如果该区域显示的是「Private connection only」或「No public endpoint」,说明项目默认没开公网访问。点「Manage Endpoints」→「Create endpoint」,类型选「Read/Write」,区域尽量选离Codex环境最近的那个(比如US East、EU West),等状态变成「Active」后再复制新连接串。这个过程也就一两分钟。

关键前提在这里:Neon没有传统IP白名单机制,它只认Endpoint。你不能添加单个IP,只能通过Endpoint绑定的域名规则来放行流量。所以别指望靠加IP地址来解决。

在Codex中配置Neon连接参数——非默认值必须手动填

打开Codex,进入插件管理→PostgreSQL插件→新建连接。手动填写以下字段,别偷懒用自动填充:

Host:从Neon连接串里提取host部分,比如ep-cool-rain-123456.us-east-1.aws.neon.tech,不要带端口和路径。

Port:固定填5432,Neon不支持自定义端口。

Database:填连接串中/后面的数据库名(比如neondb),不是Project名。很多人会搞混这点。

Username:填连接串中://之后、:之前的部分,比如neondb_owner

Password:填连接串中:之后、@之前的密码。注意URL编码字符要原样保留,比如%40不能自作主张改成@

SSL Mode:必须设置为require。Neon强制要求SSL,设成disableprefer,认证成功后立马断连,你连错误日志都来不及看。

排查本地网络拦截点——三步定位法

第一步:在Codex所在机器的终端执行telnet ep-cool-rain-123456.us-east-1.aws.neon.tech 5432。如果返回Connection refused或直接超时,说明DNS解析失败或本地防火墙把出站包拦了。

第二步:执行nslookup ep-cool-rain-123456.us-east-1.aws.neon.tech,确认能解析出IP(通常是AWS ELB的地址)。如果这一步都拿不到,那就是DNS的问题。

第三步:nslookup成功了但telnet还是失败,那基本就是本地防火墙搞的鬼。macOS用sudo pfctl -sr查规则,Windows用netsh advfirewall firewall show rule name=all然后筛5432端口,Linux运行sudo ufw status。发现相关规则拦截的话,临时禁用测试一下(sudo ufw disable),确认连通后再加精确放行规则。

还有一个坑必须提醒:某些企业网络的出口网关会拦截非HTTP/HTTPS的TLS流量。即使telnet通了,Codex也可能卡在SSL握手阶段。这时候得联系IT部门开放ep-*.aws.neon.tech的出站TLS 1.2+流量。

验证SSL证书与连接串完整性——给有经验的朋友

方法一:用OpenSSL手动验一把SSL握手是否可达:
openssl s_client -connect ep-cool-rain-123456.us-east-1.aws.neon.tech:5432 -servername ep-cool-rain-123456.us-east-1.aws.neon.tech

如果返回Verify return code: 0 (ok)并且刷出一堆证书信息,说明SSL层没问题。如果卡在CONNECTED(00000003)没后续,那就是网络层或者TLS版本不兼容——大概率是用旧版OpenSSL或者系统禁用了TLS 1.2。

方法二:直接把Neon连接串贴进psql命令测试:
psql "postgresql://neondb_owner:xxx@ep-cool-rain-123456.us-east-1.aws.neon.tech:5432/neondb?sslmode=require"

这步能绕过Codex插件层,直接验证底层网络。如果能成功进入psql交互界面,那问题一定出在Codex插件配置上——再回头检查一遍连接参数吧。

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策