sumarsono.com
Take it with a grain of salt


Cara Mudah Bikin DNS Server Lokal Pakai CoreDNS

Posted on

Wtf is coreDNS?

CoreDNS is a DNS server. It is written in Go. It can be used in a multitude of environments because of its flexibility. CoreDNS is licensed under the Apache License Version 2, and completely open source. -- coredns.io

Singkat cerita, aku pengen ketika temenku buka browser, ngetik alamat fe.anuanku.dev dia akan disajikan halaman web dari komputer dengan alamat 192.168.100.137. Terus, kalau temenku akses api.anuanku.dev akan disajikan API dari komputer dengan alamat 192.168.100.137. Paham kan ya? seolah-olah kaya akses vhost di vps.

Kenapa gk pakai cara edit file hosts saja? ribet cuy. Ya masa aku nyuruh temenku edit host file. Gak enak juga nyuruh-nyuruh haha. Lanjut ke step by step yang ku tempuh:

Persiapan directory

mkdir ~/coredns/coredns-config

Bikin ~/coredns/docker-compose.yaml yang berisi

version: '3.7'
services:
  coredns: 
    image: coredns/coredns
    restart: always
    command: -conf /coredns-config/Corefile
    ports:
      - 53:53/udp
    volumes:
      - ./coredns-config:/coredns-config/

Bikin ~/coredns/coredns-config/Corefie yang berisi

.:53 {
    forward . 9.9.9.9
    log
    errors
}

anuanku.dev:53 {
    file /coredns-config/anuanku.dev.db
    log
    errors
}

Bikin ~/coredns/coredns-config/anuanku.dev.db yang berisi

anuanku.dev.        IN  SOA dns.anuanku.dev. sumar.anuanku.dev. 2019110517 7200 3600 1209600 3600
fe.anuanku.dev.	IN	A	192.168.100.137
api.anuanku.dev.	IN	A	192.168.100.137

Selesai persiapan, langsung eksekusi

docker-compose -f ~/coredns/docker-compose.yaml up -d

Hasilnya jika di test:

drill @127.0.0.1 fe.anuanku.dev
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 35602
;; flags: qr aa rd ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION:
;; fe.anuanku.dev.	IN	A

;; ANSWER SECTION:
fe.anuanku.dev.	0	IN	A	192.168.100.137

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 2 msec
;; SERVER: 127.0.0.1
;; WHEN: Tue Nov  5 19:30:57 2019
;; MSG SIZE  rcvd: 56

Udah selesai, tinggal ganti dns router ke ip address komputer yang ngejalanin coreDNS. Ataus suruh temenku ganti dns-nya di network manager (tapi gak enak nyuruh2, haha). Sisanya ya kombinasikan aja sama vhost, entah nginx, httpd, atau traefik.

Cool~