Автор Тема: Одна DNS-зона на две сети  (Прочитано 4652 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ssergey

  • Jr. Member
  • **
  • Сообщений: 73
  • Karma: +0/-0
Одна DNS-зона на две сети
« : Мая 01, 2015, 06:53:18 pm »
Доброго времени!
Попался заказ на установку сервкра 1С для очень маленькой организации (всего 3 компа, но конторка ведёт бух. учёт мелких фирм и ИП) что-то мутить навороченное нет ни смысла ни финансовых возможностей у фирмы.
Решили остановиться на сборке сервер 1С+postgres на CentOS 7 (ну и так по мелочи на мой вкус немного плюшек). Благо время есть решил проработать возможность перехода на виртуалке. На удивление пока всё проканывает, что не может не радовать. Но есть определённая сложность с настройкой BIND.
На серваке есть 2 одноимённые зоны (для внешней и внутренней сети).Наблюдаю такую картинку. при попытке работать с хостами внешней сети не разрешаться имена внешней зоны. Понятно, что где-то не допилил или накосячил, но где понять не выходит. (или вообще забрёл не туда) Решил обратиться на знакомый форум за помощью. Может подбросите идей несколько?
Задача: Заставить сервер (localhost) разрешать имена в двух зонах
cat /etc/named.conf
# Список доверенных серверов дя передачи зон
acl "trusted-dns" { 195.0.1.1;  195.0.1.8; localhost; 127/8; };
options {
        listen-on port 53 { 127.0.0.1; 195.0.1.15; 192.168.1.254; };
        listen-on-v6 port 53 { none; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 127/8; 195.0.1/24; 192.168.1/24; 10/8; };

#       recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
        forwarders { 212.1.224.6; 212.1.244.6; };
};

logging {
        channel default_debug {
        file "data/named.run";
        severity dynamic; };
};

include "/etc/named.root.key";

view "internal" {
     match-clients { 192.168.1/24; 10/8; 127/8; localhost; };
     # 127/8; localhost; - Для разрешения имён этим хостом
     // Наш сервер рекурсивен для внутренних клиентов, сам будет узнавать адрес для клиента
     recursion yes;
     zone "." IN {
        type hint;
        file "named.ca";
        };

include "/etc/named.rfc1912.zones";

     zone "free-adm.ru" IN {
          type master;
          file "master/buch.ru.zone";
          };

     zone "1.168.192.IN-ADDR.ARPA" IN  {
          type master;
          file "master/1.168.192.zone";
          };
};

view "external" {
     match-clients { 195.0.1/24; 127/8; localhost; };
     # 127/8; localhost; - Для разрешения имён этим хостом
     // Наш сервер не рекурсивен для Интернета
     allow-recursion { localhost; };
     zone "free-adm.ru" IN {
          type master;
          file "master/free-adm.ru.zone";
        #  allow-transfer { trusted-dns; };
          notify yes;
};
     zone "1.0.195.IN-ADDR.ARPA" IN  {
          type master;
          file "master/1.0.195.zone";
        #  allow-transfer { trusted-dns; };
          notify yes;
};

};
key "rndc-key" { algorithm hmac-md5;
          secret "u7z0Etzw4tAJGLi9mt75jQ=="; };

#controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };
controls { inet * allow {  any; } keys { "rndc-key"; }; };

Проверка зон
named-checkconf -z
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone free-adm.ru/IN: loaded serial 2015042401
zone 1.168.192.IN-ADDR.ARPA/IN: loaded serial 2015042400
zone free-adm.ru/IN: loaded serial 2015042302
zone 1.0.195.IN-ADDR.ARPA/IN: loaded serial 2015042300

Интерфейс для локалки
cat /etc/sysconfig/network-scripts/ifcfg-enp0s8
HWADDR=08:00:27:5C:4E:52
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.1.254
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=enp0s8
UUID=cf6bb457-41d1-430c-9cfb-0da422ecbbd1
ONBOOT=yes

Внешний интерфейс
cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME=enp0s3
UUID=425f4b83-7969-4542-b62b-164b2a7a39ab
ETHTOOL_OPTS="speed 1000 duplex full autoneg off"
DEVICE=enp0s3
ONBOOT=yes
IPADDR=195.0.1.15
PREFIX=24
GATEWAY=195.0.1.2
DNS1=192.168.1.254
DNS2=195.0.1.15
DOMAIN=free-adm.ru
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no

DNS1=127.0.0.1 был изначально и давал тот же результат
cat /etc/resolv.conf
# Generated by NetworkManager
search free-adm.ru
nameserver 127.0.0.1

Так же пробовал и такой вариант
cat /etc/resolv.conf
search free-adm.ru
nameserver 192.168.1.254
nameserver 195.0.1.15

192.168.1.254 и 195.0.1.15 – 2 интерфейса на сервере

С разноимёнными зонами понятно. Работать будет. А как быть с одноимёнными? Проблема только в том что до второй зоны дело не доходит. Пробовал с другого хоста nslookup натравливать на 195.0.1.15. Все разрешается как нужно
Если нужно будет, зоны опубликую. Сервер - CentOS 7 (виртуалка)
Что-то я окончательно запутался
« Последнее редактирование: Мая 04, 2015, 12:56:20 pm от ssergey »

Оффлайн Al

  • Administrator
  • Sr. Member
  • *****
  • Сообщений: 319
  • Karma: +9/-0
  • Алексей Николаев
    • LearnCisco.Ru
Re: Одна DNS-зона на две сети
« Ответ #1 : Мая 02, 2015, 12:12:26 pm »
Здравствуйте!

Первое, что сразу бросается в глаза, это

view "external" {
     match-clients { 195.0.1/24; 127/8; localhost; };

Т.е. никто извне не сможет обращаться к DNS, обычно ставят так:

view "external" {
        match-clients { any; };
        recursion no;

Удачи!

Оффлайн ssergey

  • Jr. Member
  • **
  • Сообщений: 73
  • Karma: +0/-0
Re: Одна DNS-зона на две сети
« Ответ #2 : Мая 02, 2015, 12:59:21 pm »
Доброго дня!
Всё правильно так оно и задумано (в тестовых условиях), но даже с match-clients { any; };  вьюха external не просматривается с localhost. Проблема именно в этом.

Оффлайн ssergey

  • Jr. Member
  • **
  • Сообщений: 73
  • Karma: +0/-0
Re: Одна DNS-зона на две сети
« Ответ #3 : Мая 03, 2015, 01:33:02 pm »
Насколько я понял, клиент не может просматривать более одной вьюхи. Выход очевиден. Создать ещё один просмотр для localhost, в которым будет описание всех/нужных зон, и избавиться от одноимённых зон. Задать две зоны с одинаковыми именами в просмотре не возможно. В таком варианте конструкция полностью работоспособна. Изначальным вариантом тоже можно пользоваться, если не требуется разрешение имён в двух зонах.
{12:44 Вс май 03} {root@cent} {~} {0}
# > cat /etc/resolv.conf
# Generated by NetworkManager
search free-adm.ru buch.ru
nameserver 127.0.0.1
{12:51 Вс май 03} {root@cent} {~} {0}
# > ping sergey
PING sergey.free-adm.ru (195.0.1.3) 56(84) bytes of data.
64 bytes from sergey.free-adm.ru (195.0.1.3): icmp_seq=1 ttl=128 time=0.175 ms
64 bytes from sergey.free-adm.ru (195.0.1.3): icmp_seq=2 ttl=128 time=0.192 ms
64 bytes from sergey.free-adm.ru (195.0.1.3): icmp_seq=3 ttl=128 time=0.184 ms
^C
--- sergey.free-adm.ru ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.175/0.183/0.192/0.017 ms
{12:51 Вс май 03} {root@cent} {~} {0}
# > ping srv
PING srv.free-adm.ru (192.168.1.254) 56(84) bytes of data.
64 bytes from srv.free-adm.ru (192.168.1.254): icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from srv.free-adm.ru (192.168.1.254): icmp_seq=2 ttl=64 time=0.072 ms
64 bytes from srv.free-adm.ru (192.168.1.254): icmp_seq=3 ttl=64 time=0.118 ms
^C
--- srv.free-adm.ru ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.063/0.084/0.118/0.025 ms
{12:51 Вс май 03} {root@cent} {~} {0}
{12:51 Вс май 03} {root@cent} {~} {0}
# > cat /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; 195.0.1.15; 192.168.1.254; };
        listen-on-v6 port 53 { none; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 127/8; 195.0.1/24; 192.168.1/24; 10/8; };

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
        forwarders { 212.1.224.6; 212.1.244.6; };
};

logging { channel default_debug {
        file "data/named.run";
        severity dynamic; }; };

include "/etc/named.root.key";
view "default" {
      match-clients { 127.0.0.0/8; localhost; };
      match-destinations { 127.0.0.1; };
      allow-recursion { localhost; };

      zone "buch.ru" IN { type master; file "master/buch.ru.zone"; };
      zone "1.168.192.IN-ADDR.ARPA" IN  { type master; file "master/1.168.192.zone"; };

      zone "free-adm.ru" IN { type master; file "master/free-adm.ru.zone"; };
      zone "1.0.195.IN-ADDR.ARPA" IN  { type master; file "master/1.0.195.zone"; };
};

view "internal" {
     match-clients { 192.168.1/24; 10.0.0.0/8; };
     # match-destinations - параметр, который является IP-адресом данного view
     # и используется в качестве адреса для этого сервера имен.
     match-destinations { 192.168.1.254; };

     zone "." IN {
       type hint;
       file "named.ca"; };

include "/etc/named.rfc1912.zones";

     zone "buch.ru" IN {
          type master;
          file "master/buch.ru.zone"; };

     zone "1.168.192.IN-ADDR.ARPA" IN  {
          type master;
          file "master/1.168.192.zone"; };
};

view "external" {
     match-clients { 195.0.1.0/24; };
     match-destinations { 195.0.1.15; };

     zone "free-adm.ru" IN {
          type master;
          file "master/free-adm.ru.zone";
          notify yes; };

     zone "1.0.195.IN-ADDR.ARPA" IN  {
          type master;
          file "master/1.0.195.zone";
          notify yes; };

};
...