Linux 网络故障排查:解决因证书和 DNS 导致的无法上网问题
问题现象
Linux 服务器上无法访问外网,使用curl测试百度时出现域名解析失败的错误。
[root@test mnt]# curl -i https://www.baidu.com/curl:(6)Could not resolve host: www.baidu.com解决方案一:安装代理证书
当网络流量需要通过企业代理(如 Zscaler)时,Linux 系统需要安装相应的根证书才能建立 HTTPS 连接。
1. 下载证书文件
从指定链接下载证书导入工具包:
http://www.global.nec.co.jp/global-proxy/certImportTool.zip解压后,可以在工具包中找到根证书文件ZscalerRootCertificate.crt。
2. 复制证书到系统信任库
将证书文件复制到系统 CA 信任存储的锚点目录。请注意,具体的目录路径和命令可能因 Linux 发行版而异,请参考您所用发行版的官方手册。
# cp ZscalerRootCertificate.crt /usr/share/pki/ca-trust-source/anchors3. 更新 CA 信任数据库
执行以下命令,从锚点目录提取证书并更新系统信任库:
# update-ca-trust extract如果执行上述命令时出现类似update-ca-trust:Warning:The dynamic CA configuration feature is in the disabled state的警告信息,请先启用动态 CA 配置功能,然后再次尝试更新:
# update-ca-trust enable# update-ca-trust extract完成以上步骤后,系统应能识别代理证书,从而建立安全的 HTTPS 连接。
解决方案二:配置 DNS 服务器
如果问题出在域名解析上,可以临时修改 DNS 配置。
修改/etc/resolv.conf(最直接,临时生效)
这是最传统的方法,修改后立即生效,但重启网络服务或重启机器后配置可能会被覆盖。
操作步骤:
编辑配置文件
vi/etc/resolv.conf添加或修改 nameserver 行
注释掉原有的nameserver行,添加你希望使用的 DNS 服务器地址。# 注释掉原有的,添加你想要的 DNSnameserver10.10.10.1 nameserver10.10.10.2保存生效
直接保存文件即可,DNS 配置会立即生效。
总结
本文记录了解决 Linux 服务器无法上网的两个常见原因及方法:
- 代理证书缺失:通过下载并安装代理根证书到系统信任库解决 HTTPS 连接问题。
- DNS 配置错误:通过临时修改
/etc/resolv.conf文件指定有效的 DNS 服务器解决域名解析问题。
建议先尝试方案二(配置DNS),如果问题依旧,再检查是否需要安装代理证书(方案一)。
