In Fire We Trust

In the darkest corner light will shine



03 Nov

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

Disclaimer: Описаните техники в този документ могат да ви помогнат но не е задължително да са напълно вярни и изчерпателни. Не поемам отговорност за каквито и да било реални или нереални, вреди, ползи, пропуски, паднали къщи или каквото и да е произтичащи от ползването или неползването на този документ.

История

  • 18.03.2007 - дребни промени
  • 11.12.2006 - подменена е схемата за осветяване на кода
  • 03.11.2006 - начална версия
  • 17.01.2007 - добавяне на връзки и модификация на локалната зонова конфигурация.

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

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

Схема на мрежичката ни
network-test

Целта е на нашият рутер, ДНС да присвоим невалиден домейн от типа 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.

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

Разни полезни връзки (без особенна подредба):

One Response to “Създаване на нов tld домейн”

  1. 1
    Stanislav Bozhkov Says:

    Браво браво, много ценна статия!

Leave a comment

XHTML: Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <code lang="language"> [lang_en][/lang_en] [lang_bg][/lang_bg] <ul> <ol>


In Fire We Trust

Say NO to trud