Debian 10 上的 DNS 问题

Debian 10 上的 DNS 问题

我目前在 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 似乎是显而易见的一步,但令人费解的是,除非重新启动服务器,否则它不会立即产生效果。

最终解决问题的办法包括以下一系列操作:

  1. 卸载fail2ban
  2. 卸载了 suricata
  3. 已禁用 ufw ( sudo ufw disable)
  4. 重新启动服务器(重要的
  5. 重置 ufw ( sudo ufw reset)
  6. 已启用 ufw ( sudo ufw enable)
  7. 重新创建防火墙规则

此顺序确保了服务器网络状态的一致性。我仍然乐观地认为此解决方案将持续有效,但如果问题再次出现,我将更新此答案。

相关内容