SASA DESIGN

Open Your mind, Open Your Source Code!

Създаване на нов tld домейн

13 август, 2008 – 5:49 pm

Top Level Domain – базов суфикс на име от типа com, net, org. Използва се за да се обединят в една логична зона няколко имена. А защо може да искаме да си създадем подобно животно. Елементарно – за да не замърсяваме света с нашите тестове. Мотивацията зад това е че ако нещо развалим или умишлено направим погрешно ще сме поне частично изолирани и теоретично няма да навредим на почти никой. Представете си ситуацията при която решавате да хостнете популярен домейн само за някакви тестове. И това преминава в целият интернет. Ударът от трафик изобщо няма да ви хареса, уверявам ви.

Пример: Имаме малка локална мрежа и искаме да и присвоим домейн (нерегистриран) който освен това е невалиден за да предпазим останалата част от света от грешките или експериментите които ще направим.

Целта е на нашият рутер, ДНС да присвоим невалиден домейн от типа internal.tld

За целта ще използваме комбинация от bind, dhcpd и малко мислене :) )

Следват конфигурации с малко обяснения в самите конфигурации

Конфигурация за DHCPD

#
# Sample configuration file for ISC dhcpd for Debian
#
# $Id: dhcpd.conf,v 1.4.2.2 2002/07/10 03:50:33 peloy Exp $
#

authoritative;
default-lease-time 14400;
max-lease-time 86400;

# описваме мрежата от която ще раздаваме адреси
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.10 192.168.0.200;
# нашият собствен DNS може да се добавят и други
  option domain-name-servers 192.168.0.1;
# Нашият домейн (фалшив в случая)
  option domain-name "internal.tld";
# Рутера (gateway)
  option routers 192.168.0.1;
# маска и разни други дреболии за да ни е малко по спокоен живота
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.0.1;
  option default-ip-ttl 64;
  option default-tcp-ttl 64;
  option time-offset 7200;
  option netbios-name-servers 192.168.0.1;
  option netbios-node-type 8;
}

Като цяло тази конфигурация дефинира обхват от адреси които ще се раздават от нашият dhcp сървър като той подава и допълнителна информация. За справка какво точно значат/правят опциите

man dhcp
man dhcpd
man dhcpd.conf
http://www.isc.com/dhcp

Следват конфигурациите на bind. Както ще забележите използвал съм една от възможностите на bind и по точно така наречените изгледи. Това спомага за хостването на различни домейни в зависимост от къде идва заявката.

/etc/bind/named.conf

// This is the primary configuration file for the BIND DNS server named.
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";

include "/etc/bind/named.conf.local";

/etc/bind/named.conf.options

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

        // If there is a firewall between you and nameservers you want
        // to talk to, you might need to uncomment the query-source
        // directive below.  Previous versions of BIND always asked
        // questions using port 53, but BIND 8.1 and later use an unprivileged
        // port by default.

        query-source address * port 53;

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

//      forwarders {
//              0.0.0.0;
//      };

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { none; };
        recursion no;
};

/etc/bind/named.conf.local – реално тук са нашите конфигурации

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

// ограничения кой може да задава въпроси
acl internal {
        192.168.0.0/24;
        127.0.0.0/8;
};

view "internal" {
        match-clients { 192.168.0.0/24; };
        // позволяваме рекурсия за да обслужваме заявки за домейни които не хостваме
        recursion yes;

        zone "internal.tld" {
        // реалната зона която ние си създаваме (с фалшив TLD)
                type master;
                file "/etc/bind/internal.tld-forward";
                // описанието на самата зона (правата)
                allow-transfer { internal; };
                allow-update { internal; };
        };

        zone "0.168.192.in-addr.arpa" {
                type master;
                file "/etc/bind/internal.tld-reverse";
                // обратната зона
                allow-transfer { internal; };
                allow-update { internal; };
        };
        // prime the server with knowledge of the root servers
        zone "." {
                type hint;
                file "/etc/bind/db.root";
        };

        // be authoritative for the localhost forward and reverse zones, and for
        // broadcast zones as per RFC 1912

        zone "localhost" {
                type master;
                file "/etc/bind/db.local";
        };

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

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

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

В случая нямаме публичен изглед но след време и това ще стане. Ще забележите че във изгледа са добавени няколко специфични локални зони (те са налични в оригиналната конфигурация). Сложени са там за да се покрие изискването, когато се ползват изгледи всички зони да са в определен изглед. Не би било проблем да се създаде изглед само за тях но това не е необходимо. Като допълнителен бонус или мотиватор може да се отбележи че така изчезва едно предупреждение в журналният файл.

Следват самите зони:

/etc/bind/internal.tld-forward

; BIND db file for internal.tld

$TTL 86400

@       IN      SOA     vratar.internal.tld.      root. (
                        2006091701      ; serial number YYMMDDNN
                        28800           ; Refresh
                        7200            ; Retry
                        864000          ; Expire
                        86400           ; Min TTL
                        )
                NS      vratar.internal.tld.

$ORIGIN internal.tld.

vratar  IN      A       192.168.0.1
spitfire        IN      A       192.168.0.2

/etc/bind/internal.tld-reverse

; BIND reverse data file for internal.tld

$TTL    86400
@       IN      SOA     vratar.internal.tld. root. (
                     2006091701         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL

@       IN      NS      vratar.internal.tld.
1       IN      PTR     vratar.
2       IN      PTR     spitfire.

Зоните са малко постни но поне дават добра идея какво и защо се прави. Надявам се да ви е полезно :) )

Източник: Getoto

Напиши коментар