Networkmanager 应在 VPN 隧道中使用另一个 DNS 服务器

Networkmanager 应在 VPN 隧道中使用另一个 DNS 服务器

我在 Ubuntu 上发布了此内容,因为 Linux Mint 与它相当相关并且我认为两者上的行为是相同的。

我正在 Cinnamon 中使用 Networkmanager GUI。

我的 Linux Mint 盒子连接到 WLAN 热点,它充当 DHCP 服务器,并将自身传播为 DNS 服务器。到目前为止一切顺利。

但是,当我连接到 VPN 时,VPN 隧道的 DHCP 服务器会为我的客户端(可以正常工作)分配一个 IP 地址和一个 DNS 服务器 - 后者会被忽略。即使静态输入 DNS 服务器也会被忽略。

如何告诉 Networkmanager/DNSMasq 在连接到 VPN 时使用另一个 DNS 服务器?我在 GUI 上找不到任何相关内容,在文档中也找不到如何在配置文件中配置它。

注意,此 DNS 服务器只能在 VPN 中使用,因为它是公司范围的 DNS 服务器,可解析本地 TLD (.loc)。不能通过将标准 DNS 服务器(WLAN 热点)替换为公共 DNS 服务器来实现。

答案1

对于遇到此问题的任何人,我最终都自己解决了它。

最新的 Ubuntu 版本不再使用 DNSMasq,而是使用 Systemd-resolve。但是,当隧道打开时,NetworkManager 不会通知 Systemd-resolve 更新 DNS 设置。为了解决这个问题,可以创建一个调度脚本,如下所示:

#!/bin/bash
UUID='uuid-of-vpn-connection-file'
VPNIF="$(nmcli -t connection show "$UUID"| sed -n '^GENERAL\.DEVICES:/{s/^[^:]*:\([^\s]*\)}/\1/;p}
[[ "$1" =~ ^tun -a "$2" = 'up' ]] && systemd-resolve --set-dns xxx.xxx.xxx.xxx --interface "$VPNIF"

相关内容