Назад | Перейти на главную страницу

DNS - использовать общедоступное доменное имя для внутреннего использования

Я установил Bind в качестве службы разрешения DNS в интрасети (работающей на Ubuntu 16.04.02 LTS).

Чего я хочу добиться: Наличие общедоступного доменного имени, которое указывает на сервер (пример: domain.com -> 1.2.3.4). Использование того же имени поддомена, которое указывает на внутренние машины (пример: machine1.domain.com -> 192.168.1.100)

Что я сделал: (конфигурация)

Файл: /etc/bind/ named.conf.options

options {
    directory "/var/cache/bind";

    recursion yes;
    allow-recursion { 192.168.2.0/24; };
    listen-on {192.168.2.4; };
    allow-transfer { none; };

    forwarders {
            192.168.2.1; #router
            8.8.8.8; #public dns
    };

    dnssec-validation auto;
    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

    acl "truested" {
            192.168.2.0/24;
            192.168.2.4; # ns1
            192.168.2.5; # ns2
};

Файл: /etc/bind/ named.conf.local

zone "domain.com" {
    type master;
    file "/etc/bind/zones/db.domain.com";
    allow-transfer { 192.168.2.5;};
};

zone 2.168.192.in-addr.arpa {
    type master;
    file "/etc/bind/zones/db.2.168.192";
    allow-transfer { 192.168.2.5; };
};

Файл: /etc/bind/zones/db.domain.com

$TTL    604800
@       IN      SOA     ns1.domain.com. root.domain.com. (
                          5         ; Serial
                     604800         ; Refresh
                      86400         ; Retry
                    2419200         ; Expire
                     604800 )       ; Negative Cache TTL
; name servers - NS Records
    IN      NS      ns1.domain.com.
    IN      NS      ns2.domain.com.

; name servers - A Records
ns1.domain.com. IN      A       192.168.2.4
ns2.domain.com. IN      A       192.168.2.5

; 192.168.2.0/24 - A Records
server.domain.com.      IN      A       192.168.2.120
server2.domain.com.     IN      A       192.168.2.121
ns1.domain.com.         IN      A       192.168.2.4
ns2.domain.com.         IN      A       192.168.2.5

Файл: /etc/bind/zones/db.2.168.192

$TTL    604800
@       IN      SOA     ns1.domain.com. root.domain.com. (
                          4         ; Serial
                     604800         ; Refresh
                      86400         ; Retry
                    2419200         ; Expire
                     604800 )       ; Negative Cache TTL
; name servers - NS Records
    IN      NS      ns1.domain.com.
    IN      NS      ns2.domain.com.

;       PTR Records
4       IN      PTR     ns1.domain.com.
5       IN      PTR     ns2.domain.com.
120     IN      PTR     server.domain.com.
121     IN      PTR     server2.domain.com.

Проблема: Когда я выполняю поиск DNS с компьютера (установив в качестве DNS-сервера этот сервер "192.168.2.4)" для IP-адреса domain.com он не возвращает значение. Что, следовательно, не открывает веб-страницу внешнего сервера (domain.com).

Что мне нужно изменить, чтобы DNS-сервер работал так, как я хочу?

Почему бы не настроить переадресацию для зоны для domain.com и создайте новую зону для поддомена domain.com для которого локальный сервер имен является авторитетным?

В моем примере используется example.com вместо того domain.com ...

                                   192.168.33.0/24                               
+--------------------------+             |                                     
|                          |             |                                     
| Client 1                 |192.168.33.1 |             +----------------------+
| client1.corp.example.com |--------------             |                      |
|                          |             |192.168.33.5 | Corporate name server|
+--------------------------+             --------------| ns1.corp.example.com |
                                         |             |                      |
                                         |             +----------------------+
+-------------------------+              |                                     
|                         |              |                                     
|Server 1                 | 192.168.33.2 |                                     
|server1.corp.example.com |--------------|                                     
|                         |              |             +------------+          
+-------------------------+              |192.168.33.7 |            |          
                                         ---------------  Router    |          
                                         |             |            |          
                                         |             +------|-----+          
                                         |                    |                
                                                              |                
                                                              |1.2.3.4         
                                                              |                
                                                              |                

                                                         The Internet          
                                       1.2.3.5    /-----                       
                                   /--------------             |               
                +------------------                            |               
                |                 |                            | 1.2.3.6       
                | WWW server      |                            |               
                | www.example.com |               +------------|------------+  
                |                 |               |                         |  
                +-----------------+               | example.com name server |  
                                                  | ns.example.com          |  
                                                  |                         |  
                                                  +-------------------------+

Вот конфиги:

/etc/bind/ named.conf.options:

options {
    directory "/var/cache/bind";

    dnssec-validation auto;

    auth-nxdomain no;
};

/etc/bind/ named.conf.local:

zone "example.com" {
    type forward;
    forwarders {
        1.2.3.6;
    };
};

zone "corp.example.com" {
    type master;
    file "/etc/bind/db.corp.example.com";
};

zone 33.168.192.in-addr.arpa {
    type master;
    file "/etc/bind/db.192.168.33";
};

/etc/bind/db.db.corp.example.com:

                                       
$TTL    604800
$ORIGIN corp.example.com.

@       IN      SOA     ns1.corp.example.com. admin.example.com. (
                        5;         
                        604800;
                        86400;   
                        2419200;
                        604800;
                        )

; name servers
        IN      NS      ns1.corp.example.com.

; name servers
ns1     IN      A       192.168.33.5

; hosts
client1 IN      A       192.168.33.1
server1 IN      A       192.168.33.2
ns1     IN      A       192.168.33.5

/etc/bind/db.192.168.33:

$TTL    604800
$ORIGIN 33.168.192.in-addr.arpa.

@       IN      SOA     ns1.corp.example.com. admin.example.com. (
                        4;
                        604800;
                        86400;
                        2419200;
                        604800;
                        )
; name servers
        IN      NS      ns1.corp.example.com.

; hosts
1       IN      PTR     client1.corp.example.com.
2       IN      PTR     server1.corp.example.com.
5       IN      PTR     ns1.corp.example.com.

Примечание: вам не хватает $ ORIGIN директива в вашем db.2.168.192 zone, но вы используете ярлыки в записях PTR RR.

Тест Nslookup с локальной установкой BIND (перенаправление на 8.8.8.8 для зоны example.com просто чтобы мы могли получить некоторые результаты):

> server 127.0.0.1
Default server: 127.0.0.1
Address: 127.0.0.1#53
> set type=ns
> corp.example.com
Server:     127.0.0.1
Address:    127.0.0.1#53

corp.example.com    nameserver = ns1.corp.example.com.
> set type=a
> server1.corp.example.com
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   server1.corp.example.com
Address: 192.168.33.2

И для www.example.com:

> set type=a
> www.example.com
Server:     127.0.0.1
Address:    127.0.0.1#53

Non-authoritative answer:
Name:   www.example.com
Address: 93.184.216.34

как было сказано, вам нужно разделить внутреннее адресное пространство и внешнее адресное пространство, например:

www.xyz.com в Интернете 1.1.1.1 (пример: P)

а www.xyz.com для внутреннего использования - 192.168.1.20 (пример)

вы не можете иметь одну и ту же точку хоста для двух разных адресов и ожидать, что получите один внутренний и один внешний, если вы не сделаете «просмотры».

вы по-прежнему можете подключиться к www.xyz.com, если IP-адрес является общедоступным, но тогда ваш маршрутизатор должен иметь возможность выполнять «жесткие» соединения, в основном он направляет трафик себе на свой открытый интерфейс. большинство маршрутизаторов не настроены на это. вы можете поддерживать 2 DNS, один внешний и один внутренний, и это имеет тот же эффект, что и представления.

у каждого корпоративного домена есть одна и та же проблема, так что это было сделано ;-)

На самом деле у вас нет записи A для domain.com нигде в вашей конфигурации.

Вы хотите добавить что-то вроде

   A       192.168.2.120
   A       192.168.2.121

как A записи чуть ниже (или чуть выше) ваших NS-записей. Это разрешит домен "domain.com" на два сервера.

(По разным причинам, хотя пара CNAME, указывающих на server1 и server2, была бы отличным ответом, в целом DNS этого не допускает.)

У вас есть записи A для всех серверов имен и хостов, но не для самого домена. Возможно, вам также понадобится запись MX для домена.