วิธีให้ Windows Server DNS ใช้ไฟล์โฮสต์เพื่อแก้ไขชื่อโฮสต์ที่เฉพาะเจาะจง


18

[หมายเหตุ: การแก้ปัญหาของคำถามนี้สมบูรณ์แบบโดยสิ่งที่หลงทางจากสิ่งที่ชื่อระบุ]

Windows Server 2003 DNS serviceฉันประสบปัญหาขนาดเล็กที่มี ใน บริษัท ของฉันฉันใช้เซิร์ฟเวอร์ DNS ของ Microsoft ( 172.16.0.12) เพื่อทำการจำแนกชื่อให้กับอินทราเน็ต บริษัท ของฉัน (ชื่อโดเมนลงท้ายdev.nlsด้วยการแก้ไขเป็น IP 172.16 .. ) และมีการกำหนดค่าเป็นผู้ส่งต่อ DNS เพื่อส่งต่อชื่อโดเมนอื่น ( เช่น * .google.com * .sf.net) Internet real DNS serversเพื่อ เซิร์ฟเวอร์ DNS ภายในนี้ไม่เคยให้บริการผู้ใช้จากโลกภายนอก

และเรากำลังเรียกใช้เซิร์ฟเวอร์อีเมล (ให้บริการจดหมายขาเข้าสำหรับโดเมนอินเทอร์เน็ตจริง@nlscan.com ) ภายในไฟร์วอลล์ของ บริษัท ซึ่งสามารถเข้าถึงได้ทั้งสองทาง:

  1. โดยเชื่อมต่อ172.16.0.10จากภายในอินทราเน็ต
  2. โดยเชื่อมต่อกับmail.nlscan.com(แก้ไข202.101.116.9) จากอินเทอร์เน็ต

ทราบว่า172.16.0.10และ202.101.116.9ไม่ได้เป็นเครื่องทางกายภาพเดียวกัน 202หนึ่งเป็นเครื่องไฟร์วอลล์ที่ทำส่งต่อพอร์ตของพอร์ต25และไปยังที่อยู่อินทราเน็ต110172.16.0.10

ตอนนี้คำถามของฉัน: หากผู้ใช้ภายในองค์กร LAN ต้องการที่จะแก้ปัญหาก็แก้ไขไปmail.nlscan.com 202.101.116.9ที่ถูกต้องและสามารถทำงานได้ 172.16.0.10แต่ไม่ดีเพราะการรับส่งอีเมลไปที่เครื่องไฟร์วอลล์แล้วตีกลับไป ฉันหวังว่าเราinternal DNS serverจะสามารถตัดชื่อmail.nlscan.comและแก้ไขเป็น 172.16.0.10 ดังนั้นฉันหวังว่าฉันจะสามารถเขียนรายการในไฟล์ "โฮสต์" 172.16.0.12เพื่อทำสิ่งนี้ แต่จะMicrosoft DNS serverรู้จักไฟล์ "โฮสต์" นี้ได้อย่างไร

บางทีคุณอาจแนะนำว่าทำไมไม่มีผู้ใช้อินทราเน็ต172.16.0.10ในการเข้าถึงเซิร์ฟเวอร์อีเมลของฉัน ฉันต้องบอกว่ามันไม่สะดวกสมมติว่าผู้ใช้ (พนักงาน) ทำงานบนแล็ปท็อปของเขากลางวันและกลางคืนที่บ้าน 172.16.0.10เมื่อเขาอยู่ที่บ้านเขาไม่สามารถใช้

การสร้างโซนสำหรับnlscan.comภายในของเราDNS serverเป็นไปไม่ได้เพราะเซิร์ฟเวอร์ชื่อnlscan.comโดเมนอยู่บน ISP ของเราและรับผิดชอบในการแก้ไขชื่อโฮสต์และโดเมนย่อยอื่น ๆ ภายใต้ nlscan.com

[แก้ไข]

ตามที่WesleyDavidแนะนำฉันทำตามวิธีแก้ปัญหาของการสร้างโซนที่มีชื่อmailserver.nlscan.comและวางเร็กคอร์ด A แบบไม่ระบุชื่อในโซนนั้น เวลาพิสูจน์ว่าใช้งานได้ดี


+1 เพราะนี่คือสิ่งที่ฉันทำ ตัวแก้ไข DNS ภายในของฉันชี้ที่ mail.example.com เป็น 192.168 ... แม้ว่า DNS หลักของฉันจะชี้ให้ mail.example.com ไปยังอินเทอร์เน็ต IP ของทุกคน ฉันต้องการได้ยินข้อเสียของสิ่งนี้
คอรี J

สวัสดีคอรี่ฉันเกรงว่าคุณจะไม่เข้าใจความจริง เช่นเดียวกับ joeqwerty กล่าวในหัวข้อนี้ในภายหลัง: ไฟล์โฮสต์ถูกใช้โดยส่วนประกอบตัวแก้ไขค่าไคลเอนต์ DNS ไม่ใช่ส่วนประกอบเซิร์ฟเวอร์ DNS ดังนั้นการแก้ไขโฮสต์ใน 172.16.0.12 จึงไม่ช่วยบริการ Microsoft DNS
Jimm Chen

จุนคุณสามารถทำเครื่องหมายคำตอบว่ายอมรับเพื่อคนอื่นจะได้รู้ว่าทางแก้ปัญหาคืออะไร ดีใจที่ได้ผลกับคุณ! =)
Wesley

คำตอบ:


12

ส่วนหลังของโพสต์นี้ผิด ฉันอยู่ภายใต้การแสดงผลตามสิ่งที่ฉันได้อ่านบนเว็บ (ถ้ามันอยู่บนเว็บมันจะต้องเป็นจริง!) ส่วนหนึ่งของงานบริการ Windows DNS Server สำหรับการสร้างแคชก็คือการโหลดไฟล์โฮสต์ลงใน แคชพร้อมกับข้อมูลโซนท้องถิ่น ฉันค้นหาไปรอบ ๆ และไม่พบหลักฐานที่ชัดเจนเกี่ยวกับเรื่องนี้ ฉันทดสอบทฤษฎีบนเครื่อง Server 2008 R2 ของฉันเองและพบว่าไฟล์โฮสต์ไม่ได้ถูกใช้เพื่อสร้างแคชของเซิร์ฟเวอร์ DNS

อย่างไรก็ตามฉันเชื่อว่าฉันมีวิธีการแก้ปัญหาที่สง่างามกว่าเล็กน้อยที่ Massimo แทนที่จะสร้างโซนที่มีสิทธิ์สำหรับทั้งโซน nlscan.com เพียงแค่สร้างโซนชื่อ mailserver.nlscan.com และวางเรคคอร์ด A แบบไม่ระบุชื่อในโซนนั้น ระเบียน A ที่ไม่ระบุชื่อจะมีชื่อเหมือนกับโซนเองและคุณสามารถให้ที่อยู่ IP ที่คุณต้องการ โดเมนอื่น ๆ ทั้งหมดที่อยู่ภายใต้ nlscan.com รวมถึง nlscan.com นั้นจะแก้ไขโดย DNS สาธารณะ

ฉันเพิ่งทดสอบสิ่งนี้บนเซิร์ฟเวอร์ DNS Server 2008 R2 ของฉันเองและสามารถทำให้เว็บไซต์ของเพื่อนของฉัน (nessus.nl) แก้ไขผ่านเซิร์ฟเวอร์ DNS สาธารณะ แต่โดเมนย่อยเฉพาะ (blog.nessus.nl) แก้ไขเป็นที่อยู่ IP ของ Apple.com . ลองใช้และดูว่าเหมาะกับคุณหรือไม่

เก่ากว่าเริ่มโพสต์ผิด:

หากความเข้าใจของฉันถูกต้อง (แก้ไข: ไม่ถูกต้อง) เมื่อแคช DNS ถูกสร้างขึ้นในเครื่อง Server 2003 มันจะดึงรายการจากไฟล์โฮสต์รวมถึงข้อมูลโซน การวาง172.16.0.10 mailserver.nlscan.comไฟล์โฮสต์ของเครื่อง Server 2003 ควรแก้ไขปัญหา เริ่มบริการ DNS ของคุณใหม่หลังจากเปลี่ยนไฟล์โฮสต์ของคุณ

ใช้ ipconfig / displaydns บนเครื่อง Windows ใด ๆ (โดยเฉพาะเครื่อง DNS Server 2003 ของคุณ) เพื่อดูรายการไฟล์โฮสต์ของคุณ โปรดทราบว่าการตอบสนองเชิงลบจะถูกแคชไว้ในไคลเอนต์ของคุณดังนั้นให้เรียกใช้ ipconfig / flushdns บนไคลเอนต์ที่คุณกำลังทดลองอยู่เสมอ มิฉะนั้นคุณจะต้องใช้ความรุนแรงกับวัตถุแข็งต่าง ๆ ในขณะที่คุณสงสัยว่าทำไมลูกค้าของคุณไม่สามารถแก้ไขชื่อที่คุณเพิ่งป้อนลงในไฟล์โซน / โฮสต์ =)

คุณลองทำสิ่งนี้แล้วล้มเหลวไหม


2
DNS ของ Windows Server 2003 จะไม่ใช้hostsไฟล์เพื่อแก้ไขชื่อ มันจะใช้ข้อมูลของตัวเองส่งต่อหรือแบบสอบถาม recursive แต่ไม่ได้ท้องถิ่นhostsไฟล์
Massimo

@Massimo คุณพูดถูก! ฉันทดสอบมันแล้วและล้มเหลว อย่างไรก็ตามฉันคิดว่าฉันใช้คำแนะนำของคุณและทำให้มันง่ายขึ้นเพื่อให้ดูสง่างามยิ่งขึ้น บอกสิ่งที่คุณคิดว่า.
Wesley

ลบ downvote :-)
Massimo

@Massimo TY. และขอขอบคุณที่กระตุ้นให้ฉันทดสอบสิ่งนี้ด้วยตัวเอง ฉันเรียนรู้สิ่งใหม่ สนุกเสมอ =)
Wesley

1
Dunno ทำไมคุณถึงได้ทำซ้ำอีกครั้งดูเหมือนจะเป็นทางออกที่เรียบร้อยสำหรับปัญหาที่ฉันเจอเป็นประจำและมันง่ายกว่าการตั้งค่าแชโดว์สำหรับโซนอินเทอร์เน็ตทั้งหมด (สาธารณะ)
Helvick

3

ความปรารถนาที่จะให้ผู้ใช้ภายในได้รับ IP ภายในสำหรับทรัพยากรในขณะที่ผู้ใช้ภายนอกได้รับ IP ภายนอกสำหรับทรัพยากรเดียวกันนั้นเป็นเรื่องปกติ มันถูกเรียกว่า DNS สมองแยก คุณมีเซิร์ฟเวอร์ DNS หนึ่งตัวที่หันอินเทอร์เน็ตและเซิร์ฟเวอร์ DNS ภายในอื่นสำหรับผู้ใช้ภายใน ผู้ใช้ภายในใช้ DHCP บนเครือข่ายของคุณและเซิร์ฟเวอร์ DHCP ของคุณที่คุณโฆษณาเซิร์ฟเวอร์ DNS ภายใน เมื่อผู้ใช้ของคุณไม่อยู่ที่สำนักงานเซิร์ฟเวอร์ DHCP จะกำหนดให้พวกเขาไปยังเซิร์ฟเวอร์ DNS ที่จะรู้เกี่ยวกับโซนภายนอกเท่านั้น

ดูเหมือนว่าคุณจะต้องการสมองแยก DNS โดยไม่ต้องโฮสต์โซนภายใน คุณแนะนำว่าการโฮสต์โซนภายในนั้นเป็นปัญหาเพราะคุณไม่ต้องการให้ผู้ใช้รับ IP ภายในเมื่อทำงานจากที่บ้าน แต่ก็ไม่สมเหตุสมผลเพราะเมื่ออยู่ที่บ้านพวกเขาได้รับ IP จากเซิร์ฟเวอร์ DHCP ที่แตกต่างกัน ที่จะไม่โฆษณาเซิร์ฟเวอร์ DNS ภายในของคุณ กำลังจะโฆษณาเซิร์ฟเวอร์ DNS ของ ISP ซึ่งจะรู้เกี่ยวกับโซนภายนอกของคุณเท่านั้นและจะให้ที่อยู่ IP ภายนอกแก่พวกเขาเท่านั้น

ในที่สุดฉันไม่คิดว่าคุณจะประสบความสำเร็จในการขอให้เซิร์ฟเวอร์ DNS แสดงระเบียนจากไฟล์โฮสต์บนเซิร์ฟเวอร์ DNS เซิร์ฟเวอร์ DNS ทำหน้าที่บันทึกจากไฟล์โซน ไฟล์โฮสต์ในเครื่องบนเซิร์ฟเวอร์ DNS นั้นเผยแพร่รายการลงในไคลเอนต์ในการแก้ไขแคชซึ่งใช้ได้เฉพาะกับการค้นหาในเครื่องนั้น รายการเหล่านั้นไม่ได้ให้บริการโดยเซิร์ฟเวอร์ DNS ซึ่งเป็นกลไกที่แตกต่างกัน

อ่านบนสมองซีก DNS - มันเป็นวิธีปกติในการจัดการสถานการณ์นี้


"แต่นั่นไม่สมเหตุสมผล" - ขอโทษคุณทำให้ฉันผิด ขณะนี้ฉันตั้งใจจะให้พนักงาน บริษัท ที่บ้านของพวกเขาแก้ไข mail.nlscan.com อย่างถูกต้องที่ 202.101.116.9 แต่ไม่คาดหวังให้พวกเขาแก้ไข somehomt.dev.nls ที่บ้าน (เว้นแต่ฉันจะตั้งค่าเซิร์ฟเวอร์ VPN) และขอบคุณสำหรับการชี้ DNS แบบแยกส่วนสมอง เนื่องจากฉันต้องการปรับแต่งชื่อ mail.nlscan.com ในอินทราเน็ตของ บริษัท ของฉันการตั้งค่า DNS สมองแยกอาจไม่สะดวกนัก
Jimm Chen

2

เวสต์: ฉันไม่แน่ใจว่าใครเป็นคนกำหนดคุณ แต่ฉันต้องการที่จะชี้แจงการใช้ไฟล์โฮสต์: ไฟล์โฮสต์ถูกใช้งานโดยส่วนประกอบของตัวแก้ไขค่าไคลเอนต์ DNS ไม่ใช่ส่วนประกอบเซิร์ฟเวอร์ DNS รายการในไฟล์โฮสต์บนเซิร์ฟเวอร์ DNS จะถูกใช้โดยเซิร์ฟเวอร์ DNS เมื่อมันทำหน้าที่เป็นลูกค้า DNS ตัวอย่างเช่นรายการในไฟล์โฮสต์ของเซิร์ฟเวอร์ W2K8 DNS ของฉันเช่นนี้:

1.1.1.1 test.test.com

ถูกโหลดลงในแคชไคลเอนต์ DNS ของเซิร์ฟเวอร์ DNS (ไม่ใช่แคชของเซิร์ฟเวอร์) ถ้าฉัน ping test.test.com จากเซิร์ฟเวอร์ DNS ของฉันจะส่งคืน 1.1.1.1 ตามที่คาดไว้ ถ้าฉันเรียกใช้ nslookup บนเซิร์ฟเวอร์ DNS และขอให้ test.test.com จะส่งคืนที่อยู่ IP สาธารณะที่ถูกต้องซึ่งลงทะเบียนไว้สำหรับ test.test.com เนื่องจากส่วนประกอบไคลเอ็นต์ DNS บนเซิร์ฟเวอร์ DNS กำลังขอส่วนประกอบเซิร์ฟเวอร์ DNS สำหรับการแก้ไข (เช่นเดียวกับไคลเอนต์ DNS อื่น ๆ ) มันเป็นความคิดที่สับสนที่จะห่อหัวของคุณไปรอบ ๆ แต่เซิร์ฟเวอร์ DNS ก็เป็นไคลเอนต์ DNS และเมื่อส่วนประกอบของไคลเอ็นต์ DNS ถูกเรียกใช้งานมันจะทำหน้าที่เหมือนไคลเอนต์ DNS อื่นทำโดยดูที่แคชไคลเอนต์ DNS ของตัวเอง - โหลดจากไฟล์โฮสต์ เฉพาะเมื่อส่วนประกอบไคลเอ็นต์ DNS ใช้ส่วนประกอบเซิร์ฟเวอร์ DNS (โดยการสอบถามเซิร์ฟเวอร์ DNS ที่กำหนดค่าไว้ใน '

ไคลเอนต์ DNS ใด ๆ ที่ทำการสอบถามเซิร์ฟเวอร์ DNS จะได้รับคำตอบที่ "จริง" และไม่ใช่รายการโฮสต์เนื่องจากแคชไคลเอนต์ DNS ของเซิร์ฟเวอร์ DNS นั้นถูกใช้โดยเซิร์ฟเวอร์เอง (เป็นไคลเอนต์ DNS) และไม่ใช่โดยส่วนประกอบเซิร์ฟเวอร์ DNS


การทดสอบและผลลัพธ์ของคุณสะท้อนภารกิจของฉันในบ่ายวันนี้อย่างแน่นอน ด้วยเหตุผลบางอย่างฉันคิดว่าฉันได้อ่านแล้วว่าบริการเซิร์ฟเวอร์ DNS ใช้ไฟล์โฮสต์เพื่อเก็บข้อมูลว่าเป็นแคชไม่ใช่แค่ตัวแก้ไข เพียงโทรหาเรา Savage และ Hyneman! =)
Wesley

โหดและ Hyneman นั่นยอดเยี่ยมมาก! แต่ใครเป็นใคร ได้โปรดอย่าบอกฉันว่าฉันต้องทำให้หนวดของวอลรัสและเริ่มสวมหมวกเบเร่ต์ ;)
joeqwerty

1

เท่าที่ฉันรู้ไม่มีวิธีที่จะทำให้ Windows DNS ใช้hostsไฟล์เพื่อจัดการการจำแนกชื่อ; แต่สิ่งนี้ไม่จำเป็น

คุณสามารถสร้างโซนบนเซิร์ฟเวอร์ DNS ภายในของคุณได้อย่างปลอดภัยด้วยชื่อเดียวกันกับโซนอินเทอร์เน็ตสาธารณะ สิ่งที่จะเกิดขึ้นคือเซิร์ฟเวอร์ของคุณจะจัดการคำขอชื่อในโซนนั้นโดยใช้ข้อมูลของตัวเองแทนที่จะส่งต่อคำขอเหล่านั้นไปยังเซิร์ฟเวอร์ชื่อที่เชื่อถือได้สำหรับโซนนั้น บางครั้งเรียกว่า "แชโดว์" เนื่องจากทำให้พื้นที่สาธารณะ "ของจริง" ไม่สามารถใช้งานได้สำหรับลูกค้าภายในตอบกลับด้วยข้อมูล "ปลอม"

สิ่งที่คุณควรระวังคือคุณควรเติมโซนภายในนี้ด้วยชื่อทั้งหมดที่คุณต้องการแม้ใช้ที่อยู่ IP สาธารณะตามที่ต้องการ มิฉะนั้นไคลเอ็นต์ภายในจะไม่สามารถแก้ไขชื่อเหล่านั้นได้

สมมติว่าเขตสาธารณะของคุณมีลักษณะดังนี้:

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

คุณต้องการให้ไคลเอนต์ภายในแก้ไข mail.nlscan.com เป็น 172.16.0.10; ไม่เป็นไรคุณจึงสร้างโซน "nlscan.com" บนเซิร์ฟเวอร์ DNS ภายในของคุณและใส่ "mail.nlscan.com -> 172.16.0.10" ไว้ในนั้น
แต่ตอนนี้ลูกค้าภายในของคุณไม่สามารถแก้ไข "www.nlscan.com" ได้เนื่องจากเซิร์ฟเวอร์คิดว่าเป็นสิทธิ์สำหรับโซนนั้นดังนั้นจึงไม่ตอบคำถาม (เพราะไม่รู้เกี่ยวกับโฮสต์นั้น) แต่ก็ยัง จะไม่ส่งต่อให้ใคร
ในการแก้ปัญหานี้คุณต้องใส่ "www.nlscan.com" ไว้ในโซนภายในของคุณ มันสามารถชี้ไปยังที่อยู่ IP สาธารณะที่แท้จริงได้หากคุณต้องการให้ลูกค้าของคุณเข้าถึงด้วยวิธีนั้นหรือคุณสามารถใช้การเปลี่ยนเส้นทางแบบเดียวกันกับที่คุณใช้สำหรับ "mail.nlscan.com" ถ้า "www" กำลังถูกส่งต่อโดยไฟร์วอลล์ของคุณไปยังเซิร์ฟเวอร์ภายในบางแห่ง
หลักการเดียวกันนี้ใช้กับชื่อใด ๆ ในโซน

การตั้งค่านี้จะไม่มีผลกระทบใด ๆ กับไคลเอนต์ภายนอกหรือต่อผู้ใช้ของคุณซึ่งอยู่นอกเครือข่ายของคุณชั่วคราวเนื่องจากโซน "เงา" ภายในนั้นจะไม่ปรากฏให้เห็นจากอินเทอร์เน็ต


ฉันไม่คิดว่าคุณต้องสร้างโซนที่เชื่อถือได้สำหรับโดเมน nlscan.com ทั้งหมด ฉันคิดว่าคุณสามารถสร้างโดเมนย่อย: mailserver.nlscan.com แล้วสร้างระเบียน A ที่ไม่มีชื่อ ดูโพสต์ของฉันสำหรับรายละเอียดเพิ่มเติม
Wesley

ใช่ว่าจะได้ผล และจริง ๆ แล้วจะง่ายกว่า ... ถ้าคุณต้องการเปลี่ยนโฮสต์เดียว หากคุณต้องการเปลี่ยนเส้นทางบางโซนเต็มจะดีกว่า
Massimo

เพิ่ม nlscan.com ไปยังโฟลเดอร์ส่งต่อแบบมีเงื่อนไขของคุณในเซิร์ฟเวอร์ DNS

1

ไม่ต้องสนใจ hostfile เพียงเพิ่มโซนใหม่ใน DNS mail.domain.com และเพิ่มโฮสต์ aa ในโซน ปล่อยให้ชื่อว่าง (โดยอัตโนมัติจะใช้ชื่อของโซน) และป้อนที่อยู่ IP ของเซิร์ฟเวอร์อีเมลในท้องถิ่น ;-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.