AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 515154
Accepted
Malvineous
Malvineous
Asked: 2019-04-24 20:15:46 +0800 CST2019-04-24 20:15:46 +0800 CST 2019-04-24 20:15:46 +0800 CST

如何从 systemd-resolved 中删除错误的 DNS 服务器 IP?

  • 772

所以我正在测试一个路由器,它向我网络上的所有机器添加了一些随机 IPv6 地址,包括我的 DNS 服务器。不知何故,这些 IP 作为有效的 DNS 服务器被广播(不确定只有真正的路由器如何发送 IPv6 RA 数据包),但长话短说,现在我所有的机器都在向不存在的 IP 地址发送 DNS 查询。

如果我重新启动resolved,systemctl restart systemd-resolved那么resolvectl仍然会将这些虚假 IP 显示为有效的名称服务器。

它们已列在其中,/etc/resolv.conf因此如果我将它们删除并重新启动systemd-resolved,它只会重新添加虚假 IP。

如果我查看日志,journalctl --unit=systemd-resolved它会告诉我虚假 IP 正在“降级功能模式”下运行,但没有告诉我从哪里找到这些 IP。

它从哪里获取这些错误的 IP 地址?是否需要删除一些缓存文件以使其恢复为仅使用 IPv6 路由器广告提供的 IP?

ipv6 systemd-resolved
  • 3 3 个回答
  • 11591 Views

3 个回答

  • Voted
  1. thecarpy
    2019-04-24T22:27:44+08:002019-04-24T22:27:44+08:00

    您可以使用以下命令:sudo systemd-resolve --flush-caches或(后一个命令sudo resolvectl flush-caches取自手册页)systemd-resolve

    要验证刷新是否成功,请使用:sudo systemd-resolve --statistics

    样本输出:

    Cache
      Current Cache Size: 0
              Cache Hits: 101
            Cache Misses: 256
    

    还要注意systemd-resolve手册页中关于/etc/resolv.conf您在哪种模式下操作的部分?

    /etc/resolv.conf

    支持四种处理 /etc/resolv.conf 的模式(请参阅 resolv.conf(5)):

    systemd-resolved 维护 /run/systemd/resolve/stub-resolv.conf 文件以与传统 Linux 程序兼容。该文件可能从 /etc/resolv.conf 符号链接。此文件将 127.0.0.53 DNS 存根(见上文)列为唯一的 DNS 服务器。它还包含 systemd-resolved 正在使用的搜索域列表。搜索域列表始终保持最新。请注意,应用程序不应直接使用 /run/systemd/resolve/stub-resolv.conf,而只能通过 /etc/resolv.conf 中的符号链接使用。该文件可以从 /etc/resolv.conf 进行符号链接,以便使用正确的搜索域设置将绕过本地 DNS API 的所有本地客户端连接到 systemd-resolved。推荐使用这种操作模式。

    提供了一个静态文件 /usr/lib/systemd/resolv.conf,将 127.0.0.53 DNS 存根(见上文)列为唯一的 DNS 服务器。该文件可能从 /etc/resolv.conf 符号链接,以便将绕过本地 DNS API 的所有本地客户端连接到 systemd-resolved。此文件不包含任何搜索域。

    systemd-resolved 维护 /run/systemd/resolve/resolv.conf 文件以与传统 Linux 程序兼容。该文件可能从 /etc/resolv.conf 符号链接并始终保持最新,包含有关所有已知 DNS 服务器的信息。请注意文件格式的限制:它不知道每个接口 DNS 服务器的概念,因此只包含系统范围的 DNS 服务器定义。请注意,应用程序不应直接使用 /run/systemd/resolve/resolv.conf,而只能通过 /etc/resolv.conf 中的符号链接使用。如果使用这种操作模式,绕过任何本地 DNS API 的本地客户端也将绕过 systemd-resolved 并直接与已知的 DNS 服务器对话。

    或者,/etc/resolv.conf 可能由其他包管理,在这种情况下 systemd-resolved 将读取它以获取 DNS 配置数据。在这种操作模式下,systemd-resolved 是这个配置文件的消费者而不是提供者。

    请注意,根据 /etc/resolv.conf 是指向 /run/systemd/resolve/resolv.conf 的符号链接还是将 127.0.0.53 列为 DNS 服务器,会完全自动检测此文件的选定操作模式。

    • 3
  2. Best Answer
    Malvineous
    2020-12-29T23:18:29+08:002020-12-29T23:18:29+08:00

    经过一些调查和 systemd 错误报告,这就是我发现的。

    systemd-resolved 从 systemd-networkd 获取其所有 DNS 信息,因此专注于 systemd-networkd,因为修复流氓服务器将流入 systemd-resolved。

    数据存储在/var/run/systemd/netif/每个接口一个文件中。这是内部的,可能会发生变化,因此在您阅读本文时可能已经移动,但是我能够为流氓服务器 grep 这些文件并删除包含它的文件。当我重新启动 systemd-networkd 时,它会完整地重新创建已删除的文件。

    在我的情况下,它重新创建了仍然列出的恶意 DNS 服务器的文件,这意味着它没有被 systemd 缓存,而是仍在网络上的某个地方进行广告。

    因为它是一个 IPv6 地址,所以我安装了radvd(IPv6 路由器广告守护程序)并运行radvdump以显示到达机器上的所有 IPv6 RA。果然没过多久,一个列有恶意 DNS 服务器的服务器就到了,所以我可以追捕它并修复它。

    如果这不是您的选择,您可以使用一些 systemd-networkd 选项来解决此问题。这些必须放在配置网络的文件之一中 ( /etc/systemd/network/*.network)。

    # Don't use DNS servers from DHCP responses received via IPv4 (default is true)
    [DHCPv4]
    UseDNS=false
    
    # Don't use DNS servers from DHCPv6 responses received via IPv6 (default is true)
    [DHCPv6]
    UseDNS=false
    
    [IPv6AcceptRA]
    # Don't use DNS servers from IPv6 Router Advertisement (RA) messages (default is true)
    UseDNS=false
    # Don't start a DHCPv6 client when an RA message is received.
    DHCPv6Client=false
    
    • 3
  3. Binita Bharati
    2020-08-20T22:29:19+08:002020-08-20T22:29:19+08:00

    /etc/resolv.conf不能直接编辑。即使您这样做了,即使重新启动相应的服务,更改也不会生效。以下步骤适用于我/etc/resolv.conf从Ubuntu 20.04 desktop.

    1. sudo nano /etc/resolvconf/resolv.conf.d/head
    2. 在 nano 编辑器上进行所需的更改。
    3. 根据需要重新启动服务。就我而言,它是:systemctl stop resolvconf.service;systemctl start resolvconf.service
    • 0

相关问题

  • 如何使用“ip”命令禁用 IPv6?

  • IPv6 超级用户端口

  • 阐明 systemd-resolved 中处理 /etc/resolv.conf 的四种模式

  • solaris11 和 ipv6:没用

  • IPv6 套接字创建失败:协议不支持地址系列

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve