Cara memiliki Windows Server DNS menggunakan file host untuk menyelesaikan nama host tertentu

18

[CATATAN: Solusi dari pertanyaan ini sempurna, dengan sesuatu yang menyimpang dari yang ditunjukkan judulnya.]

Saya menghadapi masalah kecil dengan Windows Server 2003 DNS service. Di perusahaan saya, saya menjalankan Microsoft DNS server ( 172.16.0.12) untuk melakukan resolusi nama ke intranet perusahaan saya (nama domain berakhir dev.nls. Diselesaikan ke IP 172.16 ... ), dan juga dikonfigurasikan sebagai penerusan DNS untuk meneruskan nama domain lainnya ( mis. * .google.com, * .sf.net) ke Internet real DNS servers. Server DNS internal ini tidak pernah cenderung melayani pengguna dari dunia luar.

Dan, kami menjalankan server surat (melayani surat masuk untuk domain Internet nyata@nlscan.com ) di dalam firewall perusahaan yang dapat diakses dengan cara apa pun:

  1. dengan menghubungkan ke 172.16.0.10dari dalam intranet.
  2. dengan menghubungkan ke mail.nlscan.com(diselesaikan ke 202.101.116.9) dari Internet.

Perhatikan itu 172.16.0.10dan 202.101.116.9bukan mesin fisik yang sama. Yang 202satu adalah mesin firewall yang melakukan port forwarding port 25dan 110ke alamat intranet 172.16.0.10.

Sekarang pertanyaan saya: Jika pengguna di dalam LAN perusahaan ingin menyelesaikan mail.nlscan.com, itu memutuskan untuk 202.101.116.9. Itu benar dan bisa diterapkan, TETAPI TIDAK BAIK, karena lalu lintas surat masuk ke mesin firewall kemudian memantul ke 172.16.0.10. Saya berharap bahwa kami internal DNS serverdapat mencegat nama mail.nlscan.comdan mengatasinya ke 172.16.0.10. Jadi, saya harap saya bisa menulis entri di file "host" 172.16.0.12untuk melakukan ini. Tapi, bagaimana bisa Microsoft DNS servermengenali file "host" ini?

Mungkin Anda menyarankan, mengapa tidak menggunakan pengguna intranet 172.16.0.10untuk mengakses server email saya? Saya harus mengatakan itu tidak nyaman, misalkan pengguna (karyawan) bekerja di laptop-nya, siang hari di kantor dan malam hari di rumah. Ketika dia di rumah, dia tidak bisa menggunakan 172.16.0.10.

Membuat zona untuk nlscan.comdi internal kami DNS servertidak layak, karena server nama untuk nlscan.comdomain ada di ISP kami, dan bertanggung jawab untuk menyelesaikan nama host lain dan sub-domain di bawah nlscan.com.

[EDIT]

Seperti yang WesleyDaviddisarankan, saya mengikuti solusi hanya membuat zona bernama mailserver.nlscan.comdan menempatkan catatan A tanpa nama di zona itu . Waktu membuktikan ini bekerja dengan baik.

Jimm Chen
sumber
Memberi +1 karena inilah yang saya lakukan. Penyelesai DNS internal saya mengarahkan mail.example.com ke 192.168 ... meskipun DNS utama saya mengarahkan mail.example.com ke IP internetnya untuk semua orang. Saya ingin mendengar kerugian untuk ini.
Cory J
Hai, Cory, saya khawatir Anda tidak benar. Seperti kata joeqwerty dalam topik ini nanti: File host digunakan oleh komponen resolver klien DNS, bukan komponen server DNS. Jadi, mengedit host pada 172.16.0.12 tidak membantu layanan Microsoft DNS.
Jimm Chen
Jun, Anda dapat menandai jawaban yang diterima sehingga orang lain akan tahu apa solusinya. Senang itu berhasil untuk Anda! =)
Wesley

Jawaban:

12

Bagian terakhir dari posting ini salah. Saya mendapat kesan, berdasarkan pada beberapa hal yang saya baca di web (jika itu di web, pasti benar!) Bahwa bagian dari tugas Layanan Server DNS Windows untuk membuat cache adalah juga memuat file host-nya ke dalam cache bersama dengan data zona lokalnya. Saya mencari-cari dan tidak dapat menemukan bukti kuat tentang ini. Saya menguji teori pada mesin Server 2008 R2 saya sendiri dan menemukan bahwa file host tidak digunakan untuk membangun Cache Server DNS.

Namun, saya yakin saya punya solusi yang sedikit lebih elegan daripada Massimo. Alih-alih membuat zona otoritatif untuk seluruh zona nlscan.com, cukup buat zona bernama mailserver.nlscan.com dan letakkan catatan A tanpa nama di zona itu. Catatan tanpa nama A akan memiliki nama yang sama dengan zona itu sendiri dan Anda bisa memberikannya alamat IP yang Anda inginkan. Semua domain lain di bawah nlscan.com dan juga nlscan.com sendiri akan diselesaikan oleh DNS publik.

Saya baru saja menguji ini di server saya sendiri DNS 2008 R2 Server dan mampu membuat situs web teman saya (nessus.nl) menyelesaikan melalui server DNS publik tetapi subdomain tertentu (blog.nessus.nl) menyelesaikan ke alamat IP Apple.com . Cobalah dan lihat apakah itu berhasil untuk Anda.

Posting yang lebih tua dan salah dimulai:

Jika pemahaman saya benar (EDIT: dan tidak), ketika cache DNS dibuat di mesin Server 2003, ia menarik entri dari file host dan juga data zona. Menempatkan 172.16.0.10 mailserver.nlscan.comdalam file host mesin Server 2003 Anda harus menyelesaikan masalah. Mulai ulang layanan DNS Anda setelah mengubah file host Anda.

Gunakan ipconfig / displaydns pada mesin Windows apa pun (khususnya, mesin DNS Server 2003 Anda) untuk melihat entri file host Anda. Ingat juga bahwa tanggapan negatif di-cache di klien Anda, jadi selalu jalankan ipconfig / flushdns pada klien yang Anda coba. Kalau tidak, Anda akan berakhir menyalahgunakan diri Anda terhadap berbagai benda keras saat Anda bertanya-tanya mengapa klien Anda tidak dapat menyelesaikan nama yang baru saja Anda masukkan ke file zone / hosts. =)

Sudahkah Anda mencoba ini dan gagal?

Wesley
sumber
2
DNS Windows Server 2003 tidak akan menggunakan hostsfile untuk menyelesaikan nama. Ini akan menggunakan data sendiri, forwarder atau kueri rekursif, tetapi bukanhosts file lokal .
Massimo
@ Massimo kamu benar! Saya mengujinya dan gagal. Namun, saya pikir saya menerima saran Anda dan menyederhanakannya menjadi sedikit lebih elegan. Katakan padaku apa yang kau pikirkan.
Wesley
Dihapus downvote :-)
Massimo
@ Massimo TY. Dan terima kasih telah memacu saya untuk menguji sendiri. Saya belajar hal baru. Selalu senang. =)
Wesley
1
Entah mengapa Anda dinged lagi, sepertinya solusi yang rapi untuk masalah yang saya temui secara teratur dan itu jauh lebih sederhana daripada mengatur shadowing untuk seluruh zona internet (publik).
Helvick
3

Keinginan untuk memiliki pengguna internal mendapatkan IP internal untuk sumber daya sementara pengguna eksternal mendapatkan IP eksternal untuk sumber daya yang sama adalah umum. Ini disebut sebagai DNS otak terbelah. Anda memiliki satu server DNS yang menghadap internet dan server DNS internal lain untuk pengguna lokal. Pengguna internal menggunakan DHCP di jaringan Anda dan di server DHCP Anda mengiklankan server DNS internal. Ketika pengguna Anda jauh dari kantor, server DHCP mereka akan menugaskan mereka ke server DNS yang hanya akan tahu tentang zona eksternal.

Anda tampaknya ingin DNS otak terbelah tanpa benar-benar hosting zona secara internal. Anda menyarankan bahwa hosting zona secara internal bermasalah karena Anda tidak ingin pengguna mendapatkan IP internal ketika mereka bekerja dari rumah tetapi itu tidak masuk akal karena ketika mereka di rumah mereka mendapatkan IP mereka dari server DHCP yang berbeda itu tidak akan mengiklankan server DNS internal Anda. Ini akan mengiklankan server DNS ISP mereka yang hanya akan tahu tentang zona eksternal Anda dan karenanya hanya akan memberi mereka alamat IP eksternal.

Akhirnya, saya tidak berpikir Anda akan berhasil dengan meminta server DNS untuk menyajikan catatan dari file host di server DNS. Server DNS menyajikan catatan dari file zonanya. File host lokal pada server DNS menyebarkan entri ke cache penyelesaian klien lokal yang hanya berlaku untuk pencarian di mesin itu. Entri tersebut tidak dilayani oleh server DNS yang merupakan mekanisme yang berbeda.

Baca di DNS otak terbagi - ini adalah cara normal untuk menangani situasi ini.

icky3000
sumber
"Tapi itu tidak masuk akal" - maaf, Anda salah paham. Saat ini, saya bermaksud untuk memiliki staf perusahaan di rumah mereka untuk menyelesaikan mail.nlscan.com dengan benar ke 202.101.116.9, tetapi tidak mengharapkan mereka untuk menyelesaikan somehomt.dev.nls di rumah (kecuali saya menyiapkan server VPN). Dan terima kasih telah menunjukkan DNS otak-terpisah. Karena saya hanya ingin tweak untuk nama mail.nlscan.com di intranet perusahaan saya, pengaturan DNS otak ganda mungkin tidak nyaman.
Jimm Chen
2

Wes: Saya tidak yakin siapa yang mengganggu Anda tetapi saya ingin mengklarifikasi penggunaan file hosts: File hosts digunakan oleh komponen resolver klien DNS, bukan komponen server DNS. Entri dalam file host pada server DNS akan digunakan oleh server DNS ketika itu bertindak sebagai klien DNS. Misalnya, entri dalam file host server DNS W2K8 saya seperti ini:

1.1.1.1 test.test.com

dimuat ke cache klien DNS server DNS (bukan cache server). Jika saya melakukan ping test.test.com dari server DNS saya, ia mengembalikan 1.1.1.1 seperti yang diharapkan. Jika saya kemudian menjalankan nslookup pada server DNS dan meminta test.test.com, ia mengembalikan alamat ip publik yang benar terdaftar untuk test.test.com sebagai komponen klien DNS pada server DNS sekarang meminta komponen server DNS untuk resolusi (seperti halnya klien DNS lainnya). Ini adalah ide yang membingungkan untuk membungkus kepala Anda, tetapi server DNS juga merupakan klien DNS dan ketika komponen klien DNS dipanggil untuk bertindak, ia bertindak seperti halnya klien DNS lainnya dengan melihat cache klien DNS itu sendiri, termasuk entri yang sudah ada sebelumnya. -Muat dari file host. Hanya ketika komponen klien DNS menggunakan komponen server DNS (dengan menanyakan server DNS yang dikonfigurasi di dalamnya '

Setiap klien DNS yang menanyakan server DNS akan selalu mendapatkan jawaban "nyata" dan bukan entri host karena cache klien DNS server DNS digunakan oleh server itu sendiri (sebagai klien DNS) dan bukan oleh komponen server DNS.

joeqwerty
sumber
Tes dan hasil Anda persis mencerminkan pencarian saya sore ini. Untuk beberapa alasan saya pikir saya telah membaca bahwa layanan server DNS juga menggunakan file hosts untuk seed cache itu, bukan hanya resolver. Panggil saja kami Savage dan Hyneman! =)
Wesley
Savage dan Hyneman, itu luar biasa! Tapi siapa siapa? Tolong jangan bilang aku harus menumbuhkan kumis walrus dan mulai memakai baret. ;)
joeqwerty
1

Sejauh yang saya tahu, tidak ada cara untuk membuat Windows DNS menggunakan hostsfile untuk menangani resolusi nama; tetapi ini tidak diperlukan.

Anda dapat dengan aman membuat zona di server DNS internal Anda dengan nama yang sama dengan zona Internet publik; apa yang akan terjadi adalah, server Anda akan menangani permintaan untuk nama di zona itu menggunakan data sendiri, alih-alih meneruskan permintaan tersebut ke server nama resmi untuk zona itu; ini kadang-kadang disebut "membayangi", karena membuat zona publik "nyata" tidak tersedia untuk klien internal, sebagai gantinya menjawab dengan data "palsu".

Yang harus Anda berhati-hati adalah, Anda harus mengisi zona internal ini dengan semua nama yang Anda perlukan, bahkan menggunakan alamat IP publik di mana diperlukan; jika tidak, klien internal tidak akan dapat menyelesaikan nama-nama itu.

Katakanlah zona publik Anda terlihat seperti ini:

www.nlscan.com    202.101.116.8
mail.nlscan.com   202.101.116.9

Anda ingin klien internal menyelesaikan mail.nlscan.com sebagai 172.16.0.10; tidak apa-apa, jadi Anda membuat zona "nlscan.com" di server DNS internal Anda dan memasukkan "mail.nlscan.com -> 172.16.0.10" di dalamnya.
Tetapi sekarang klien internal Anda tidak dapat menyelesaikan "www.nlscan.com", karena server menganggap itu otoritatif untuk zona itu, sehingga tidak akan menjawab pertanyaan (karena tidak tahu tentang host itu), tetapi juga tidak akan meneruskannya kepada siapa pun.
Untuk mengatasi ini, Anda harus memasukkan "www.nlscan.com" ke dalam zona internal Anda; itu dapat menunjuk ke alamat IP publik yang sebenarnya jika Anda ingin klien Anda mengaksesnya dengan cara itu, atau Anda bisa menggunakan pengalihan yang sama yang Anda gunakan untuk "mail.nlscan.com", jika "www" juga diteruskan oleh firewall Anda ke beberapa server internal.
Prinsip yang sama berlaku untuk nama apa pun di zona.

Pengaturan ini tidak akan berdampak pada klien eksternal, atau pada pengguna Anda yang sementara berada di luar jaringan Anda, karena zona "bayangan" internal itu tidak akan pernah terlihat dari Internet.

Massimo
sumber
Saya tidak berpikir Anda perlu membuat zona otoritatif untuk seluruh domain nlscan.com. Saya pikir Anda dapat membuat subdomain: mailserver.nlscan.com dan kemudian membuat catatan A tanpa nama. Lihat posting saya untuk lebih detail.
Wesley
Ya, itu akan berhasil; dan sebenarnya akan lebih sederhana ... jika Anda hanya perlu mengarahkan satu host; jika Anda perlu mengarahkan beberapa dari mereka, zona penuh akan lebih baik.
Massimo
tambahkan nlscan.com ke folder forwarder bersyarat Anda di server DNS
1

Nevermind the hostfile, cukup tambahkan zona baru di DNS mail.domain.com dan tambahkan host di zona tersebut. biarkan namanya kosong (secara otomatis akan menggunakan nama zona) dan masukkan alamat IP dari server surat lokal ;-)

Lysandro
sumber