只有在通过网络管理器或其配置文件连接到 VPN (OpenVPN) 时,有没有办法优先考虑特定的 DNS 服务器?
我有一个192.168.1.*
我经常连接的 VPN (),它配置了 DNS ( ),以解析其网络上192.168.1.53
表单的主机名。*.internal.example.com
我的本地路由器 ( 192.168.0.1
) 上有 DD-WRT 和谷歌的 DNS 设置(这些不是严格需要的)。
我已经用/etc/resolv.conf
符号链接替换了 systemd 存根,/run/systemd/resolve/resolv.conf
以便主机名实际上可以使用 VPN 的 DNS 服务器进行解析。昨天它运行良好,因为 VPN 的 DNS 服务器位于列表的顶部。
# /etc/resolv.conf -> /run/systemd/resolve/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
# ...
nameserver 192.168.1.53
nameserver 192.168.0.1
nameserver 8.8.8.8
# Too many DNS servers configured, the following entries may be ignored.
nameserver 8.8.4.4
search Home internal.example.com
但是,当我今天连接时,DNS 条目已重新排序。
# /etc/resolv.conf -> /run/systemd/resolve/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
# ...
nameserver 192.168.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4
# Too many DNS servers configured, the following entries may be ignored.
nameserver 192.168.1.53
search Home internal.example.com
重新启动后顺序经常更改。有时在重新连接到 VPN 时,我注意到订单发生了变化(在遇到解决问题之后)。
systemd-resolve
工作得很好,可以使用正确的 DNS 服务器解析主机。
$ systemd-resolve --status --no-pager
Global
DNSSEC NTA: ...
Link 10 (tun0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.1.53
DNS Domain: internal.example.com
Link 2 (eno1)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.0.1
8.8.8.8
8.8.4.4
192.168.1.53
DNS Domain: Home
$ systemd-resolve srv1.internal.example.com
srv1.internal.example.com: 192.168.1.113
-- Information acquired via protocol DNS in 2.1ms.
-- Data is authenticated: no
ping
, nslookup
, 并且ssh
都失败了。
$ ping srv1.internal.example.com
ping: srv1.internal.example.com: Name or service not known
$ nslookup srv1.internal.example.com
Server: 192.168.0.1
Address: 192.168.0.1#53
** server can't find srv1.internal.example.com: NXDOMAIN
$ ssh srv1.internal.example.com
ssh: Could not resolve hostname srv1.internal.example.com: Name or service not known
一些笔记。
我通过网络管理器连接到 VPN。我在 VPN 上手动指定了 VPN 的 DNS:IPv4 > DNS 服务器。
我尝试使用配置了 VPN 的 DNS 的单独有线以太网连接:IPv4 > 其他 DNS 服务器。
当您接受使用 dnsmasq 时,如何:
这将对域“internal.example.com”使用 192.168.1.53,对其他所有内容使用 8.8.8.8。
查看 dnsmasq 手册页上的“-S、--local、--server=”选项。
更新:您可能还想禁用 DHCP,以避免与本地路由器发生冲突。也许只听 lo (127.0.0.1) 接口。
可以使 dns 优先
nmcli -p 连接修改 MY_VPN_CONNECTION ipv4.dns-priority -42
在这里找到这个https://github.com/systemd/systemd/issues/6076
感谢 JucaPirama对我需要的方向的回答,这是我在systemd-resolved前面使用dnsmasq的最终设置。
禁用systemd 解析的存根 DNS 服务器。
/etc/systemd/resolved.conf
变化中至
重新启动systemd-resolved。
安装dnsmasq。
设置dnsmasq。在中,通过更改
/etc/dnsmasq.conf
使用systemd-resolved的resolv.conf文件至
通过添加仅为其域设置 VPN 的 DNS 服务器
通过更改禁用 DHCP 以防止任何潜在的冲突
至
重新启动dnsmasq。
/etc/resolv.conf
从systemd-resolved的配置中取消链接。编辑
/etc/resolv.conf
以使用dnsmasq。可能不需要此步骤,因为网络管理器在某些时候会覆盖它以指向127.0.0.53。