DNSBox

DNS dan HTTPS untuk nama host berbasis IP

Akses layanan HTTP publik melalui *.dnsbox.io, atau jalankan DNSBox di jaringan privat Anda sendiri.

Tersedia di v0.5.2

Memperbarui dari v0.4.x? Ikuti panduan migrasi sebelum mengganti instalasi yang ada. Panduan migrasi

Gunakan layanan publik

Tidak perlu akun atau pendaftaran domain. Backend Anda harus menggunakan IP publik yang diizinkan, menjalankan layanan HTTP pada port 80, dan dapat dijangkau oleh DNSBox.

Ganti 198.51.100.20 dengan alamat IPv4 publik server Anda:

https://198-51-100-20.dnsbox.io

DNS mengarahkan nama host ke proksi DNSBox. Proksi mengakhiri koneksi HTTPS dan meneruskan HTTP ke IP yang dikodekan dalam nama host. Proksi tidak memasang sertifikat di server Anda.

Let's Encrypt memvalidasi nama host melalui DNS-01. Sertifikat berlaku untuk nama host tersebut, bukan alamat IP secara langsung. Koneksi TLS pertama dapat memerlukan waktu lebih lama saat sertifikat diterbitkan.

Koneksi dari browser ke DNSBox menggunakan HTTPS. Koneksi dari DNSBox ke backend menggunakan HTTP. Peningkatan koneksi ke WebSocket didukung.

Backend IPv6 dapat dikodekan sebagai 2a01-4f8-c17-b8f--1.dnsbox.io. Satu tanda hubung mewakili titik dua; dua tanda hubung mewakili ::.

Periksa resolusi DNS, lalu HTTPS. Gunakan backend HTTP milik Anda yang dapat dijangkau untuk pengujian ini:

dig +short 198-51-100-20.dnsbox.io
curl -v https://198-51-100-20.dnsbox.io/

Jawaban DNS berisi alamat proksi. Koneksi TLS yang valid dan respons HTTP backend yang berhasil merupakan dua pemeriksaan terpisah.

Jalankan di jaringan privat

Mode TLS lokal berfungsi tanpa DNS publik, penerusan port, atau akses Internet. DNSBox membuat otoritas sertifikat sendiri. Klien harus memercayai CA tersebut.

Contoh: DNSBox di 192.168.1.2, dengan backend HTTP di 192.168.1.0/24:

./dnsboxd --domain=home.arpa --ip=192.168.1.2 \
  --tls-mode=local --allowed-cidrs=192.168.1.0/24 \
  --dns-listen=192.168.1.2:53 --https-listen=192.168.1.2:443 \
  --data-dir=/var/lib/dnsbox

Teruskan hanya zona home.arpa dari resolver LAN Anda ke 192.168.1.2. DNSBox bersifat otoritatif untuk zonanya; DNSBox bukan resolver rekursif umum.

Terbitkan satu sertifikat lokal untuk membuat CA, lalu pasang /var/lib/dnsbox/ca/root.crt di penyimpanan CA tepercaya setiap klien. Jaga kerahasiaan root.pem. Panduan penerapan menyertakan perintah penyiapan awal.

Untuk backend di 192.168.1.50, buka https://192-168-1-50.home.arpa. Klien LAN memerlukan akses ke port DNS dan HTTPS DNSBox; DNSBox memerlukan akses ke port HTTP backend.

Penyiapan jaringan privat

Jalankan sendiri dengan Let's Encrypt

Gunakan domain atau subdomain yang Anda kendalikan dan delegasikan zona DNS-nya ke server nama DNSBox Anda. Satu node dapat melayani zona; beberapa node menyediakan redundansi.

Untuk validasi DNS-01 publik, izinkan UDP 53 dan TCP 53 masuk, serta HTTPS keluar dan resolusi DNS. Port 80 masuk tidak diperlukan. Port 443 hanya perlu dapat dijangkau oleh klien yang Anda layani.

Backend HTTP privat dapat menggunakan sertifikat nama host yang dipercaya secara publik jika validasi DNS-01 tersedia secara publik. Izinkan backend tersebut secara eksplisit dengan --allowed-cidrs dan konfigurasikan DNS serta perutean untuk klien Anda.

Jika menggunakan beberapa node, konfigurasikan daftar server nama dan rekaman yang sama pada setiap node, beserta TLS timbal balik untuk replikasi tantangan. Setiap peer yang dikonfigurasi harus mengonfirmasi penerimaan tantangan sebelum penerbitan dilanjutkan.

Arsip rilis tersedia untuk Linux, macOS, dan Windows. Penginstal mendukung --no-systemd untuk memulai secara manual atau menggunakan pengelola proses lain. Penginstal tidak menonaktifkan resolver sistem Anda.

Instalasi dan konfigurasi klaster

Sertifikat untuk ocserv dan layanan lain

Layanan publik tidak mengekspor kunci privatnya. Jika layanan Anda memerlukan berkas sertifikat, jalankan DNSBox sendiri dengan zona yang Anda kendalikan dan delegasikan kepadanya.

Jalankan --issue dengan nama host yang mengodekan IP di bawah zona tersebut. DNSBox menulis rantai sertifikat PEM dan kunci privat ke <data-dir>/certs, lalu berhenti. Penerbitan ACME melayani DNS, tetapi membiarkan port HTTPS 443 tetap bebas.

Arahkan nama host tersebut langsung ke layanan Anda menggunakan rekaman A/AAAA yang eksplisit. Untuk ocserv, konfigurasikan server-cert dan server-key. Proksi HTTP DNSBox tidak mengimplementasikan OpenConnect atau DTLS.

Siapkan proses perpanjangan dan muat ulang layanan Anda setelah berkas berubah. Perintah sekali jalan tidak memperpanjang sertifikat setelah berhenti. Jangan jalankan dua proses DNSBox dengan direktori data yang sama.

Contoh ekspor sertifikat

Pertanyaan

Bisakah saya menggunakan IP privat dengan layanan publik?

Tidak. Proksi publik ditujukan untuk backend publik yang diizinkan. Jalankan instans sendiri dengan daftar izin CIDR yang eksplisit untuk alamat privat.

Apa yang terjadi jika IP saya berubah?

IP merupakan bagian dari nama host. Gunakan nama host baru untuk IP baru; klien yang menggunakan nama lama akan tetap mengarah ke alamat lama.

Apakah DNSBox membuktikan kepemilikan IP backend?

DNS-01 membuktikan kendali atas nama host DNS. DNS-01 tidak memverifikasi kepemilikan IP backend atau konten yang disajikan di sana.

Apakah sertifikat diperpanjang secara otomatis?

Layanan DNSBox yang sedang berjalan memperpanjang sertifikat yang dikelolanya. Sertifikat yang diekspor memerlukan proses perpanjangan dan pemuatan ulang layanan yang menggunakannya.

Bagaimana jika backend tidak aktif?

DNS dan TLS mungkin tetap berfungsi, tetapi proksi tidak dapat mengembalikan konten aplikasi. Periksa layanan HTTP backend, firewall, dan keterjangkauannya.

Di mana saya dapat melaporkan masalah?

Buka issue GitHub dengan versi DNSBox, mode penerapan, dan pesan kesalahan yang relevan. Hapus kunci privat, token, dan informasi rahasia lainnya.

Issue GitHub

Referensi teknis

Referensi konfigurasi

Kode sumber