我在 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"