Bagaimana saya bisa mengarahkan permintaan DNS melalui FreeBSD ke DNS lain

0

Cara mengkonfigurasi FreeBSD untuk mengalihkan semua permintaan DNS ke DNS lain.
Kami telah menetapkan FreeBSD sebagai router untuk perusahaan kami. Kami memiliki dua kartu, satu untuk lan dan kedua untuk WAN yang dikonfigurasi sebagai alamat IP statis publik.
Yang ingin saya lakukan adalah:
Ketika beberapa klien di dalam jaringan kami 192.168.0.1/32 memanggil permintaan DNS ke server DNS lama kami, FreeBSD akan meneruskan permintaan itu ke satu server DNS lainnya.
Apakah itu mungkin ?
Di mana saya harus meletakkan aturan itu?

adopilot
sumber
OS mana yang menjalankan server DNS lama?
lg.
Kedua DNS berada di luar jaringan saya, yang pertama adalah dari Penyedia Layanan Internet dan saya ingin mengarahkan semua ke OpenDNS
adopilot
Firewall apa yang Anda jalankan? IPFW, IPF atau PF?
Chris S
@ Chris S IPNAT dengan ipnat.rules
adopilot
@ Chris S, Maaf saya pikir itu ipfw seperti yang saya lihat di rc.conf firewall_enable = "YA" #turn on ipfw
adopilot

Jawaban:

1

Jika Anda menjalankan BIND pada router itu, Anda dapat dengan mudah mengonfigurasinya untuk meneruskan semua permintaan ke server DNS eksternal yang sesuai. Tergantung pada firewall apa yang Anda jalankan, Anda juga dapat dengan mudah meneruskan paket ke router yang dinamai. Masalahnya adalah bahwa router menjawab permintaan sekarang, dan klien mengharapkan server lain untuk menjawab permintaan; ini akan tampak seperti upaya keracunan cache klasik dan banyak klien baru akan menolaknya. Jika Anda ingin mencobanya dan Anda menjalankan IPFW, tambahkan sesuatu seperti ini:

ipfw add 00010 fwd localhost ip from {lan} to any dns

(Perhatikan bahwa Anda membutuhkan kernel yang dikompilasi options IPFIREWALL_FORWARDagar ini berfungsi.)

Pilihan terbaik Anda seperti yang disebutkan orang lain adalah mengkonfigurasi DHCP Anda untuk mengeluarkan alamat baru (atau router dan penerusan setup di sana, ini juga akan mengurangi lalu lintas jaringan eksternal yang berpotensi, karena akan men-cache beberapa permintaan DNS). Kemudian catat siapa saja yang masih menggunakan DNS eksternal apa pun.

Chris S
sumber
1

Ini mungkin, tetapi mungkin lebih banyak pekerjaan daripada yang dibutuhkan. Cara pendek dan kotor adalah dengan menggunakan perintah netcat, dan yang lebih permanen adalah dengan menggunakan pernyataan forward di iptables (saya percaya itu untuk BSD juga)

Solusi lain adalah men-setup server baru dengan alamat virtual untuk server lama ip (en0.0 atau semacamnya).

Solusi terbaik mungkin adalah dengan mengubah server DHCP untuk melayani IP DNS yang baru, dan mengubah server yang diatur ke IP yang baru.

Jimsmithkka
sumber
Triknya adalah DHCP saya melayani DNS baru tetapi pengguna menggantinya secara manual dan menghindari DNS baru saya, Karena beberapa domain pada DNS baru diblokir
adopilot
Tidak ada IPTable di FreeBSD (atau BSD yang saya ketahui).
Chris S
ada yang setara dengan iptables, dan saya pikir iptables dapat dipaksakan tetapi belum mencoba sendiri
Jimsmithkka
1

Anda harus menutup server DNS lama dan memblokir lalu lintas DNS dari LAN internal ke DNS eksternal, sehingga pengguna Anda tidak punya pilihan lain.

Solusi yang kurang drastis, mungkin menemukan pengguna mana yang menggunakan DNS eksternal atau lama (menganalisis lalu lintas atau log firewall) dan memberi tahu para pengguna ini bahwa DNS lama akan dimatikan dan daripada menutup DNS lama.

lg.
sumber