У меня есть сервер Linux, подключенный к VPN.
Дома я использую тот же VPN на своем ноутбуке, когда подключен к серверу напрямую через беспроводной маршрутизатор.
Для этого у меня есть две записи в моем /etc/hosts
:
192.168.1.1 myserver
10.1.1.1 myserver.vpn
Таким образом, я могу выбрать способ подключения вручную, используя другое имя хоста.
Мой вопрос: как я могу подключиться динамически, используя то же имя хоста? В идеале ноутбук должен знать, какой IP-адрес использовать, на основе каких сетевых интерфейсов он подключен, отдавая предпочтение реальному интерфейсу, а не виртуальному. И если адрес не был доступен, я хочу попробовать другой!
Я попытался настроить это, используя dnsmasq на ноутбуке с несколькими записями хоста и опцией localise-queries
. В моем dnsmasq.conf
меня есть:
host-record=myserver,10.1.1.1
host-record=myserver,192.168.1.1
Когда я использую dig myserver +short
я получаю:
10.1.1.1
192.168.1.1
в первый раз и
192.168.1.1
10.1.1.1
во второй раз и так далее ...
Но если я изменяю статический адрес myserver на 192.168.1.2
и выполняю ping myserver
с ноутбука (192.168.1.3), я получаю:
PING myserver (192.168.1.1) 56(84) bytes of data.
From localhost (192.168.1.3) icmp_seq=1 Destination Host Unreachable
From localhost (192.168.1.3) icmp_seq=2 Destination Host Unreachable
From localhost (192.168.1.3) icmp_seq=3 Destination Host Unreachable
...
Итак, пара вопросов:
(1) почему ноутбук не использует другой маршрут, даже если dnsmasq его предоставляет? (2) как я могу определить приоритеты маршрутов в зависимости от того, какое сетевое соединение используется?
Кстати, я пытался использовать NetworkManager и настраивать записи DNS для каждого соединения (например, использовать DNS-сервер моего маршрутизатора для разрешения имен хостов в локальной сети и локальный dnsmasq ноутбука для поиска имен хостов в VPN). Ну, это казалось хорошей идеей, но каждый раз, когда я активировал интерфейс, он отменял настройки DNS других интерфейсов. Это не то, что я хотел!
Вопрос (3): Есть ли лучший способ сделать это?