连接到 OpenVPN 后未切换默认 DNS 服务器

Sve*_*ler 5 server dns openvpn systemd-resolved 18.04

我在我的笔记本电脑和我的服务器之间使用 OpenVPN 连接。配置一直工作到今天(我只是运行apt update && apt upgrade),但从那时起,我的 DNS 设置在连接到 OpenVPN 后“错误”。

连接到 OpenVPN 服务器后,我的配置中有两个“捕获所有”DNS 域条目 ( DNS Domain: ~.) systemd-resolve

剥离输出systemd-resolve --status

Link 11 (tun0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.X.Y
          DNS Domain: ~.

Link 2 (enp0s25)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 10.16.X.Y
                      10.16.X.Y
          DNS Domain: ~.
Run Code Online (Sandbox Code Playgroud)

因此,DNS 查询现在不能通过 VPN 安全地通过隧道传输,但也可以通过普通网络传输。

这会导致 DNSLeak 甚至更糟:VPN 内部主机名未正确解析(时不时地)。

我只知道将DNS Domain: ~.条目添加到 tun0-Interface 以进行解析的选项。但是如何从真实界面中删除已经存在的界面?

我已经在使用这个配置来更新我的 OpenVPN client.conf 中的 systemd-resolved:

# Upate systemd-resolvd
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决这个问题吗?

// 更新:看起来这是 NetworkManager 开始随机将根 DNS 域附加到链接的一个已知问题。在脚本开发者的 repo中的GitHub 问题中有一个有趣的讨论update-systemd-resolved

// 可能这个对 NetworkManager 的提交破坏了它。因为它为所有接口行为引入了默认的 dns 路由。

小智 2

添加到从 OpenVPN 服务器下载的客户端配置文件(扩展名为 .ovpn 的文件)中:

dhcp-option DOMAIN-ROUTE .
Run Code Online (Sandbox Code Playgroud)

如您所知,在添加此行之前,在 Ubuntu 18.04 中,您必须按照https://github.com/jonathanio/update-systemd-resolvedupdate-systemd-resolved中所述安装脚本

如果仍然不起作用,也许您还必须添加内部 DNS 服务器。检查您在 .ovpn 文件末尾添加的行,如下所示:

script-security 2
dhcp-option DNS 10.1.0.1  # replace this IP with your DNS server IP.
dhcp-option DOMAIN yourinternaldomain.local  # replace this with your internal domain name.
dhcp-option DOMAIN-ROUTE .
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
Run Code Online (Sandbox Code Playgroud)

如果您使用 UI (gnome) 进行连接

最后,如果您使用 UI VPN 图标连接到 VPN,则必须重新导入 .ovpn 修改后的文件。

为此,请在终端中执行:

sudo apt install openvpn openvpn-systemd-resolved resolvconf
sudo apt install network-manager-openvpn network-manager-openvpn-gnome
Run Code Online (Sandbox Code Playgroud)

点击 Ubuntu 开始菜单:

Ubuntu 菜单

输入“网络”一词,然后单击“网络”。它应该显示如下内容:

网络设置

单击 VPN 上的“ + ”号,然后单击“从文件导入”选项:

导入 ovpn 文件

导入后,添加名称并单击对话框右上角的“添加”按钮。

你已经准备好了!


要连接到 VPN,请单击网络图标,然后单击锁定图标。

在此输入图像描述