Dns

systemd-resolved+VPN:第二個 DNS 伺服器被忽略 (L2TP)

  • September 22, 2021

我正在通過 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 可能會導致更新預設路由。

引用自:https://unix.stackexchange.com/questions/663479