网络管理员 - VPN 的 DNS 问题

网络管理员 - VPN 的 DNS 问题

我在带有 KDE 的 Debian 11 系统上工作,并使用网络管理器来处理网络连接:普通 LAN 和 VPN。这些是我的配置:

# cat /etc/*release*
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

# plasmashell -v
plasmashell 5.20.5

# nmcli -v
nmcli tool, version 1.30.6

在连接到 VPN 之前,我的 resolv.conf 如下所示:

# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8

当我连接到 VPN 时:

# cat /etc/resolv.conf
# Generated by NetworkManager
search fakecompany.com
nameserver 8.8.8.8
nameserver 192.168.50.9

这可能是它的设计工作方式,但这意味着在公司 DNS 上的名称查找往往会失败,因为我们的内部主机名当然不在开放的互联网上。我现在必须忍受的是手动编辑resolv.conf,这有点乏味。

有没有办法让网络管理器简单地替换原来的?

答案1

将连接ipv4.dns-priorityipv6.dns-priority参数设置为消极的值(参见‘nm-settings’手册页)。

nmcli con modify "My Little VPN" ipv4.dns-priority -100
nmcli con modify "My Little VPN" ipv6.dns-priority -100

127.0.0.53或者:启用 systemd-resolved 服务;这应该会导致 resolv.conf仅指向,并resolvectl用于控制 DNS 配置。(您可能需要手动更改 resolv.conf 符号链接。)这样做的好处是可以同时支持多组 DNS 服务器 - 您公司的 DNS 将用于从 VPN 获得的后缀,而 8.8.8.8 将用于其他所有内容。

systemctl enable --now systemd-resolved

# Swap resolv.conf and restart both services for a clean state
ln -bvnsf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
systemctl restart systemd-resolved NetworkManager

# Check status
resolvectl

# Bring up VPN, check status again
nmcli con up "My Little VPN"
resolvectl
resolvectl query foo.mycompany.com

相关内容