Metode terbaik adalah melalui zona kebijakan respons di Bind 9.8.1 atau lebih baru. Ini memungkinkan Anda untuk menimpa catatan tunggal di zona arbitrer (dan tidak perlu membuat subdomain keseluruhan untuk itu, hanya catatan tunggal yang ingin Anda ubah), memungkinkan Anda untuk menimpa CNAME, dll. Solusi lain seperti Tidak terikat tidak dapat menimpa CNAMEs .
https://www.redpill-linpro.com/sysadvent/2015/12/12/dns-rpz.html
EDIT: Mari kita lakukan ini dengan benar. Saya akan mendokumentasikan apa yang telah saya lakukan berdasarkan tutorial yang ditautkan di atas.
OS saya adalah Raspbian 4.4 untuk Raspberry Pi, tetapi teknik ini harus bekerja tanpa perubahan pada Debian dan Ubuntu, atau dengan perubahan minimal pada platform lain.
Pergi ke tempat file konfigurasi Bind Anda disimpan di sistem Anda - ini dia /etc/bind
. Buat di sana file yang disebut db.rpz
dengan konten berikut:
$TTL 60
@ IN SOA localhost. root.localhost. (
2015112501 ; serial
1h ; refresh
30m ; retry
1w ; expiry
30m) ; minimum
IN NS localhost.
localhost A 127.0.0.1
www.some-website.com A 127.0.0.1
www.other-website.com CNAME fake-hostname.com.
Apa fungsinya?
- itu mengesampingkan alamat IP untuk
www.some-website.com
dengan alamat palsu 127.0.0.1
, secara efektif mengirim semua lalu lintas untuk situs itu ke alamat loopback
- mengirimkan lalu lintas ke
www.other-website.com
ke situs lain yang disebutfake-hostname.com
Apa pun yang bisa masuk dalam file Bind zone dapat Anda gunakan di sini.
Untuk mengaktifkan perubahan ini ada beberapa langkah lagi:
Edit named.conf.local
dan tambahkan bagian ini:
zone "rpz" {
type master;
file "/etc/bind/db.rpz";
};
Tutorial yang ditautkan di atas memberitahu Anda untuk menambahkan lebih banyak hal zone "rpz" { }
tetapi itu tidak perlu dalam pengaturan sederhana - apa yang saya tunjukkan di sini adalah minimum untuk membuatnya bekerja pada resolver lokal Anda.
Edit named.conf.options
dan di suatu tempat di options { }
bagian tambahkan response-policy
opsi:
options {
// bunch
// of
// stuff
// please
// ignore
response-policy { zone "rpz"; };
}
Sekarang restart Bind:
service bind9 restart
Itu dia. Server nama harus mulai mengganti catatan itu sekarang.
Jika Anda perlu melakukan perubahan, cukup edit db.rpz
, lalu mulai ulang Bind lagi.
Bonus: jika Anda ingin mencatat permintaan DNS ke syslog, sehingga Anda dapat mengawasi prosesnya, edit named.conf.local
dan pastikan ada logging
bagian yang menyertakan pernyataan ini:
logging {
// stuff
// already
// there
channel my_syslog {
syslog daemon;
severity info;
};
category queries { my_syslog; };
};
Mulai kembali Bind lagi dan hanya itu.
Uji pada mesin yang menjalankan Bind:
dig @127.0.0.1 www.other-website.com. any
Jika Anda menjalankan penggalian pada mesin yang berbeda, cukup gunakan @ the-ip-address-of-Bind-server alih-alih @ 127.0.0.1
Saya telah menggunakan teknik ini dengan sangat sukses untuk mengganti CNAME untuk situs web yang sedang saya kerjakan, mengirimkannya ke penyeimbang beban AWS baru yang baru saja saya uji. Raspberry Pi digunakan untuk menjalankan Bind, dan RPi juga dikonfigurasi untuk berfungsi sebagai router WiFi - jadi dengan menghubungkan perangkat ke SSID yang berjalan pada RPi saya akan mendapatkan penggantian DNS yang saya butuhkan untuk pengujian.