Bagaimana saya bisa mengelola semua domain saya dengan konfigurasi minimal?

10

Ini adalah Pertanyaan Canonical tentang administrasi server DNS.

Saya memiliki seratus atau lebih domain. Semua domain ini perlu dikonfigurasikan secara identik, tetapi sepertinya buang-buang waktu untuk mengkonfigurasi zona baru dan / atau zonefile baru untuk setiap domain ini. Harus ada cara yang lebih baik untuk mengotomatisasi ini!

Saya pikir saya sedang mengerjakan sesuatu ... jika saya membuat zona bernama ., atau menggunakan beberapa fitur lain dalam perangkat lunak DNS saya untuk selalu mengembalikan IP spesifik ketika Acatatan diminta, ini sepertinya membuat saya cukup dekat dengan akhir yang saya inginkan hasil. Server saya merespons permintaan secara otoritatif dan jauh lebih mudah untuk dikelola!

Ini berfungsi baik sampai perangkat lunak validasi server nama mulai memeriksa domain ini. Saya menemukan bahwa saya dapat membuat sebagian besar kesalahan hilang dengan menambahkan NScatatan, tetapi perangkat lunak saya tidak akan membiarkan saya menempatkan lebih dari satu SOAcatatan dalam file zona yang sama.

Bagaimana cara saya mengatasi masalah multi SOArekaman ini?

Andrew B
sumber

Jawaban:

12

Kecuali saya salah paham pertanyaan, saya melakukan ini secara teratur dengan BIND, dan tampaknya baik-baik saja selama setiap zona benar - benar identik.

Pada server nama utama saya, saya punya named.confentri yang mengarah ke generik zonefile, misalnya

zone "example.com" {
        type master;
        file "primary/example.GENERIC";
};

zone "example.co.uk" {
        type master;
        file "primary/example.GENERIC";
};

dan kemudian file zone primary/example.GENERICyang mengatakan, mis

;; Start of Authority
@       IN      SOA     ns.teaparty.net. dns.gatekeeper.ltd.uk. (
                        2004091201      ; serial number YYYYMMDDNN
                        28800           ; refresh  8 hours
                        7200            ; retry    2 hours
                        864000          ; expire  10 days
                        3600 )          ; min ttl  1 day
;;
;;      Name Servers
                IN      NS      ns.teaparty.net.
                IN      NS      ns2.teaparty.net.

Dan saya sama sekali tidak mengetahui adanya masalah dengan zona ini. Saya terbuka untuk diberi tahu bahwa saya salah memahami pertanyaan, atau bahwa domain saya sebenarnya tidak berfungsi, tetapi sampai saat itu saya pikir itu berhasil untuk saya.

Perhatikan bahwa Anda tidak dapat melakukan trik yang sama dengan yang kedua ; setiap zona akan memerlukan file yang berbeda untuk disimpan. Tetapi karena konten file tersebut akan diisi dan terus diperbarui oleh zona xfers dari primer, ini bukan masalah besar.

MadHatter
sumber
4

Ada sejumlah cara pintas yang dapat Anda gunakan untuk membuat hidup Anda lebih mudah:

Jika Anda menggunakan Bind atau perangkat lunak serupa yang menggunakan file untuk menyimpan data zona: arahkan zona Anda ke file yang sama misalnya:

zone "example.net" {
    type master;
    file "/etc/bind/zone/default.zone";
};

zone "example.org" {
    type master;
    file "/etc/bind/zone/default.zone";
};

Karena Anda dapat menggunakan singkatan DNS tertentu, Anda dapat membuat file zona universal:

$TTL 1h      ; default expiration time of all resource records without their own TTL value
@  IN  SOA   ns1.example.com. username.example.com. ( 
                               20140218131405 ; Serial number YYYYMMDDHHMMSS
                                        28800 ; Refresh     8 hours
                                         7200 ; Retry       2 hours
                                       604800 ; Expire      7 days
                                        86400 ; Minimum TTL 1 day )
@             IN  NS    ns1.example.com.      ; ns1.example.com is a primary nameserver
@             IN  NS    ns2.example.com.      ; ns2.example.com is a backup nameserver
@             IN  MX    10 mail.example.com.  ; mail.example.com is the mailserver
@             IN  MX    20 mail2.example.com. ; the secondary mailserver
@             IN  A     192.0.2.1             ; IPv4 address for the bare domain
              IN  AAAA  2001:db8:10::1        ; IPv6 address for the bare domain
www           IN  A     192.0.2.1             ; www.domain
              IN  AAAA  2001:db8:10::1        ; IPv6 address for www.domain - note by starting the line with a blank it becomes the continuation of the previous record and this IPv6 record applies to www
wwwtest       IN  CNAME www                   ; wwwtest is an alias for www

Ini memanfaatkan fakta bahwa nama host dalam file zona yang tidak berakhir dengan titik .selalu diperluas dengan $ORIGINyang pada gilirannya secara implisit diatur ke nama zona. Dan @adalah kependekan dari $ ASAL.


Daripada menjaga masing-masing file zona dengan tangan, aktifkan metode yang berinteraksi secara terprogram dengan server nama Anda.

Saya telah menggunakan PowerDNS yang memungkinkan untuk RDMS sebagai back-end yang sangat cocok dengan tumpukan LAMP yang kami gunakan saat itu. Layanan Cloud seperti Amazon Route 53 juga mengekspos web-API.

Tetapi bahkan Bind terhormat juga mendukung Pembaruan dinamis yang merupakan metode untuk menambah, mengganti atau menghapus catatan di server master dengan mengirimkannya bentuk khusus dari pesan DNS. Format dan arti dari pesan-pesan tersebut ditentukan dalam RFC 2136 .

Pembaruan dinamis diaktifkan dengan memasukkan allow-updateatau update-policyklausa dalam pernyataan zona. Untuk info lebih lanjut, periksa Manual Referensi Administrator Bind .

HBruijn
sumber
2
Bagian pertama dari jawaban Anda sudah mati, tetapi saya tidak yakin bahwa DDNS berlaku di sini ... itu tidak dapat digunakan untuk menambah atau menghapus zona, yang mengalahkan apa yang kebanyakan orang dalam skenario ini coba capai. (tidak harus menyentuh named.conf untuk setiap zona add) Hal terdekat yang saya ketahui di BIND land adalah rndc addzoneopsi baru , tapi itu masih agak jelek karena akhirnya menghasilkan file konfigurasi dengan nama hash di direktori kerja untuk setiap zona yang ditambahkan.
Andrew B
Dalam memahami apa yang Anda coba katakan, tetapi interpretasi yang berbeda adalah bahwa kesulitan dengan banyak domain adalah dalam mempertahankan dan menggandakan pekerjaan. Automating / scripting DNS adalah sesuatu yang tidak terdokumentasi dengan baik.
HBruijn
4

Jawaban singkat

Jika Anda mencari pengaturan "konfigurasi nol" di BIND, itu tidak ada. Menyiapkan zona root ( .) sepertinya ide yang bagus, tetapi tidak, dan Anda perlu mencari solusi yang tidak melibatkan pemecahan DNS yang sesuai dengan kebutuhan Anda.

Jawaban panjang

Kami telah mendapatkan varian pertanyaan ini beberapa kali dalam setahun terakhir.

Jawabannya cukup sederhana di sini: Anda tidak dapat mengatur definisi zona tunggal. Perangkat lunak apa pun yang memungkinkan Anda menentukan atau mensintesis banyak SOAcatatan dalam konteks ini adalah perangkat lunak yang rusak , dan melakukan hal-hal yang rusak tidak pada topik untuk ServerFault. Anda juga perlu memilih perangkat lunak DNS yang membuat manajemen ini lebih mudah bagi Anda, atau Anda harus membuat strategi berbeda yang tidak melibatkan pintasan khusus ini.

Pasti ada beberapa trik yang dapat Anda gunakan untuk membuat hidup lebih mudah ... menggunakan BIND sebagai contoh, cukup lumrah untuk mendefinisikan beberapa zona yang semuanya merujuk ke file zona templat yang sama. Ini adalah perangkat lunak yang sah dan validasi tidak akan menemukan kesalahan dengan itu: lihat jawaban MadHatter. Kebanyakan orang melewati solusi ini karena masih "terlalu banyak pekerjaan" untuk menambahkan deklarasi zona setiap kali domain baru diperoleh, tetapi tidak ada opsi "konfigurasikan sekali dan berjalan pergi" untuk hosting semacam ini.

Versi BIND yang lebih baru mendukung opsi yang disebut allow-new-zonesyang akan memungkinkan Anda secara dinamis membuat definisi zona dengan cepat melalui rndc addzonefungsi baru . Anda mungkin ingin melihatnya dan melihat apakah itu sesuai dengan kebutuhan Anda.

Selain itu solusi yang disarankan, opsi Anda agak terbatas. Terkadang Anda hanya terjebak dengan melakukan pekerjaan jika perangkat lunak tidak melakukan hal-hal seperti yang Anda inginkan.

Andrew B
sumber
-2

Ketika Anda mengatakan "domain harus dikonfigurasi secara identik", apakah maksud Anda mereka harus menyimpan catatan sumber daya yang sama? Dalam hal itu, bukankah DNAMERR untuk semua kecuali satu domain akan menjadi solusi yang lebih bersih?

Saya tidak bisa mengalahkan triknya dengan @MadHatter mengimpor file template yang sama sambil tetap ketat dalam lingkup pertanyaan Anda. Saya hanya bisa menawarkan pendekatan serupa untuk LDAPbackend (dalam kasus saya, digunakan dengan powerDNS): tambahkan associatedDomainatribut untuk catatan SOA dan NS yang relevan, seperti:

dn: dc=vanitydomains,ou=DNS,dc=myDIT
objectClass: dNSDomain2
objectClass: domainRelatedObject
dc: vanitydomains
associatedDomain: vanitydomain.ORG
associatedDomain: vanitydomain.NET
associatedDomain: vanitydomain.COM
associatedDomain: vanitydomain.INFO
sOARecord: NS1.example.com  sysadmin.example.com 2011100701 28800 1800 2592000 10800
dNameRecord: example.com
nSRecord: NS1.example.com
nSRecord: NS2.example.com
sema
sumber
Sayangnya teknik DNAME merindukan puncak zona karena keterbatasan RFC. Sintesis CNAME yang dihasilkan dari catatan DNAME masih tunduk pada batasan yang sama dari catatan CNAME non-sintetis. Tidak seperti solusi MadHatter, hasilnya sangat jauh dari 100% RRsets identik.
Andrew B