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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1543830
Accepted
user149408
user149408
Asked: 2025-03-17 05:41:52 +0800 CST2025-03-17 05:41:52 +0800 CST 2025-03-17 05:41:52 +0800 CST

Ubuntu 24.04 不使用 OpenVPN 推送的 DNS 服务器

  • 772

我有两个 Ubuntu 24.04 系统,均通过 OpenVPN 连接到远程站点。OpenVPN 服务器配置为在远程站点推送自己的 DNS,并可通过 VPN 访问,并为远程端系统提供 RR。

其中一个客户端是 GUI 桌面系统,通过网络管理器配置了 OpenVPN。在此系统上,远程网络上的系统的 FQDN 解析毫无问题。

另一台服务器没有 GUI,我使用手动生成的配置文件设置了 OpenVPN。当我连接第二个客户端时,远程网络上的名称无法解析。我可以 ping 远程网络上的 IP 地址,nslookup在指示使用 VPN 上的 DNS 服务器后,我可以运行并查找私有 FQDN nslookup,但常规名称解析(例如按名称 ping 系统时)不起作用。

仅控制台系统上的配置文件:

client
remote '<PEER>'
ca '/etc/ssl/certs/chain_cert.pem'
cert '/etc/ssl/certs/<FQDN>_cert.pem'
key '/etc/ssl/private/<FQDN>_key.pem'
data-ciphers [REDACTED]
cipher [REDACTED]
auth [REDACTED]
dev tun
proto udp
verify-x509-name '<PEER>' name
tls-auth '/etc/openvpn/ssl/statickey.pem' 1
nobind
auth-nocache
script-security 2
persist-key
persist-tun
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

此手动配置适用于旧版 Debian,但不适用于 Ubuntu 24.04。

当我连接第二个客户端时,远程网络上的名称无法解析(resolvectl query给出Name '<FQDN>' not found),而在 GUI 客户端上一切正常。

resolvectl status在 GUI 客户端上给出以下内容:

Global
         Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub

Link 2 (enp0s25)
    Current Scopes: none
         Protocols: -DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 3 (wlo1)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: (local DNS server)
       DNS Servers: (local DNS server)
        DNS Domain: local

Link 4 (virbr0)
    Current Scopes: none
         Protocols: -DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 5 (anbox0)
    Current Scopes: none
         Protocols: -DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 7 (tun0)
    Current Scopes: DNS
         Protocols: -DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: (remote DNS server)
       DNS Servers: (remote DNS server)
        DNS Domain: (private domains)

在仅限控制台的系统上:

Global
         Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub

Link 2 (eth0)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: (local DNS server)
       DNS Servers: (remote DNS server) (local DNS server)
        DNS Domain: (private domains)

Link 3 (wlan0)
    Current Scopes: none
         Protocols: -DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 4 (tun0)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: (remote DNS server)
       DNS Servers: (remote DNS server)

我在 ServerFault 上找到了一个答案,它建议使用nmcli,但该工具是的一部分network-manager,而该系统上未安装。

怎么回事?

dns
  • 1 1 个回答
  • 49 Views

1 个回答

  • Voted
  1. Best Answer
    mpboden
    2025-03-17T06:36:33+08:002025-03-17T06:36:33+08:00

    您的 OpenVPN 配置文件包含以下两行:

    up /etc/openvpn/update-resolv-conf
    down /etc/openvpn/update-resolv-conf
    

    这些实际上引用了 使用的脚本resolvconf,但默认情况下此应用程序未安装在 Ubuntu 24.04 Server 上。因此,您需要安装包含正确脚本的其他软件包。之后,您需要更新配置以引用每次启动或停止 VPN 时调用的适当脚本。

    运行以下命令来安装正确的脚本:

    sudo apt install openvpn-systemd-resolved
    

    然后用以下几行更新你的 OpenVPN 配置文件,替换原来的两行:

    up /etc/openvpn/update-systemd-resolved
    down /etc/openvpn/update-systemd-resolved
    

    您在评论中表示,您不想通过 VPN 重定向所有网络流量,但您想为专用网络使用不同的 DNS 服务器。这称为拆分 DNS。有关更多信息,请参阅以下链接:

    了解 systemd-resolved、拆分 DNS 和 VPN 配置

    systemd-resolved.service 和 VPN

    • 2

相关问题

  • 将服务器从 DHCP 切换到静态 IP

  • “.local”有什么作用?

  • 如何在学校网络上配置域名[关闭]

  • 更改DNS IP的正确方法是什么?

  • 如何清除 DNS 缓存?

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve