systemd-resolved+VPN:第二個 DNS 伺服器被忽略 (L2TP)
我正在通過 network-manager-l2tp 使用預共享密鑰和使用者+密碼連接到公司 VPN。我會自動獲得正確的 DNS 伺服器 IP,它可以正確解析公司的 URL。
但是,公共網際網路沒有被解析(我一直在www.google.com進行測試),但這取決於角度:我無法通過 systemd-resolved 同時從 2 個 DNS 伺服器解析(1.1. 1.1 和公司 DNS)。嚴格來說要麼是要麼,我嘗試了很多不同的配置……
問題:如何配置 systemd-resolved 以同時使用公司 VPN 的 DNS 和正常 DNS 伺服器?
我不在乎它是基於域的“條件轉發”還是在第一個失敗後使用第二個 DNS。我無法得到這兩種方法來工作。我的猜測是這與 l2tp 有關,但我找不到任何適用於我的案例的解決方案。
我在 Pop OS 上使用:NetworkManager 1.30.0、systemd-resolved (systemd 247.3) 和 openresolv(而不是舊的 resolvconf)。兩項服務均已啟動並正在執行。
resolv.conf -> /run/systemd/resolve/stub-resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit. [...] nameserver 127.0.0.53 options edns0 trust-ad search fritz.box
/etc/systemd/resolved.conf
[Resolve] FallbackDNS=1.1.1.1 corp.ip.add.ress
resolvectl status
連接VPN後輸出Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: stub Fallback DNS Servers: 1.1.1.1 corp.ip.add.ress Link 2 (enp6s0) Current Scopes: DNS Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 192.168.178.1 DNS Servers: 192.168.178.1 DNS Domain: fritz.box Link 3 (ip_vti0) Current Scopes: none Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Link 23 (ppp0) Current Scopes: DNS Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: corp.ip.add.ress DNS Servers: 1.1.1.1 corp.ip.add.ress
我嘗試了很多不同的方法,但您在上面看到的是一個很好的起點,可以提出一個強大的最終解決方案。
您可以通過以下配置實現拆分 DNS(條件轉發)(假設
ppp0
您的 VPN 介面和 enp6s0 是您的正常 LAN):resolvectl dns ppp0 corp.ip.add.ress resolvectl domain ppp0 ~corp.domain.name resolvectl default-route ppp0 false resolvectl default-route enp6s0 true
這將對所有查詢使用預設 DNS,但域以 . 結尾的查詢除外
corp.domain.name
。對於這些查詢,它將使用corp.ip.add.ress
. 另請注意,必須更正預設路由,因為連接到 VPN 可能會導致更新預設路由。