Assalamualaikum Wr. Wb

Sebagaimana sebuah layanan DHCP tentu akan memberikan beberapa service kepada clientnya. Hal ini adalah wajar jika ketika kita melakukan request DHCP ke server DHCP, maka kita akan mendapatkan sebuah (atau beberapa) ip dns server.

Dan tentu saja, konfigurasi file dns server kita akan secara tidak langsung berubah. Hal ini sebenarnya tidak menjadi masalah. Hanya saja, bagaimana jika saya mempunyai konfigurasi ip dns sendiri dan membuatnya dilewatkan ketika meminta request dhcp?

Baca Juga : Tutorial Install dan Konfigurasi DNS Server dengan Bind9 pada Ubuntu Server

Pada kasus ini, saya menggunakan laptop yang terkoneksi dengan sebuah wifi akses poin. Dan, informasi dns bisa dicek di file /etc/resolv.conf dengan perintah.

$ cat /etc/resolv.conf

Nah, terlihat informasi dns digenerate oleh service network manager, dan berikut konfigurasi dari Network Manager saya, bisa dilihat dengan perintah

$ cat /etc/NetworkManager/NetworkManager.conf

Dan yang akan kita lakukan adalah kita ingin mengubah konfigurasi file /etc/resolv.conf tidak digenerate dan tidak terupdate secara otomatis oleh service dhcp client. Karena normalnya setiap terkoneksi dengan jaringan bari secara dhcp, konfigurasi jaringan kita juga akan terupdate seperti ip address, gateway, dns dan sebagainya.

Dan terkhusus untuk dns, dalam mencegah /etc/resolv.conf terupdate dhcp bisa dengan beberapa cara, berikut caranya.

  1. Memproteksi File /etc/resolv.conf
  2. Menggunakan DHCP Hooks
  3. Mentiadakan DNS pada service Network Manager
  4. Mengkonfigurasi file dhclient.conf

Sebagai contoh saya akan mengalihkan dns saya ke dns milik google dan dns milik opendns.

nameserver 8.8.8.8 # dns google
nameserver 208.67.222.222 # opendns

Untuk mengubah konfig file /etc/resolv.conf bisa dengan nano, vim, gedit dan sebagainya. Contoh dengan nano sebagai berikut.

$ sudo nano /etc/resolv.conf

Kemudian rubah menjadi setingan berikut dan simpan dengan CTRL + X dan pilih Y (yes)

Nah seharusnya dns server kita telah berubah. Tapi untuk menjawab rasa penasaran bahwa file ini akan selalu terupdate secara otomatis apabila kita terkoneksi dengan jaringan baru, bisa dilihat dengan perintah berikut.

$ sudo systemctl restart NetworkManager

Woopss.. dan setingan kita kembali ke awal lagi,, hal ini lah yang akan kita cegah.

Cara 1: Memproteksi File /etc/resolv.conf

Cukup mudah untuk melakukan dengan cara ini dan terbilang cara ini adalah cara yang universal. Proteksi yang dilakukan adalah mencegah sistem untuk melakukan editing terhadap file yang kita tergertkan.

Dan karena kasus ini file targetnya adalah /etc/resolv.conf, maka kita proteksi dengan perintah berikut.

$ sudo chattr +i /etc/resolv.conf 

Dan opsi +i pada perintah diatas akan mencegah siapapun untuk melakukan perubahan, termasuk root dari komputer kita.

Dan sedangkan untuk menghilangkan kembali proteksinya bisa dengan perintah berikut.

$ sudo chattr -i /etc/resolv.conf 

Untuk melakukan testing apakah berubah silahkan disesuaikan lagi dns server yang diinginkan di file /etc/resolv.conf dan lakukan restart terhadap service network nya. (cek kembali ke atas untuk caranya)

Cara 2: Menggunakan DNS Hooks

Dalam melakukan pencegahan, sangat direkomendasikan menggunakan cara ini dibanding dengan cara pertama. Cara ini akan membuat sebuah script yang akan dijalankan oleh dhclient. Script ini akan menyesuaikan kondisi interfaces jaringan kita setiap kali akan melakukan request dhcp.

Script yang didefenisikan adalah fungsi make_resolv_conf yang akan menimpa default dari file /etc/resolv.conf

Script ini nantinya bernama nodnsupdate dan terletak di folder /etc/dhcp/dhclient-enter-hooks.d/

$ sudo nano /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Kemudian isikan dengan script berikut dan simpan dengan CTRL + X dan pilih Y.

#!/bin/sh
make_resolv_conf(){
    :
}

Selanjutnya kita perlu mengubah hak akses nya agar bisa dieksekusi.

$ sudo chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Silahkan di reboot, dan seharusnya script ini akan menimpa method default make_resolv_conf, serta silahkan edit sesuai keinginan file /etc/resolv.conf karena tidak akan terjadi lagi pengubahan secara dari dhcp client.

Cara 3: Mentiadakan DNS pada service Network Manager

Cara ini cukup mudah ketika ingin mencegah /etc/resolv.conf terupdate dhcp client, jika kita lihat pada file konfigurasi network manager di /etc/NetworkManager/NetworkManager.conf, maka kita akan menemukan pada section main, terdapat konfig dns=default. Setingan default ini akan memberikan ip dns dengan konfigurasi default dari server.

Untuk mencegah hal ini cukup mengubah konfig dns dari default menjadi none, atau jika tidak terdapat bisa ditambahkan saja.

Pertama masuk dan edit dengan perintah berikut

$ sudo nano /etc/NetworkManager/NetworkManager.conf

Dan ubah menjadi sebagai berikut dan simpan.

[main]
plugins=ifupdown,keyfile
dns=none

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

Selanjutnya silahkan reboot, dan sesuaikan ip dns yang diinginkan.

Cara 4: Mengkonfigurasi file dhclient.conf

Selain beberapa cara diatas, untuk mencegah (atau lebih tepatnya mendefaultkan konfigurasi) perubahan ip dns kita bisa dengan mengubah/menambahkan sedikit konfigurasi pada file dhclient.conf

Silahkan masuk dan edit file tersebut.

$ sudo nano /etc/dhcp/dhclient.conf

Jika diperhatikan file ini akan beriksi banyak konfigurasi, tapi tidak usah diganggu, tapi jika kalian suka eksperimen, gass keun saja.

Pada file konfigurasi tersebut silahkan tambahkan baris berikut

supersede domain-name-servers 8.8.8.8, 208.67.222.222;

atau bisa juga dan direkomendasikan dengan baris berikut.

prepend domain-name-servers 8.8.8.8, 208.67.222.222;

Ip 8.8.8.8 dan 208.67.222.222 hanya contoh saja, silahkan disesuaikan dengan konfigurasi masing masing.

Dan pada konfigurasi ini silahkan reboot komputer anda dan secara default dns akan di set ke ip tersebut.

Azhari Sikumbang

Tulis dan bicarakan, agar lebih berguna. (Github | Linked in)
~ azhari@coretanit.com