我目前在 Debian 服务器上遇到一个问题:
- 该
ping
命令(以及我的所有应用程序)无法解析主机名
但
- 我可以使用该命令成功解析主机名
systemd-resolve
。
以下是 的输出systemd-resolve
:
my_server@my_user:~$ systemd-resolve google.com
google.com: 216.58.206.46 -- link: eth0
-- Information acquired via protocol DNS in 42.6ms.
-- Data is authenticated: no
但是,当我尝试ping
主机名时,出现以下错误:
my_server@my_user:~$ ping -c 4 google.com
ping: google.com: Temporary failure in name resolution
特别令人费解的是,服务器运行几天后才出现这个问题,重启后问题消失。
我检查了我的 DNS 配置,中的 DNS 服务器/etc/systemd/resolved.conf
似乎配置正确。我还使用 清除了 DNS 缓存sudo systemd-resolve --flush-caches
。
systemd-resolve
我不确定为什么使用 DNS 解析成功和使用命令失败之间存在差异ping
。
有人能解释为什么会发生此问题以及如何解决它吗?
答案1
我引用如下 接受的答案 来自 Stack Overflow 帖子 Linux 命令行错误消息:名称解析暂时失败。这个答案获得了非常多的赞同。
我遇到了完全相同的问题,但我用另一种方法解决了它。
使用 Ubuntu 18.04,首先禁用
systemd-resolved
服务。
sudo systemctl disable systemd-resolved.service
停止服务
sudo systemctl stop systemd-resolved.service
/run/systemd/resolve/stub-resolv.conf
然后 ,删除/etc/resolv.conf
sudo rm /etc/resolv.conf
添加手动创建
resolv.conf
的/etc/
sudo vim /etc/resolv.conf
在那里添加您喜欢的 DNS 服务器
nameserver 208.67.222.222
我已经测试成功。
答案2
我的 Debian 服务器网络不一致的根本原因可以追溯到防火墙设置,特别是简易防火墙 (UFW),可能与 fail2ban 和 suricata 交互。即使卸载 fail2ban 和 suricata,服务器的网络仍无法正常运行,即使重新启动后仍会继续存在。
挑战在于问题的微妙性。尽管禁用 ufw 似乎是显而易见的一步,但令人费解的是,除非重新启动服务器,否则它不会立即产生效果。
最终解决问题的办法包括以下一系列操作:
- 卸载fail2ban
- 卸载了 suricata
- 已禁用 ufw (
sudo ufw disable
) - 重新启动服务器(重要的)
- 重置 ufw (
sudo ufw reset
) - 已启用 ufw (
sudo ufw enable
) - 重新创建防火墙规则
此顺序确保了服务器网络状态的一致性。我仍然乐观地认为此解决方案将持续有效,但如果问题再次出现,我将更新此答案。