В небольших сетях часто случается, что сервер является как маршрутизатором так и веб сервером и имеет два сетевых интерфейса. Один смотрит в интернет и имеет белый IP, а второй в локальную сеть и имеет классический для локалки IP 192.168.1.1. Как сделать чтоб сайт был виден с нормальным именем как из интернета так и из локальной сети?
Для этого в named можно использовать view(виды). Видов можно создать сколько угодня для разных сетей и для конкретных IP.
Ниже приведен конфиг bind с двумя view, для локалки и для интернета. При разрешении имени example.com из интернета bind будет давать внешний IP, а при разрешении из сети 192.168.1.0/24 или с IP 127.0.0.1 будет выдаваться IP в локальной сети.
options { directory "/var/lib/named"; dump-file "/var/log/named_dump.db"; statistics-file "/var/log/named.stats"; query-source address * port 53; transfer-source * port 53; notify-source * port 53; allow-query {any;}; allow-recursion{ 127.0.0.1; 192.168.1.0/24; }; notify yes; }; logging { channel syslog_errors {file "/var/log/named/error.log"; severity error;}; category default { syslog_errors; }; category lame-servers { null; }; }; # #вид для внутренних зон view internal { #зоны ресолвятся для клиентов сетей 192.168.1.0/24 и локалхоста match-clients { 127.0.0.1; 192.168.1.0/24; }; zone "." in { type hint; file "root.hint"; }; zone "localhost" in { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" in { type master; file "127.0.0.zone"; }; zone "1.168.192.in-addr.arpa" in { file "dyn/1.168.192.in-addr.arpa"; type master; }; zone "example.com" in { file "dyn/example"; type master; }; }; # # Вид для внешних зон view external { #Для всех остальных сетей и IP которые явно не указаны в предыдущих view match-clients { any; }; allow-transfer { 195.234.42.1; 87.98.164.164; 66.252.5.14; }; zone "example.com" in { file "master/example.com"; type master; }; zone "101.207.82.in-addr.arpa" in { file "master/101.207.82.in-addr.arpa"; type master; }; };
В принципе конфиг мало чем отличается от стандартного, ключевая фраза тут
view <имя вида>{ match-clients {<хост или сеть которая будет получать зону>;}; ........ ........ };
Таких вью можно создать столько сколько вам требуется.