Dynamic DNS dengan GoDNS sebagai Alternative ddclient di FreeBSD

· 2 min read

Semua fitur yang tersedia di GoDNS tidak kalah dengan aplikasi sejenis, yaitu ddclient. Anda harus mencobanya agar dapat merasakan manfaat dari GoDNS.

GoDNS merupakan alat klien DNS dinamis (DDNS). GoDNS ditulis dalam bahasa Go Lang dan merupakan proyek DynDNS sumber terbuka. GoDNS mendukung berbagai penyedia domain dan memungkinkan pembuatan notifikasi saat terjadi perubahan melalui email (SMTP) atau menggunakan layanan seperti Discord, Pushover, Slack, dan Telegram.

GoDNS mendukung banyak platform seperti Linux, FreeBSD, MacOS, Windows, dan lainnya. Keberadaan aplikasi ini terbukti sangat tangguh, stabil, dan ringan. Bahkan, GoDNS dapat menggantikan ddclient yang telah lama menguasai aplikasi Dynamic DNS (DDNS).

Sama seperti aplikasi ddclient, GoDNS juga mendukung beberapa penyedia DNS. Gambar di bawah ini merupakan penyedia DNS yang didukung oleh GoDNS.

Dalam tutorial ini, kita akan mempelajari cara menginstal dan mengonfigurasi Dynamic DNS (DDNS) pada server FreeBSD melalui GoDNS dan HE.net.

Untuk menggunakan GoDNS di FreeBSD, kita asumsikan:
  • Aplikasi GO telah diinstal di FreeBSD.
  • Anda telah mendaftarkan (sekarang memiliki) sebuah domain.
  • Domain telah didelegasikan ke penyedia DNS yang didukung, seperti HE.net atau cloudflare.
  • Jika Anda belum memiliki domain, Anda juga dapat masuk ke DuckDNS (dengan akun sosial) dan mendapatkan subdomain di domain duckdns.org secara gratis.

Spesifikasi Sistem

OS: FreeBSD 13.2
domain: datainchi.com
Hostname: ns7
IP Address: 192.168.5.2
Land Card: nfe0
Provider DDNS: HE.net


A. Cara Instal GoDNS di FreeBSD

Sebelum kita memulai proses instalasi, Anda harus membaca artikel tentang cara menginstal dan mengonfigurasi GO di FreeBSD.

Karena GoDNS ditulis dalam Bahasa Go, pastikan FreeBSD Anda telah menginstal GO. Di FreeBSD, repositori GoDNS tersedia di port sistem, tetapi saya lebih suka menginstalnya dengan paket biner. Anda dapat mengemas seluruh pustaka di situs GitHub resmi dan menjalankannya dalam bahasa Go. Metode ini memastikan bahwa itu adalah versi terbaru.
root@ns7:~ # cd /usr/local/etc
root@ns7:/usr/local/etc # git clone https://github.com/TimothyYe/godns.git
Cloning into 'godns'...
remote: Enumerating objects: 3196, done.
remote: Counting objects: 100% (277/277), done.
remote: Compressing objects: 100% (90/90), done.
remote: Total 3196 (delta 200), reused 236 (delta 181), pack-reused 2919
Receiving objects: 100% (3196/3196), 1.72 MiB | 433.00 KiB/s, done.
Resolving deltas: 100% (1660/1660), done.
Setelah mengkloning godns dari repositori Github, lanjutkan dengan perintah "go build" dan "go install".
root@ns7:/usr/local/etc # cd godns/cmd/godns
root@ns7:/usr/local/etc/godns/cmd/godns # go mod download
root@ns7:/usr/local/etc/godns/cmd/godns # go build
root@ns7:/usr/local/etc/godns/cmd/godns # go install
root@ns7:~ # mkdir -p /var/run/godns
root@ns7:~ # chmod +x /var/run/godns

Perintah go mod download akan menginstal file dependensi GoDNS, sedangkan perintah go install akan menghasilkan file bin "godns". Jalankan perintah move agar file bin "godns" dapat berjalan pada sistem FreeBSD.
root@ns7:/usr/local/etc/godns/cmd/godns # mv /root/go/bin/godns /usr/local/bin


B. Cara Konfigurasi GoDNS

Sebelum mengonfigurasi, mari kita lihat panduan untuk menggunakan GoDNS.
root@ns7:/usr/local/etc/godns/cmd/godns # godns -h

 ¦¦¦¦¦¦+  ¦¦¦¦¦¦+ ¦¦¦¦¦¦+ ¦¦¦+   ¦¦+¦¦¦¦¦¦¦+
¦¦+----+ ¦¦+---¦¦+¦¦+--¦¦+¦¦¦¦+  ¦¦¦¦¦+----+
¦¦¦  ¦¦¦+¦¦¦   ¦¦¦¦¦¦  ¦¦¦¦¦+¦¦+ ¦¦¦¦¦¦¦¦¦¦+
¦¦¦   ¦¦¦¦¦¦   ¦¦¦¦¦¦  ¦¦¦¦¦¦+¦¦+¦¦¦+----¦¦¦
+¦¦¦¦¦¦+++¦¦¦¦¦¦++¦¦¦¦¦¦++¦¦¦ +¦¦¦¦¦¦¦¦¦¦¦¦¦
 +-----+  +-----+ +-----+ +-+  +---++------+

GoDNS 0.1
https://github.com/TimothyYe/godns

Usage of godns:
  -c string
        Specify a config file (default "./config.json")
  -h    Show help
Buat file config.json dan letakkan di folder "/usr/local/etc/godns".
root@ns7:~ # touch /usr/local/etc/godns/godns-config.json
root@ns7:~ # chmod -R 777 /usr/local/etc/godns/godns-config.json
Berikut adalah contoh skrip dari file "/usr/local/etc/godns/godns-config.json".

{
  "provider": "HE",
  "password": "maCpVY9JnjEXJCi1",
  "email": "kanakarobih",
  "domains": [
    {
      "domain_name": "datainchi.com",
      "sub_domains": ["www"]
    }
  ],
  "ip_urls": [
    "https://dns.he.net"
  ],
  "ipv6_urls": ["https://ipify.org"],
  "ip_type": "IPv4",
  "interval": 300,
  "resolver": "8.8.8.8",
  "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36",
  "ip_interface": "nfe0",
  "socks5_proxy": "",
  "use_proxy": false,
  "debug_info": true,
  "proxied": false,
  "notify": {
    "telegram": {
      "enabled": false,
      "bot_api_key": "",
      "chat_id": "",
      "message_template": ""
    },
    "mail": {
      "enabled": false,
      "smtp_server": "",
      "smtp_username": "",
      "smtp_password": "",
      "smtp_port": 25,
      "send_from": "",
      "send_to": ""
    }
  },
  "webhook": {
    "enabled": false,
    "url": "http://localhost:5000/api/v1/send",
    "request_body": "{ \"domain\": \"{{.Domain}}\", \"ip\": \"{{.CurrentIP}}\", \"ip_type\": \"{{.IPType}}\" }"
  }
}


Pada skrip di atas, "password" dan "email" berasal dari penyedia DDNS HE.net. Email berasal dari Nama Akun HE.net.


dinamic dns he net


Jalankan GoDNS,
root@ns7:~ # godns -c=/usr/local/etc/godns/godns-config.json
INFO[0000] Creating DNS handler with provider: HE
INFO[0000] GoDNS started, starting the DNS manager...
DEBU[0001] get ip success by: https://dns.he.net, online IP: 192.168.0.1
DEBU[0001] get ip success by: https://dns.he.net, online IP: 192.168.0.1
INFO[0002] Update IP success: badauth
DEBU[0002] Cached IP address: 192.168.0.1
DEBU[0002] DNS update loop finished, will run again in 300 seconds
Anda telah berhasil menjalankan GoDNS di server FreeBSD. Namun sayangnya daemon DoDNS tidak berjalan secara otomatis. Oke, sekarang kita akan membuat daemon GoDNS berjalan secara otomatis menggunakan skrip rc.d.

Buat file godns rc.d di folder /usr/local/etc/rc.d.
root@ns7:~ # touch /usr/local/etc/rc.d/godns
root@ns7:~ # chmod +x /usr/local/etc/rc.d/godns
Pada file "/usr/local/etc/rc.d/godns" tulis skrip di bawah ini.

#!/bin/sh

# PROVIDE: godns
# REQUIRE: DAEMON LOGIN
# KEYWORD: shutdown

#
# Add the following line to /etc/rc.conf to enable godns:
# godns_enable (bool):		Set to "NO" by default.
#				Set it to "YES" to enable godns.
# godns_flags (str):		Custom additional arguments to be passed
#				to godns (default empty).
# godns_conf_dir (str):		Directory where ${name} configuration
#				data is stored.

. /etc/rc.subr

name="godns"
rcvar=godns_enable

load_rc_config ${name}

: ${godns_enable:="NO"}
: ${godns_user:="nobody"}
: ${godns_group:="nogroup"}
: ${godns_conf_dir="/usr/local/etc"}

start_precmd=godns_precmd
stop_postcmd=godns_stop_postcmd

procname="/usr/local/bin/${name}"
pidfile="/var/run/${name}/${name}.pid"
logfile="/var/log/${name}/${name}.log"

required_files="${godns_conf_dir}/${name}-config.json"

command="/usr/sbin/daemon"
command_args="-f -t ${name} -o ${logfile} -p ${pidfile} ${procname} -c ${required_files} ${godns_args}"

godns_precmd()
{
	local rundir=${pidfile%/*}
	if [ ! -d $rundir ] ; then
		install -d -m 0755 -o ${godns_user} -g ${godns_group} $rundir
	fi
	local logdir=${logfile%/*}
	install -d -m 0750 -o ${godns_user} -g ${godns_group} $logdir
}

godns_stop_postcmd()
{
	rm -f "$rundir"
}

run_rc_command "$1"

Kemudian pada file "/etc/rc.conf", tambahkan skrip berikut.
root@ns7:~ # ee /etc/rc.conf
godns_enable="YES"
godns_user="nobody"
godns_group="nogroup"
godns_conf_dir="/usr/local/etc/godns"
Langkah terakhir adalah menjalankan GoDNS, apakah dapat berjalan otomatis di server FreeBSD.
root@ns7:~ # service godns restart
Dengan skrip rc.d, GoDNS Anda dapat berjalan secara otomatis. Anda tidak perlu lagi menjalankannya secara manual.

Semua fitur yang tersedia di GoDNS tidak kalah dengan aplikasi sejenis, yaitu ddclient. Anda harus mencobanya agar dapat merasakan manfaat dari GoDNS. Kami telah mencobanya, dan hasilnya sangat memuaskan.
Subscribe on LinkedIn Dynamic DNS dengan GoDNS sebagai Alternative ddclient di FreeBSD

Enclosures Link: Dynamic DNS dengan GoDNS sebagai Alternative ddclient di FreeBSD

Silahkan Berkomentar, Kakak...! Bunda...!

Posting Komentar