Cara Install dan Setting DNS Server di VPS CentOS 7
Pada tutorial sebelumnya saya telah membahas tentang cara setting DNS server di CentOS 7 pada jaringan LAN, kali ini DNS server diinstall di VPS atau server yang menggunakan Public IP dan menggunakan nama domain yang bisa diakses melalui internet. Secara umum caranya sama, yang berbeda adalah server menggunakan Public IP, nama domain yang sudah terdaftar, dan konfigurasi Private Nameserver beserta Nameserver pada nama domain.
Kebutuhan Instalasi
- Server: CentOS 7
- Server memakai Public IP 45.32.118.75
- Client: OS apa saja yang terhubung ke internet
- Domain: sysadmintraining.tk, dapatkan gratis di Freenom
Konfigurasi Nama Domain
Nama domain dikonfigurasi terlebih dahulu karena perubahan nameserver pada nama domain membutuhkan waktu propagasi.
Konfigurasi Private Nameserver pada nama domain, di Freenom konfigurasi ini berada di Manage Domain->Management Tools->Register glue records. Masukkan nama nameserver misalnya ns1.sysadmintraining.tk dan Public IP DNS server.
Lalu konfigurasi Nameserver, Manage Domain->Management Tools->Nameservers. Pilih Use custom nameserver dan masukkan nameserver yang telah dikonfigurasi sebelumnya.
Install DNS Server
Install paket bind
1 | yum install bind bind-utils -y |
Konfigurasi DNS Server
Backup terlebih dahulu file konfigurasi named.conf.
1 2 | cd /etc cp named.conf named.conf.backup |
Buka file konfigurasi.
1 | nano /etc/named.conf |
Ubah atau tambahkan baris kode di bawah ini.
1 2 3 | listen-on port 53 { 127.0.0.1; 45.32.118.75; }; allow-query { localhost; 45.32.118.75; any; }; allow-query-cache { localhost; 45.32.118.75; any; }; |
Hasilnya seperti pada gambar di bawah ini.
Kemudian tambahkan zone (nama domain) dan reverse (alamat IP). Pada opsi file adalah nama file konfigurasi, penulisa nama file tidak harus seperti itu.
1 2 3 4 5 6 7 8 9 | zone "sysadmintraining.tk" { type master; file "/etc/named/sysadmintraining.tk.zone"; }; zone "75.118.32.in-addr.arpa" IN { type master; file "/etc/named/75.118.32.rev"; }; |
Hasilnya seperti pada gambar di bawah ini.
Simpan, keluar dari nano.
Membuat file zone forward.
1 | nano /etc/named/sysadmintraining.tk.zone |
Isinya adalah konfigurasi zone, berisi nama domain, sub-domain, dan alamat IP web server.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $TTL 86400 @ IN SOA sysadmintraining.tk. root.sysadmintraining.tk. ( 2018092501 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS ns1.sysadmintraining.tk. @ IN NS ns2.sysadmintraining.tk. @ IN A 45.32.118.75 ns1 IN A 45.32.118.75 ns2 IN A 45.32.118.75 www IN CNAME sysadmintraining.tk. blog IN A 45.32.118.75 |
Selanjutnya membuat zone reverse.
1 | nano /etc/named/75.118.32.rev |
Isinya seperti di bawah ini.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $TTL 86400 @ IN SOA sysadmintraining.tk. root.sysadmintraining.tk. ( 2018092501 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) IN NS ns1.sysadmintraining.tk. IN NS ns2.sysadmintraining.tk. @ IN A 45.32.118.75 ns1 IN A 45.32.118.75 ns2 IN A 45.32.118.75 75 IN PTR sysadmintraining.tk. 75 IN PTR blog.sysadmintraining.tk. |
Setelah membuat file zone dan reverse, aktifkan dan restart service named.
1 2 | systemctl enable named systemctl restart named |
Ubah file DNS resolver.
1 | nano /etc/resolv.conf |
Isinya
1 2 3 | search sysadmintraining.tk nameserver 45.32.118.75 nameserver 8.8.8.8 |
Install Web Server
Install web server untuk pengujian akses nama domain di web browser.
1 2 3 | yum install httpd -y systemctl enable httpd systemctl start httpd |
Konfigurasi Firewall
Konfigurasi firewall VPS agar mengijinkan protokol DNS (Port 53 TCP/UDP) dan HTTP (Port 80 TCP).
Atau jika menggunakan FirewallD di CentOS, konfigurasikan seperti di bawah ini.
1 2 3 | firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=dns firewall-cmd --reload |
Pengujian
Pengujian pertama dengan melakukan nslookup.
1 | nslookup sysadmintraining.tk |
1 2 3 4 5 | Server: 45.32.118.75 Address: 45.32.118.75#53 Name: sysadmintraining.tk Address: 45.32.118.75 |
Pengujian kedua dengan melakukan dig.
1 | dig sysadmintraining.tk |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> sysadmintraining.tk ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34606 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;sysadmintraining.tk. IN A ;; ANSWER SECTION: sysadmintraining.tk. 86400 IN A 45.32.118.75 ;; AUTHORITY SECTION: sysadmintraining.tk. 86400 IN NS ns1.sysadmintraining.tk. sysadmintraining.tk. 86400 IN NS ns2.sysadmintraining.tk. ;; ADDITIONAL SECTION: ns1.sysadmintraining.tk. 86400 IN A 45.32.118.75 ns2.sysadmintraining.tk. 86400 IN A 45.32.118.75 ;; Query time: 0 msec ;; SERVER: 45.32.118.75#53(45.32.118.75) ;; WHEN: Kam Sep 27 04:12:51 UTC 2018 ;; MSG SIZE rcvd: 132 |
Pengujian ketiga mengakses nama domain melalui web browser.
Selamat mencoba 🙂
Malam pak,
Bagus nih tutorialnya…
Saya coba work perfect, tapi ada sedikit kendala saat create DNS di user itu tidak bisa
Kira2 apanya?
maksudnya create DNS di user itu seperti apa?
Halo Mas Musa,
Saya mengikuti tutorial Mas Musa untuk setting BIND, saya praktik pada 1 VPS. Kemudian saya juga buat Child NS saya mengarah ke Ip public-nya. untuk menembak DNS Manager (DNS) yang ada di VPS saya, everything is ok Mas. Setting sudah ok, namun saya mau nanya mas. Kalo si DNS Manager tersebut mengarah ke IP Public yg sama, kemudian di dalam VPS itu ada settingan BIND dan Virtual Host nya juga apakah si Virtual Host nya akan berjalan juga?
Dengan bajet yg minim saya ingin membuat DNS Manager dari 1 VPS saya, kemudian melakukan pointing ke alamat ip yang sama dimana di dalam VPS tersebut VHost nya saya aktifkan, agar Child NS saya bisa eksklusif memakai NS Pribadi dan bisa di pakai beberapa alamat web yang mau saya gunakan.
bisa berjalan juga, karena fungsinya memang berbeda. silakan langsung dicoba.
malam pak saya sudah coba tutorialnya semua.. untuk jaringan lokal DNSnya sudah jalan pak.. tapi kenapa di internet tidak bisa resolved.. mohon bantuannya ya pak..
DNS servernya install di VPS, ada IP Publik Statik, sama seperti di tutorial. kalau di jaringan lokal atau private, ya hanya bisa terbaca di jaringan lokal.
75.118.32
45.32.118.75
diantara 2 itu yg harus diganti jadi ip kita yg mana ya gan?
soalnya saya dapet respond :
Server: 8.8.8.8
Address: 8.8.8.8#53
saya pake vps dari google cloud
pakai IP Public dari VPS nya.
Mas Musa,
bermanfaat dan jelas mas, thanks.. namun masih ada pertanyaan:
1. saya sudah coba, pas pengetesan terakhir buka lewat web browser ada error connection time out, apa harus disiapkan dulu index.php di folder /var/www/html nya?
2. kalau saya ada 2-3 domain yang mau diarahkan ke vps yg sama, apa perlu masing2 domain bikin NS masing2? atau cukup menggunakan NS dr salah satu domain? selain ditambahkan di virtualhost, domain 2 dan 3 nya ditambahkan juga kah di zone forward dan rev nya mas? sebagai cname atau A type? mhn saran /rujukan yang bisa dipelajari mas.. terima kasih
1. periksa firewall
2. saya sendiri belum pernah coba, sepertinya masing-masing bisa dibuatkan private nameserver, arahkan ke IP vps. record A dan cname tetap harus ada.
mantap, works gan musa amin..
ilmu yang sangat berguna … thank you
mantap, work 100% mas…
cuman saya ada sedikit kendala, kalo akses ke ip public/login tampilan loginya tampil, kalo pake domain/login , tidak tampil muncul “The requested URL /login was not found on this server.” ini knp yah mas ?
coba konfigurasi virtual host apache untuk domainnya.
siang mas,
domain utama jalan tpi untuk sub domain masih belum ke baca
untuk menambahkan subdomain gmn ya pak ?
tambahkan record tipe CNAME
systemctl status named
kok failed ya pak
baca pesan errornya kenapa bisa failed.