В то время как ответ @ kichik вполне может работать, более элегантным способом достижения этого может быть использование директивы localise-queries
и одного экземпляра сервера dnsmasq
.
Я предположим, что вы уже настроили диапазоны DHCP для разных интерфейсов и связали их с dnsmasq
.
Добавить (частично документированный) localise-queries
вариант в ваш файл dnsmasq.conf
.
# /etc/dnsmasq.conf
localise-queries
Затем убедитесь, что один из файлов, которые dnsmasq
читает для хостов (например, /etc/hosts
) содержит записи с IP-адресами для обеих сетей, например:
# /etc/hosts
127.0.0.1 dev-vm
192.168.1.1 dev-vm
10.0.0.1 dev-vm
альтернатива изменения файла /etc/hosts
является указание адреса в вашем dnsmasq.conf
файл вместо:
# /etc/dnsmasq.conf
localise-queries
host-record=dev-vm,127.0.0.1
host-record=dev-vm,192.168.1.1
host-record=dev-vm,10.0.0.1
в результате в б В других случаях dnsmasq
будет обслуживать только IP-адрес, соответствующий IP-интерфейсу и сетевой маске интерфейса для запросов, полученных на этом конкретном интерфейсе.
Согласно man page, это делает следующее:
-y, --localise-запросов
Возратиться ответы на DNS-запросы от/и т.д./хостов, которые зависят от интерфейса, над которым запрос был получен.Если имя в/etc/hosts имеет более одного адреса, связанного с ним, и по крайней мере один из этих адресов находится в той же подсети, что и интерфейс, на который был отправлен запрос, затем возвращает только адреса (адреса) в этой подсети , Это позволяет серверу иметь несколько адресов в/etc/hosts, соответствующих каждому из его интерфейсов, а хосты получат правильный адрес на основе той сети, к которой они привязаны. В настоящее время это средство ограничено IPv4.
В каких интерфейсах вступают в игру? Используете ли вы два разных интерфейса для своей домашней сети и рабочей сети? Почему изменяется IP-адрес виртуальной машины? – kichik
Да, это было 2 разных интерфейса для дома (192.168.0. *) И работа (10.0.0. *). Изменение происходит между рабочим IP-адресом и домашним IP-адресом. –