启动 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 泄漏