今天迁移服务器之后原本正常运行的程序报"Temporary failure in name resolution"错误,意思是域名解析失败,但是DNS什么的设置没有问题,其实是主机名解析失败。
常见解决方案
常见解决方案是在hosts里配置一下即可:
1.打开/etc/hosts
#vi /etc/hosts
2.增加主机名映射
按 i 键进入编辑模式,在 文件最后增加:
127.0.0.1 hostname(主机名)
3.保存退出,即可恢复正常
#wq!
其他参考方案
检查网络连接
-
检查物理连接:如果你使用的是有线网络,确保网线已正确插入路由器和电脑的网卡接口。如果是无线网络,确认WiFi已开启并成功连接到正确的网络。
-
重启路由器:关闭路由器电源,等待至少两分钟后再重新开启,等待路由器完全启动后再检查网络连接。
-
检查其他设备连接:尝试在其他设备上访问互联网,如果其他设备也无法连接,可能是网络服务提供商的问题。
检查DNS配置
-
检查
/etc/resolv.conf
文件:在Linux系统中,使用文本编辑器打开/etc/resolv.conf
文件,确保其中至少包含一个有效的nameserver
,如Google的公共DNS服务器8.8.8.8
和8.8.4.4
。如果文件中没有有效的DNS服务器,添加一个或多个可靠的DNS服务器。 -
检查文件权限:如果
/etc/resolv.conf
文件包含有效的DNS服务器但错误仍然存在,可能是文件权限设置不当。使用命令sudo chown root:root /etc/resolv.conf
将文件的所有者设置为root用户,并使用命令sudo chmod 644 /etc/resolv.conf
确保所有用户都可以读取该文件。 -
重启DNS解析服务:修改完
/etc/resolv.conf
文件后,运行命令sudo systemctl restart systemd-resolved.service
重启DNS解析服务,然后通过ping
命令测试新的DNS服务器是否正常工作。
检查防火墙设置
-
检查UFW防火墙:如果你使用的是UFW防火墙,运行命令
sudo ufw allow 43/tcp
和sudo ufw allow 53/tcp
打开用于whois查询和域名解析的端口,然后运行sudo ufw reload
重新加载UFW规则。 -
检查firewalld防火墙:对于使用firewalld防火墙的Linux发行版,运行命令
sudo firewall-cmd --add-port=43/tcp --permanent
和sudo firewall-cmd --add-port=53/tcp --permanent
打开相应的端口,然后运行sudo firewall-cmd --reload
重新加载防火墙规则。
检查安全软件
-
暂时禁用安全软件:某些安全软件如杀毒软件、防火墙或VPN可能会干扰DNS解析。暂时禁用这些软件,查看是否能解决问题。如果禁用后问题解决,可以调整软件的设置以允许正常的DNS功能。
清除DNS缓存
-
Windows系统:打开命令提示符,输入
ipconfig /flushdns
命令来清除DNS缓存。 -
Mac系统:打开终端,输入
sudo dscacheutil -flushcache
命令来清除DNS缓存。 -
Linux系统:对于大多数Linux发行版,可以使用命令
systemd-resolve --flush-caches
来清除DNS缓存。
释放和更新IP地址
-
Windows系统:打开命令提示符,输入
ipconfig /release && ipconfig /renew
命令来释放并更新IP地址。 -
Mac系统:打开终端,输入
sudo ifconfig en0 release && sudo ifconfig en0 renew
命令来释放并更新IP地址。 -
Linux系统:打开终端,输入
sudo dhclient -r eth0 && sudo dhclient eth0
命令来释放并更新IP地址。
检查TCP/IP设置
-
Windows系统:通过“网络状态”工具检查网络连接属性,确保IP分配设置为“自动”(DHCP),并检查DNS服务器地址是否正确。
-
Linux系统:在“有线设置”中检查IPv4设置,确保IP分配和DNS设置为“自动(DHCP)”,并应用新的设置。
检查网站本身
-
使用
ping
命令:如果问题出现在访问特定网站时,使用ping
命令检查该网站是否正常响应。如果ping
命令没有响应,可能是网站服务器端的问题。