重启后 DNS 不工作

重启后 DNS 不工作

启动 Ubuntu 18.10 后,我无法解析域名,我的/etc/resolv.conf文件如下所示:

# Generated by NetworkManager
nameserver 127.0.0.53

$ nslookup google.com - 127.0.0.53命令也没有返回任何内容。

在 OpenVPN 中安装此脚本以支持 DNS 后,这成为一个问题:https://github.com/masterkorp/openvpn-update-resolv-conf

我想我已经安装了该openresolv软件包,但我不确定如何配置所有内容以使其协同工作。

目前,/etc/resolv.conf每次启动后我都必须手动更新 Google DNS 服务器。但是,VPN 运行正常,因此看起来它正在为此更新 DNS。

重新启动 PC 并使用 OpenVPN 建立 VPN 隧道后,可以做什么来使其工作?

任何建议都将受到高度赞赏。


@heynnema 请求的命令:

我在重启后、连接到 VPN 之前就运行了它们。

$ cat /etc/issue
Ubuntu 18.10

$ uname -a
Linux destiny 4.18.0-13-generic #14-Ubuntu SMP Wed Dec 5 09:04:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ ls -al /etc/resolv.conf
-rw-r--r-- 1 root root 52 янв 21 21:20 /etc/resolv.conf

$ ps auxc | grep -i dns

$ host 8.8.8.8
;; connection timed out; no servers could be reached

$ host www.ebay.com
;; connection timed out; no servers could be reached

$ ps auxc | grep -i resolv

$ cat /run/resolvconf/resolv.conf
cat: /run/resolvconf/resolv.conf: No such file or directory

$ cat /run/systemd/resolve/resolv.conf
cat: /run/systemd/resolve/resolv.conf: No such file or directory

$ ls -al /etc/openvpn
total 36
drwxr-xr-x   5 root root  4096 янв 15 14:54 .
drwxr-xr-x 139 root root 12288 янв 21 23:43 ..
drwxr-xr-x   2 root root  4096 сен  3 11:57 client
drwxr-xr-x   2 root root  4096 янв 15 14:25 scripts
drwxr-xr-x   2 root root  4096 сен  3 11:57 server
-rwxr-xr-x   1 root root  1468 сен  3 11:57 update-resolv-conf
-rwxr-xr-x   1 root root  2152 янв 15 14:54 update-resolv-conf.sh

# openvpn --version
OpenVPN 2.4.6 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Sep  3 2018
library versions: OpenSSL 1.1.1  11 Sep 2018, LZO 2.10
Originally developed by James Yonan
Copyright (C) 2002-2018 OpenVPN Inc <[email protected]>
Compile time defines: enable_async_push=no enable_comp_stub=no enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=needless enable_fragment=yes enable_iproute2=yes enable_libtool_lock=yes enable_lz4=yes enable_lzo=yes enable_maintainer_mode=no enable_management=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no enable_pf=yes enable_pkcs11=yes enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_silent_rules=no enable_small=no enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=yes enable_werror=no enable_win32_dll=yes enable_x509_alt_username=yes with_aix_soname=aix with_crypto_library=openssl with_gnu_ld=yes with_mem_check=no with_sysroot=no

$ systemctl status | head -n 6

● destiny
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Tue 2019-01-22 17:33:01 MSK; 1min 29s ago
   CGroup: /

$ systemctl status systemd-resolved
● systemd-resolved.service - Network Name Resolution
   Loaded: loaded (/lib/systemd/system/systemd-resolved.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:systemd-resolved.service(8)
           https://www.freedesktop.org/wiki/Software/systemd/resolved
           https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-managers
           https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients

答案1

笔记:无论是否使用 VPN,DNS 在 18.xx 中都发生故障。


问题...

  • 你的/etc/resolv.conf是一个硬连线文件,应该是一个符号链接
  • 你的/run/resolvconf/resolv.conf/run/systemd/resolve/resolv.conf没有被填充
  • 你安装了openresolv
  • 你遵循了来自 github 的一个两年前的脚本(+ 尽管尝试
  • systemd-resolved已禁用且未运行
  • 你缺少一些必需的network-manager软件包

那么...只是开始...

  • 卸载openresolv
  • 根据 github 链接删除所有 mod

  • 重新启用并重新启动systemd-resolved

sudo systemctl enable systemd-resolved# 重新启用 systemd-resolved

sudo systemctl start systemd-resolved# 启动 systemd-resolved

sudo systemctl status systemd-resolved# 检查状态

  • 重新创建/etc/resolv.conf符号链接

sudo rm -i /etc/resolv.conf# 删除硬连线文件

sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf# 重新创建符号链接

sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf# 重新创建符号链接

reboot# 重启系统

重启后...

cat /etc/resolv.conf# 检查/etc/resolv.conf 的内容

并确认它包含类似 192.168.x.1 或上游 DNS 服务器的 IP 地址。


我们将修改您的 .ovpn 脚本,将其导入 NetworkManager,然后稍后测试 VPN。需要注意的一点是,使用sudo openvpn script_name.ovpn可能产生的结果与将 .ovpn 文件导入 NetworkManager 不同。

对于您的 .ovpn 文件...

在文件末尾添加以下内容(只用一个 .ovpn 文件尝试一下)。

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

然后尝试...

sudo openvpn script_name.ovpn# 通过 CLI 连接

cat /etc/resolv.conf# 重新检查内容并确认更改

resolvectl# 检查 DNS 服务器是否分配给 tap0

检查 DNS 泄漏http://dnsleak.com


更新#1:

我改变主意了(至少暂时),并决定在“重新创建/etc/resolv.conf符号链接”步骤中更改符号链接......

  • 重新创建/etc/resolv.conf符号链接

sudo rm -i /etc/resolv.conf# 删除符号链接

sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf# 重新创建符号链接

sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf# 重新创建符号链接

  • resolvectl对于已启用 VPN 的设备 tap0,可能无法显示预期结果

更新 #2:

现在我们将修改后的.ovpn 文件导入NetworkManager。

  • 打开Network设置面板
  • 找到 VPN 部分,然后单击“+”图标添加连接
  • 选择Import from file
  • 找到修改后的 .ovpn 并导入它
  • 导入后,点击“添加”按钮
  • 使用 NetworkManager 的 VPN 菜单通过导入的 .ovpn 连接到您的 VPN 服务器
  • 检查 DNS 泄漏http://dnsleak.com

  • resolvectl应显示设备 tap0 开启 VPN 的预期结果

更新 #3:

  • 安装了缺少的软件包...

network-manager-openvpn

network-manager-openvpn-gnome

network-manager-vpnc

  • 需要检查这些(dpkg -l *resolv* | grep ii)...

resolvconf

libnss-resolve

更新 #4:

下面是我所说的“有线连接”NM 脚本的屏幕截图...您可以在那里设置 DNS(记得将 DNS AUTO 设置为 OFF,然后输入以逗号分隔的 DNS IP 地址)...或者编辑/etc/systemd/resolved.conf并编辑该#DNS=行...但是,这两种方式都可能会覆盖我们试图 100% 获得的 VPN 对 DNS 的自动处理。

请记住,使用sudo openvpn client.ovpn产生的结果与使用导入的 .ovpn 脚本从 NetworkManager 启动 VPN 连接的结果略有不同。无论哪种情况,您都需要监视我们已符号链接到的两个 resolv.conf,/etc/resolv.conf并查看哪一个适当地显示来自本地网络或 VPN 网络的 DNS 服务器,但通常不会同时显示两者...然后根据需要调整符号链接。(注意:我们可能还必须编辑/etc/nsswitch.conf...稍后会详细介绍)。

记得我说过 DNS 在 18.xx 中有点不稳定 :-) 我终于让它运行得很好了,但这花了一些时间。

在此处输入图片描述


更新 #5:

值得尝试一下...我自己还没有玩过这个...所以请报告你的结果。

编辑/etc/nsswitch.conf并暂时注释掉:

hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns

并将其替换为:

hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns myhostname

更新 #6:

如果这令人困惑......记得我说过它可能是......

这是您要进行的测试...请仔细记下,因为很容易根据记忆出错...我知道我就是这样的...

让我们只看一下 的输出resolvectl。我们必须查看 3 个不同的地方才能确定它是否正常工作。

Global
       LLMNR setting: no
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: 10.200.0.1 <--note
         DNS Servers: 10.200.0.1 <--note

和...

Link 5 (tun0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: 10.200.0.1 <--note
         DNS Servers: 10.200.0.1 <--note
          DNS Domain: ~.

和...

Link 2 (eth0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: 192.168.0.1 <--note
         DNS Servers: 192.168.0.1 <--note
          DNS Domain: ~

运行两个单独的测试...

测试 #1...

  • 使用 CLI,sudo openvpn client.ovpn
  • 注意,使用上述 3 个示例,如果您的 VPN DNS 出现在任何地方
  • 前往http://dnsleak.com检查 VPN IP 和 DNS 泄漏

测试 #2...

  • 使用 NM 接口通过导入的 .ovpn 文件进行连接
  • 注意,使用上述 3 个示例,如果您的 VPN DNS 出现在任何地方
  • 前往http://dnsleak.com检查 VPN IP 和 DNS 泄漏

相关内容