Panduan administrator Spanel 1.3/DNS

Ringkasan

Berikut ringkasan menyeluruh tentang servis/server DNS di Spanel:

Server hosting:

  • resolver PowerDNS (pdns-recursor) mendengarkan di 127.0.0.1 (opsional, dapat dimatikan, setting: features/dns_resolver)
  • file-file zona DNS dalam format YAML ada di akun hosting masing-masing: /u/NAMAUSER/sysetz/zone=*
  • konfigurasi daftar server DNS yang ingin dihubungi: dns/servers
  • mengirimkan zona DNS ke server DNS terdaftar via remote API Spanel (HTTPS port 950, atau 443). Modul API: DNS::Server::PowerDNS. Fungsi API: sync_zones, delete_zones.
  • Setiap user selesai mengedit zona DNS lewat antarmuka web Spanel, sebuah job akan ditambahkan untuk spanel-jobd agar melakukan sinkronisasi (remote API Spanel ke server DNS, lihat poin sebelumnya) dalam 1-5 menit berikutnya.

Server DNS:

  • resolver PowerDNS (pdns-recursor) mendengarkan di 127.0.0.1 (opsional, dapat dimatikan, setting: features/dns_resolver)
  • DNS server PowerDNS mendengarkan di IP publik. Backend mysql dan bind. (setting: features/dns_server)
  • Database MySQL, user pdns, db pdns. Disetup oleh spanel-setup.
  • File-file bind ditaruh di /etc/powerdns-bind, diisi oleh skrip /c/sbin/get-dns-zone-files
  • menerima zona-zona DNS server hosting Spanel lewat remote API via HTTPS port 950. Daemon: spanel
  • menerima zona-zona DNS server hosting cPanel/Plesk lewat SSH tanpa password (opsional). Skrip: /c/sbin/get-dns-zone-files

Perangkat lunak

Untuk server DNS, saat ini Spanel menggunakan PowerDNS dengan backend MySQL.

Untuk resolver, juga menggunakan PowerDNS.

Di versi Spanel lalu (1.3.8 dan sebelumnya) Spanel menggunakan Bind dan DJBDNS, namun saat ini demi kesederhanaan dan kecepatan update zona, Spanel tidak mendukung/menggunakan kedua perangkat lunak tersebut lagi.

Data zona

Setiap zona domain milik pengguna disimpan di dalam file YAML di /u/USER/sysetc/zone=DOMAIN, di mana USER adalah nama user dan DOMAIN adalah nama domain. Format zona ini cukup intuitif dan mudah dimengerti. Contoh zona dapat dilihat di distribusi Spanel di direktori share/sample-configs/dns-zone-templates/*.yaml. Contohnya ditampilkan di sini, mis file /u/user1/sysetc/zone=example.org:

records:
 - {isLocked: Yes, owner: , type: SOA , host: , email: 'hostmaster@example.com', 
 serial: 2007042701, refresh: 7200, retry: 1800, expire: 1209600, ttl: 300}
 - {isLocked: Yes, owner: , type: NS , ttl: 172800, host: 'ns1.example.com'}
 - {isLocked: Yes, owner: , type: NS , ttl: 172800, host: 'ns2.example.com'}
 - {isLocked: Yes, owner: , type: A , address: '^'}
 - {isLocked: Yes, owner: , type: MX , host: 'mail', pref: 10}
 - {isLocked: Yes, owner: 'mail' , type: A , address: '^'}
 - {isLocked: Yes, owner: '*' , type: A , address: '^'}
 - {isLocked: Yes, owner: '*' , type: MX , host: 'mail', pref: 10}
 - {isLocked: No, owner: , type: TXT , text: 'v=spf1 a mx ~all'}
 - {isLocked: No, owner: '*' , type: TXT , text: 'v=spf1 a mx ~all'}

File YAML ini digunakan karena mudah diparsing dan dijadikan zona Bind, TinyDNS, dsb. Selain itu untuk A record format file ini mendukung notasi ^ (yang akan diganti alamat IP server) dan ^NAMASERVERLAIN (yang akan diganti menjadi alamat IP server lain yang disebutkan berdasarkan nama. Alamat IP server tersebut saat ini dicari dari /etc/spanel/servers/NAMASERVERLAIN.yaml).

Proses update zona

Pengguna dapat menambah/mengedit/menghapus zona lewat antarmuka web Spanel (di menu Domain > Kelola Domain & DNS).

Setelah pengguna selesai mensubmit perubahannya di web, Spanel akan mengupdate database PowerDNS MySQL di semua server DNS (yang, bergantung pada setup Anda, bisa saja server itu sendiri ataupun satu atau lebih server DNS dedicated). Dengan demikian perubahan akan secara instan tercermin di semua server DNS.

Server DNS yang dihubungi adalah yang tercantum di konfigurasi server (/etc/spanel/spanel.yaml) di bagian dns/servers, mis:

...
dns: 
 servers: [dns1.company.com, dns2.company.com, dns3.company.com]

Spanel akan meresolve dulu semua nama server DNS menjadi IP untuk menghindari duplikasi.

Jika misalnya dns1.company.com terdiri dari beberapa server dengan IP berbeda, Anda menyebutkan alamat IP-nya saja:

dns: 
 servers: [1.2.3.4, 1.2.3.5, dns2.company.com, dns3.company.com]

Jika misalnya dns2.company.com dan dns3.company.com adalah server yang sama dengan IP sama, maka tidak akan diupdate dua kali melainkan satu kali saja (duplikasi dihindari).

Intinya, setiap elemen di konfigurasi tersebut mencerminkan alamat mesin fisik server DNS.

Jika server DNS Anda hanyalah server yang sama dengan server hosting dan tidak ada server lainnya, kosongkan saja konfigurasi dns/servers ini.

Proses menghubungi server DNS

lokal

Jika server DNS-nya adalah server hosting itu sendiri, maka Spanel akan langsung mengakses database MySQL di server tersebut menggunakan user PowerDNS. Nama database, nama user database, dan password untuk mengakses MySQL akan diambil dari file /etc/spanel/passwords.yaml:

powerdns_mysql_db: ...
powerdns_mysql_user: ...
powerdns_mysql_pass: ...

remote

Jika server DNS-nya adalah server lain/remote, maka server hosting Spanel akan menghubungi server DNS ini melalui mekanisme remote API call di port 950 dengan protokol HTTPS. Mekanisme ini membutuhkan setup user dan password ‘hosting-server’. Ini dijelaskan di artikel Panduan administrator Spanel 1.3/DNS/Setup/Separated.

Server hosting cPanel dan WinPlesk

Kedua panel kendali ini menggunakan Bind. Server DNS berbasis Spanel dapat mendukung menjadi DNS untuk kedua jenis server ini melalui backend Bind PowerDNS. Lihat artikel ini untuk detil cara setupnya: Panduan administrator Spanel 1.3/DNS/Setup/Server/cPanel dan Panduan administrator Spanel 1.3/DNS/Setup/Server/WinPlesk.

Resita has written 705 articles