Beberapa waktu yang lalu, salah satu Team Excellent ada implementasi terkait dengan migrasi Zimbra Mail Server. Team melakukan remote pada server baru, melakukan beberapa persiapan, dan masuklah pada proses instalasi Zimbra.
Ketika proses instalasi, proses resolv domain terasa lambat. Resolv domain dibutuhkan untuk download dan install package dari repository di internet. Jika dilakukan ping langsung pada IP public, server mendapatkan reply dengan cepat. Namun tidak jika testing pada nama domain secara langsung. Butuh beberapa kali ujicoba hingga akhirnya nama domain dapat diresolv dengan baik
Coba gunakan Open DNS seperti Google (8.8.8.8) dan CloudFlare (1.1.1.1) hasil resolv nya sama. Lambat. Begitu juga dengan testing query via DNS server internal yang disediakan oleh klien.
Asumsi saya, ada pembatasan akses pada port default DNS (udp 53). Untuk mengatasi hal tersebut, akhirnya dicoba menggunakan DoH (DNS over HTTPS) yang disediakan oleh CloudFlare.
Untuk menggunakan layanan DoH tersebut, berikut prosesnya
Download CloudFlared
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /opt/cloudflared-linux-amd64 chmod +x /opt/cloudflared-linux-amd64
Start DNS Proxy CloudFlare
/opt/cloudflared-linux-amd64 proxy-dns --port 5553
Jika tidak menggunakan port, maka defaultnya akan listen pada port 53. Dikarenakan ada DNS local untuk kebutuhan resolv internal domain pada Zimbra, maka saya menggunakan port custom (5553).
Testing DNS Proxy
dig +short @127.0.0.1 -p5553 cloudflare.com AAAA dig +short @127.0.0.1 -p5553 imanudin.com A
Contoh output
[root@server]# dig +short @127.0.0.1 -p5553 cloudflare.com AAAA 2606:4700::6810:84e5 2606:4700::6810:85e5 [root@server]# dig +short @127.0.0.1 -p5553 imanudin.com A 104.21.34.160 172.67.163.15 [root@ceph-single srv]#
Setelah DNS Proxy dapat digunakan, jadikan cloudflared sebagai service untuk memudahkan
sudo tee /etc/systemd/system/cloudflared-proxy-dns.service >/dev/null <<EOF
[Unit]
Description=DNS over HTTPS (DoH) proxy client
Wants=network-online.target nss-lookup.target
Before=nss-lookup.target
[Service]
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
DynamicUser=yes
ExecStart=/opt/cloudflared-linux-amd64 proxy-dns --port 5553
[Install]
WantedBy=multi-user.target
EOF
Reload Daemon
systemctl daemon-reload
Tambahkan 127.0.0.1 sebagai nameserver kedua. Contohnya seperti berikut
[root@server]# cat /etc/resolv.conf search imanudin.web.id nameserver 192.168.1.30 nameserver 127.0.0.1 nameserver 8.8.8.8
Buat rule iptables agar melakukan redirect query port 53 ke port 5553
iptables -t nat -A OUTPUT -d 127.0.0.1 -p udp --dport 53 -j REDIRECT --to-port 5553
Agar konfigurasi iptables persistent, install iptables-service
Ubuntu
apt install iptables-persistent netfilter-persistent save systemctl enable netfilter-persistent systemctl restart netfilter-persistent
CentOS/Rocky Linux
yum install iptables-services service iptables save systemctl enable iptables systemctl restart iptables
Silakan dicoba dan semoga bermanfaat 🙂