Apa itu DNS over HTTPS?
DNS over HTTPS, atau DoH, adalah alternatif dari DNS over TLS atau DoT.
Dengan DoH, permintaan dan respons DNS dienkripsi, tetapi dikirim melalui protokol HTTP atau HTTP / 2, bukan langsung melalui protokol UDP.
Sama seperti DoT, DoH memastikan bahwa penyerang tidak dapat memalsukan atau mengubah lalu lintas DNS. Lalu lintas DoH terlihat seperti lalu lintas HTTPS pada umumnya – misalnya interaksi normal user melalui situs web dan aplikasi web dilihat dari sudut pandang administrator jaringan.
Pada Februari 2020, browser Mozilla Firefox mulai mengaktifkan DoH untuk pengguna AS secara default. Kueri DNS dari browser Firefox dienkripsi oleh DoH dan masuk ke Cloudflare atau NextDNS. Beberapa browser lain juga mendukung DoH, meskipun tidak diaktifkan secara default.
HTTPS juga menggunakan TLS untuk enkripsi? Apa perbedaan DNS melalui TLS dan DNS melalui HTTPS?
Kedua standar ini dikembangkan secara terpisah dan memiliki dokumentasi RFC * sendiri, tetapi perbedaan terpenting antara DoT dan DoH adalah port yang mereka gunakan. DoT hanya menggunakan port 853, sedangkan DoH menggunakan port 443, yang merupakan port yang digunakan oleh semua lalu lintas HTTPS lainnya.
Karena DoT memiliki port khusus, siapa pun dengan visibilitas jaringan dapat melihat lalu lintas DoT datang dan pergi, meskipun permintaan dan tanggapan itu sendiri dienkripsi. Sebaliknya, dengan DoH, permintaan dan respons DNS disamarkan dalam lalu lintas HTTPS lainnya, karena semuanya datang dan pergi dari pintu yang sama yaitu protokol HTTPS port 443.
Berikut adalah cara kerja DoT dan DoH melindungi lalu lintas komunikasi dengan DNS server secara visual agar lebih mudah di fahami.

Seseorang dapat menganalisa isi dari komunikasi dns dan bisa mengetahui jika kita akan menuju ke website atau server cloudflare.com (Pict 1).

Kondisi saat ini komunikasi ke DNS resolver sudah di enkripsi menggunakan TLS atau protokol HTTPS , sehingga tidak ada seorangpun yang bisa mengetahui kemana server yang akan dituju (Pict 2).
Kita akan gunakan dnscrypt-proxy versi 2.x sebagai client untuk berkomunikasi dengan server dns resolver seperti cloudflare dan google, alternatif list public resolvers url bisa dilihat di SINI .
INSTALL DNSCRYPT-PROXY
Ubuntu 20.04
$ sudo apt install dnscrypt-proxy
Tetapi jika anda masih menggunakan Ubuntu 18.04 atau Linux Mint 19 untuk menginstal dnscrypt-proxy versi 2 diharuskan menambahkan repo ppa dari Andrei Shevchuk seperti perintah dibawah ini.
$ sudo add-apt-repository ppa:shevchuk/dnscrypt-proxy $ sudo apt update $ sudo apt install dnscrypt-prox
$ sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml # Empty listen_addresses to use systemd socket activation listen_addresses = [''] server_names = ['scaleway-fr', 'google', 'yandex', 'cloudflare'] [query_log] file = '/var/log/dnscrypt-proxy/query.log' [nx_log] file = '/var/log/dnscrypt-proxy/nx.log' [sources] [sources.'public-resolvers'] url = 'https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md' cache_file = '/var/cache/dnscrypt-proxy/public-resolvers.md' minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3' refresh_delay = 72 prefix = ''
Centos 8
$ sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm $ sudo dnf update $ sudo dnf install dnscrypt-proxy
$ sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml ############################################## # # # dnscrypt-proxy configuration # # # ############################################## ## This is an example configuration file. ## You should adjust it to your needs, and save it as "dnscrypt-proxy.toml" ## ## Online documentation is available here: https://dnscrypt.info/doc ################################## # Global settings # ################################## ## List of servers to use ## ## Servers from the "public-resolvers" source (see down below) can ## be viewed here: https://dnscrypt.info/public-servers ## ## The proxy will automatically pick working servers from this list. ## Note that the require_* filters do NOT apply when using this setting. ## ## By default, this list is empty and all registered servers matching the ## require_* filters will be used instead. ## ## Remove the leading # first to enable this; lines starting with # are ignored. server_names = ['scaleway-fr', 'google', 'yandex', 'cloudflare'] ## List of local addresses and ports to listen to. Can be IPv4 and/or IPv6. ## Example with both IPv4 and IPv6: ## listen_addresses = ['127.0.0.1:53', '[::1]:53'] listen_addresses = [] ## Maximum number of simultaneous client connections to accept max_clients = 250 ## Switch to a different system user after listening sockets have been created. ## Note (1): this feature is currently unsupported on Windows. ## Note (2): this feature is not compatible with systemd socket activation. ## Note (3): when using -pidfile, the PID file directory must be writable by the new user # user_name = 'nobody' ## Require servers (from static + remote sources) to satisfy specific properties # Use servers reachable over IPv4 ipv4_servers = true # Use servers reachable over IPv6 -- Do not enable if you don't have IPv6 connectivity ipv6_servers = false # Use servers implementing the DNSCrypt protocol dnscrypt_servers = true # Use servers implementing the DNS-over-HTTPS protocol doh_servers = true ## Require servers defined by remote sources to satisfy specific properties # Server must support DNS security extensions (DNSSEC) require_dnssec = true # Server must not log user queries (declarative) require_nolog = true # Server must not enforce its own blacklist (for parental control, ads blocking...) require_nofilter = true # Server names to avoid even if they match all criteria disabled_server_names = [] ....................................... ............................... ######################################## # Static entries # ######################################## ## Optional, local, static list of additional servers ## Mostly useful for testing your own servers. [static] # [static.'myserver'] # stamp = 'sdns:AQcAAAAAAAAAAAAQMi5kbnNjcnlwdC1jZXJ0Lg'
Mengaktifkan DoH dns ke dalam sistem
Jika kita menjalankan sistem operasi dektop bisa mengaktifkan menggunakan GUI.
Matikan Automatic DNS kemudian masukan localhost kedalam kotak entri dns dan pastikan slider Automatic di matikan, sebagai catatan untuk Ubuntu masukan 127.0.2.1 dan untuk Centos 127.0.0.1.

Bagaimana jika di sistem linux kita tidak terinstal sistem gui, seperti contohnya Ubuntu server dan Centos server.
Sebenarnya ini tidaklah menjadi masalah dan sama saja karena NetworkManager juga bisa dikonfigurasikan melalui command line nmcli.
Edit koneksi menggunakan nmcli (NetworkManager Command Line Interface).
Perintah melihat koneksi yang aktif.
$ nmcli con NAME UUID TYPE DEVICE ens33 a067f9cb-9d09-4e8a-b8e4-a76cc67a547c ethernet ens33
Abaikan dns yang diberikan oleh dhcp server.
$ nmcli con mod ens33 ipv4.ignore-auto-dns yes
Tambahkan alamat dns lokal yang dilayani oleh dnscrypt-proxy.
$ nmcli con mod ens33 ipv4.dns "127.0.2.1"
Reload koneksi untuk mengaktifkan settingan yang baru.
$ nmcli con ens33 down $ nmcli con ens33 up
MENJALANKAN SERVICE
$ sudo systemctl restart NetworkManager $ sudo systemctl enable --now dnscrypt-proxy.socket $ sudo systemctl restart dnscrypt-proxy
TES KONEKSI DNS
Setelah dnscrypt sudah di konfigurasikan dan service sudah dijalankan, selanjutnya proses pengetesan, untuk memastikan bahwa sistem kita sudah menggunakan dns resolver yang terenkripsi.
Kita coba resolve domain agusprasetia.com dengan perintah.
$ sudo dnscrypt-proxy -resolve agusprasetia.com
Test query domain
Source: whois.arin.net IP Address: 162.158.161.44 Name: CLOUDFLARENET Handle: NET-162-158-0-0-1 Registration Date: 5/23/13 Range: 162.158.0.0-162.159.255.255 Org: Cloudflare, Inc.Org Handle: CLOUD14 Address: 101 Townsend Street City: San Francisco State/Province: CA Postal Code: 94107 Country: United States
Bisa di lihat ip 162.158.161.44 adalah milik cloudflare, artinya kita sudah menggunakan server cloudflare sebagai dns resolver melalui dnscrypt-proxy.
Selamat mencoba.

Run Your Own DNS over HTTPS (DoH) Resolver on Ubuntu with Dnscrypt-proxy.
Keren bang work huehehe makasih.
Sama2 mas