Hello. Pada postingan yg di sini sudah saya paparkan cara membuat nameserver sendiri menggunakan NSD yg diinstal pada server CentOS 7. Jika diikuti dengan benar maka hasilnya sekarang akan punya 2 buah nameserver yaitu misalnya ns1.eudns.ch dan ns2.eudns.ch.
Menambahkan satu atau dua domain baru supaya pointing ke ip webhosting tentu tidak susah karena tinggal modifikasi nsd.conf dan membuat sebuah zone file. Nah bagaimana jika domain yg akan ditambahkan jumlahnya banyak? Misal ada seratus domain lebih. Kalo mau setup satu persatu tentu bikin pegal dan stres kan. Oleh karena itu di sini saya akan bagikan sebuah hack supaya bisa menambahkan domain secara masal, menggunakan sebuah bash/shell script.
Langkahnya adalah sebagai berikut:
-
- Masuk ke direktori master yaitu
cd /etc/nsd/master
(di sinilah tersimpan semua zone files) - Buat sebuah file berisi daftar domain yg akan diseting nameservernya.
vim domains
Bikin satu domain per baris misalnya gini:example1.com example2.com example3.com example4.com example5.com example6.com example7.com
- Siapkan sebuah file berisi template zone file, vim templ yg isinya:
; ; NSD data file for example.com ; $TTL 3h @ IN SOA ns1.eudns.ch. admin.eudns.ch. ( 1 ; Serial 3h ; Refresh after 3 hours 1h ; Retry after 1 hour 1w ; Expire after 1 week 1h ) ; Negative caching TTL of 1 day ; @ IN NS ns1.eudns.ch. @ IN NS ns2.eudns.ch. example.com. IN A 66.128.97.7 www IN CNAME example.com.
- Copy konfigurasi nsd.conf yg sudah saya bahas pada postingan sebelumnya dan paste di direktori master
cp /etc/nsd/nsd.conf /etc/nsd/master
- Kemudian bikin bash script yg isinya:
#!/bin/bash template_file="templ" config_file="nsd.conf" domains_file="domains "while IFS= read -r domain || [[ -n "$domain" ]]; do zone_file="${domain}.zone" cp "$template_file" "$zone_file" sed -i "s/example\.com/$domain/g" "$zone_file" echo "Created zone file: $zone_file" echo "" >> "$config_file" echo "zone:" >> "$config_file" echo " name: \"$domain\"" >> "$config_file" echo " zonefile: \"$zone_file\"" >> "$config_file" done < "$domains_file"
- Beri nama file tsb misalnya zone.sh lalu jadikan executable dengan command
chmod +x zone.sh
- Jalankan dengan cara
./zone.sh
- Script tsb akan otomatis membikin zone files sebanyak daftar domain yg ada di file domains dengan isi seperti yg telah ditentukan sesuai template
- Jgn lupa copy-kan nsd.conf dari direktori master ke /etc/nsd (replace nsd.conf sebelumnya)
- Restart dengan command
service nsd restart
- Masuk ke direktori master yaitu
Saya pernah seting sekitar 150 domain dan dengan bantuan shell script ini prosesnya menjadi cepat dan enteng. Tanpa ribet dan pusing edit nsd.conf dan bikin zone file satu demi satu. Bikin daftar domainnya sama aja bikin capek donk? Oh tentu tidak, kan biasanya di registrar ada fitur select all domains dan bisa diekspor ke format csv, tinggal kita buka pake Excel atau Google spreadsheet, copy seluruh domain pada kolom domain lalu paste di file yg ada di langkah nomor 2 di atas.