Как заставить DNS и VPN работать вместе?

Как заставить DNS и VPN работать вместе?

Когда я на работе и подключаю свой ноутбук кабелем, я сразу попадаю в нашу внутреннюю сеть. Поэтому я могу напрямую подключаться к компьютерам внутри без доменного имени, например: ssh host1, с доменным именем: ssh host1.example.comили напрямую через IP: ssh 192.168.100.101.

Но когда я дома, мне нужно сначала войти в наш vpn. После этого я могу безопасно
подключиться как с ssh host1.example.comи ssh 192.168.100.101.Но как мне добраться ssh host1до работы?

Я использую Ubuntu 18.04.3 LTS и подключаюсь к VPN с помощью OpenVPN 2.4.4.

До недавнего времени у меня это работало, но как оказалось,всеМой трафик направлялся через vpn, что, конечно, создавало ощущение, что я нахожусь в офисе, но это также добавляло дополнительный трафик туда и обратно для трафика, который не
предназначался для офиса. Поэтому в NetworkManager->изменить VPN-подключение->"
Настройки IPv4"->Маршруты... есть флажок "Использовать это подключение только для ресурсов в его сети".

введите описание изображения здесь

Если этот флажок не установлен, я получаю маршрут по умолчанию, который направляет весь трафик на интерфейс vpn (tun0):

$ ip route
default via 172.30.0.25 dev tun0 proto static metric 50 
default via 192.168.1.1 dev enxc8f750cc2555 proto dhcp metric 100 
...

Если этот флажок установлен, первое правило по умолчанию отменяется:

$ ip route
default via 192.168.1.1 dev enxc8f750cc2555 proto dhcp metric 100
...

Конечно, есть и другие правила маршрутизации, которые завершают настройку VPN, но я думаю, что здесь для описания проблемы они не нужны.

Итак, после установки этого флажка все работает (за исключением DNS-поиска) и работа в остальной части сети становится быстрее (я так думаю).

Я немного повозился с resolve, но так и не понял, как заставить его
работать. Я пытался указать /etc/resolve.confна оба:

/run/systemd/resolve/resolv.conf
/run/systemd/resolve/stub-resolv.conf

Но, похоже, никаких изменений в поведении не произошло.

Думаю, это связано с настройками search, resolve.confно я не могу понять, как именно.

Итак, я бы хотел (я думаю):

  • Получаю конфигурацию сети с DHCP, куда бы я ни подключился (это работает)
  • Если я войду в VPN, то DNS внутри VPN должен быть DNS по умолчанию.

Что/как я могу изменить, проверить и подтвердить? Предложения? Вопросы?

Или я лаю не на то дерево?

решение1

Интерфейс VPN должен иметь адрес DNS локальной работы и домен поиска, добавленный к нему. Удаленно подключитесь к машине через vpn к вашему основному сайту и проверьте адрес DNS. Вам также понадобится ваш суффикс DNS, также известный как домен поиска. (например, если ваше полное доменное имя похоже на computer1.xyz.com или comp1.abc.local, домен/суффикс поиска будет xyz.com или abc.local)

После того, как вы получите эту информацию, измените настройки в netplan, добавив сервер имен (сервер DNS) и суффикс поиска DNS. Выглядит это примерно так:

$ sudo vi /etc/netplan/50-cloud-init.yaml

ethernets:
        vpn0:
            addresses: [192.168.86.30/24]
            dhcp4: no
            dhcp6: no
            gateway4: 192.168.86.1
            nameservers:
                    addresses: [192.168.86.10] #dns server address goes here
                    search: [xyz.com] #end of FQDN goes here


$ sudo netplan apply

Добавьте только серверы имен/адреса/значения поиска. Игнорируйте остальных. Возможно, после этого придется поднять и опустить интерфейс vpn.

Связанный контент