У меня BIND DNS-сервер настроен с двумя представлениями. оба имеют различный набор данных зоны. когда конечный пользователь запрашивает DNS-сервер, мне нужно динамически маршрутизировать и изменять его запрос в соответствии с его потребностями. в качестве примера, если пользователь типа example.com, мне нужно, чтобы он дал ответ DNS 1.2.3.4, если пользователь хочет обратиться к другой службе, и я должен дать ему ответ DNS 4.3.2.1 для того же example.com.
Afaik единственный способ сделать это, используя сопоставление исходного IP-адреса пользователя и маршрутизацию трафика DNS в соответствии с этим. для настройки я установил два виртуальных интерфейса с частным IP-адресом и настроил представления привязки, чтобы они соответствовали этим внутренним IP-адресам, используя опцию match client
view "VIEW1" {
match-clients { 192.168.10.20; };
include "/etc/zones2.conf";
};
view "VIEW2" {
match-clients { 192.168.10.30; };
include "/etc/zones3.conf";
};
Мне нужно достичь таких результатов
scenario 1 --> example.com --> SNAT to 10.20 --> response (1.2.3.4) --> send back to client
scenario 2 --> example.com --> SNAT to 10.30 --> response (4.3.2.1) --> send back to client
Мне нужно изменить адрес источника входящего пакета на этот частный IP-адрес и запрос с использованием bind DNS в разных представлениях. и отправить результат DNS обратно клиенту. это можно сделать с ipsets, iptables и iproute? если да, как я могу этого добиться?