Fedora 36更新后localhost默认IPv6,Node.js连接MongoDB失败如何解决?
解决Fedora 36中localhost默认指向IPv6导致MongoDB连接失败的问题
方案一:让localhost优先解析为IPv4
无需修改/etc/hosts原有配置,通过调整系统地址解析优先级实现:
- 编辑
/etc/gai.conf文件,找到# precedence ::ffff:0:0/96 100行,去掉开头的注释符号#后保存退出。该配置会让IPv4的IPv6映射地址优先级高于原生IPv6地址,系统解析localhost时将优先返回127.0.0.1。 - 重启网络服务或直接重启系统,使配置生效。
方案二:将MongoDB绑定到IPv6地址
若不想修改系统解析规则,可让MongoDB同时监听IPv4和IPv6(或仅监听IPv6):
- 打开MongoDB配置文件,通常路径为
/etc/mongod.conf - 找到
net模块下的bindIp配置:- 要同时监听IPv4和IPv6,将
bindIp值改为127.0.0.1,::1 - 仅监听IPv6则改为
::1
修改后的配置段示例:
net: port: 27017 bindIp: 127.0.0.1,::1 - 要同时监听IPv4和IPv6,将
- 保存配置后重启MongoDB服务:
sudo systemctl restart mongod - 验证监听状态:执行
sudo ss -tulpn | grep mongod,若看到:::27017的记录则说明IPv6监听生效。
两种方案都无需修改代码中的连接字符串,即可解决连接失败问题。
内容的提问来源于stack exchange,提问作者Lance
相关产品推荐
相关产品推荐

