Я использую VPN на интерфейсе, например tun0 (2.2.2.0/24), пока сеть LAN находится на интерфейсе eth0 (1.1.1.0/24).
я использую dnsmasq для маршрутизации определенных адресов в мою локальную сеть, и эти адреса имеют свои сетевые аналоги VPN, которые должны ссылаться на то же имя хоста, которое находится на том же компьютере, который также является DNS. (Интерфейсы защищены брандмауэром, поэтому eth0 не может взаимодействовать с tun0 и наоборот)
Таким образом, у нас будет два таких хост-файла:
hosts.eth0:
1.1.1.1 example.com
hosts.tun0:
2.2.2.1 example.com
Я нахожу некоторые трудности с указанием dnsmasq использовать определенный файл хоста для определенного интерфейса без запуска dnsmasq два раза таким же образом, как:
dnsmasq -I lo -i eth0 -H hosts.eth0
и его аналог
dnsmasq -I lo -i tun0 -H hosts.tun0
Этот подход не очень хорош для системы Debian 8, и я думаю, что должен быть лучший способ достичь того, что я хочу делать. Что я могу сделать?
Будет ли это делать то, что вы ищете?
-y, --localise-questions
Возвращать ответы на запросы DNS из / etc / hosts, которые зависят от интерфейса, через который был получен запрос. Если имя в / etc / hosts имеет более одного связанного с ним адреса, и хотя бы один из этих адресов находится в той же подсети, что и интерфейс, на который был отправлен запрос, тогда вернуть только адрес (а) в этой подсети . Это позволяет серверу иметь несколько адресов в / etc / hosts, соответствующих каждому из его интерфейсов, и хосты получат правильный адрес в зависимости от того, к какой сети они подключены. В настоящее время эта возможность ограничена IPv4.