Я подключаюсь к корпоративному VPN через network-manager-l2tp с предварительным общим ключом и пользователем + пароль. Я автоматически получаю правильный IP-адрес DNS-сервера, который правильно разрешает URL-адреса компаний.

Однако общедоступный Интернет не разрешен (я постоянно тестировал с www.google.com), но это зависит от точки зрения: я не могу получить разрешение systemd для одновременного разрешения двух DNS-серверов (1.1.1.1 и корпоративного DNS). Это строго либо, либо, и я пробовал много разных конфигураций...

Вопрос. Как настроить systemd-resolved для одновременного использования как корпоративного VPN-сервера, так и обычных DNS-серверов?

Меня не волнует, будет ли это «условная переадресация» на основе домена или с использованием 2-го DNS после сбоя 1-го. Я не мог получить ни один подход к работе. Я предполагаю, что это как-то связано с l2tp, но я не могу найти никаких решений, применимых к моему случаю.

Я использую: NetworkManager 1.30.0, systemd-resolved (systemd 247.3) и openresolv (вместо старого resolvconf) на Pop OS. Обе службы запущены и работают.

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

Я пробовал много разных вещей, но то, что вы видите выше, является хорошей отправной точкой для создания надежного окончательного решения.

0
freeo 5 Авг 2021 в 19:54

1 ответ

Лучший ответ

Вы можете добиться разделения DNS (условной переадресации) со следующей конфигурацией (при условии, что ppp0 — это ваш интерфейс VPN, а enp6s0 — ваша обычная локальная сеть):

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 может привести к обновлению маршрута по умолчанию.

2
freeo 22 Сен 2021 в 07:25