ย้อนกลับการค้นหา DNS ทำให้การทำงานของเครือข่ายช้าลงบน LAN


9

สิ่งแวดล้อม

การตั้งค่า LAN ของฉันค่อนข้างพื้นฐาน:

  • เราเตอร์ที่เชื่อมต่อกับโมเด็มของ ISP และอินเทอร์เน็ต
  • พีซีของฉันพัฒนาเชื่อมต่อโดยตรงกับเราเตอร์

เราเตอร์ให้บริการ DHCP แต่ไม่ได้เรียกใช้เซิร์ฟเวอร์ DNS ของตัวเอง อันที่จริงไม่มีเซิร์ฟเวอร์ DNS ที่โฮสต์บน LAN ของฉัน (การตั้งค่าเครือข่ายภายในบ้านทั่วไป) เราเตอร์ได้รับการกำหนดค่าให้ส่งเซิร์ฟเวอร์ DNS ของ ISP โดยเป็นส่วนหนึ่งของข้อมูลการเช่า DHCP

ฉันตั้งค่าเครื่อง VirtualBox บนพีซีสำหรับการพัฒนาของฉันและติดตั้ง Debian Squeeze (6.0.4) แล้ว โหมดเครือข่าย VirtualBox คือBridged Adapterการจำลองเซิร์ฟเวอร์แบบสแตนด์อโลนบน LAN ของฉัน การเป็นเซิร์ฟเวอร์ VirtualBox แทนที่จะเป็นเซิร์ฟเวอร์จริงไม่ใช่เรื่องสำคัญ แต่ฉันพูดถึงเพื่อความสมบูรณ์

ปัญหา

ทุกครั้งที่การดำเนินการเครือข่ายดำเนินการค้นหา DNS reverse ของ LAN ip ก่อนที่จะดำเนินการเซิร์ฟเวอร์มีความล่าช้านาน ตัวอย่างของการดำเนินงานเครือข่ายที่ช้า:

  • การเชื่อมต่อ SSH ไปยังเซิร์ฟเวอร์จากพีซี dev ของฉัน
  • เชื่อมต่อกับพอร์ต admin ของเซิร์ฟเวอร์ Glassfish
  • netstat -l( netstat -nlเร็วมาก)
  • Starting MTA: exim4 ในการบูตใช้เวลานานกว่าจะเสร็จสมบูรณ์

สิ่งเหล่านี้มีวิธีแก้ปัญหาเช่นการเพิ่ม Ip ของ dev ของฉันไปยัง/etc/hostsหรือเพิ่มตัวเลือกเฉพาะคำสั่งเพื่อหลีกเลี่ยงการทำการค้นหา DNS ย้อนกลับ เห็นได้ชัดว่าการใช้/etc/hostsไปได้ไกลเพียงเพราะมันขัดแย้งกับ DHCP

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

ฉันค้นหาสิ่งนี้มากและบางทีฉันไม่มีคำค้นหาที่ถูกต้อง แต่ฉันไม่พบวิธีแก้ปัญหา ...

อัปเดต 1 ตามคำตอบของ BillThor

การใช้โฮสต์ (dig ให้ผลลัพธ์เหมือนกัน):

# ip of stackoverflow.com
$ time host -v 64.34.119.12
Trying "12.119.34.64.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15537
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;12.119.34.64.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
12.119.34.64.in-addr.arpa. 143  IN      PTR     stackoverflow.com.

Received 74 bytes from 192.168.1.1#53 in 15 ms

real    0m0.020s
user    0m0.008s
sys     0m0.000s

# ip of dev pc
$ time host -v 192.168.1.50
Trying "50.1.168.192.in-addr.arpa"
;; connection timed out; no servers could be reached

real    0m10.004s
user    0m0.004s
sys     0m0.000s

/etc/resolv.conf ของฉัน (ถูกสร้างขึ้นโดยอัตโนมัติระหว่างการติดตั้ง)

nameserver 192.168.1.1

ทั้งโฮสต์และขุดกลับมาเร็วมากสำหรับ IP สาธารณะ แต่ใช้เวลา 10 วินาทีในการหมดเวลาสำหรับ LAN ip ฉันเดาว่า 10s เป็นค่าการหมดเวลาปัจจุบันของฉัน

อัปเดต 2

ด้วยdev-pcไฟล์ / etc / hosts:

$ time getent hosts 192.168.1.50
192.168.1.50    dev-pc

real    0m0.001s
user    0m0.000s
sys     0m0.000s

โดยไม่ต้องdev-pcอยู่ในไฟล์ / etc / hosts:

$ time getent hosts 192.168.1.50

real    0m10.012s
user    0m0.004s
sys     0m0.000s

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

คำตอบ:


3

192.168.1.1 เป็นที่อยู่ IP ของเราเตอร์ของคุณหรือไม่

nameserver 192.168.1.1 แนะนำให้เราเตอร์ของคุณโฆษณาตัวเองเป็นเซิร์ฟเวอร์ DNS แทนที่จะ "ส่งเซิร์ฟเวอร์ DNS ของ ISP"

คุณมียี่ห้อและรุ่นของเราเตอร์อะไร เว็บอินเตอร์เฟสแสดงข้อความบันทึกหรือไม่?

ฉันสงสัยว่าเราเตอร์ของคุณกำลังส่งต่อคำขอไปยังเซิร์ฟเวอร์ชื่อ ISP ของคุณหรือไม่ แต่เซิร์ฟเวอร์ชื่อ ISP ของคุณกำลังส่งคำขอเนื่องจากพวกเขาไม่ต้องการให้คุณทราบว่าเครื่องของพวกเขาที่มี IP 192.168.1.50เรียกว่าอะไร

ข้อเสนอแนะ:

  • ตรวจสอบการตั้งค่าเราเตอร์ของคุณอีกครั้ง มันควรจะตอบการร้องขอของคุณเองเครือข่ายส่วนตัว บางทีคุณสามารถเพิ่มรายการโฮสต์คงที่ในเว็บอินเตอร์เฟสของเราเตอร์ของคุณ?
  • ลองติดตั้งAvahiบนทุกระบบในเครือข่ายของคุณ
  • บอกให้เราเตอร์ของคุณใช้Google Public DNS ( 8.8.8.8และ8.8.4.4) หรือOpenDNS

เราเตอร์ของฉันคือ "NETGEAR Router WNR3500L" @ 192.168.1.1 บันทึกจะแสดงสัญญาเช่า DHCP และการลงชื่อเข้าใช้งานที่ส่วนติดต่อผู้ดูแล คุณถูกต้องเราเตอร์จะส่ง 192.168.1.1 เป็นเซิร์ฟเวอร์ dns เมื่อจัดการกับสัญญาเช่า DHCP (ยืนยันด้วย Wireshark) ในส่วนติดต่อผู้ดูแลของเราเตอร์ฉันใช้ "รับโดยอัตโนมัติจาก ISP" สำหรับที่อยู่ DNS ตัวเลือกอื่นคือการระบุเซิร์ฟเวอร์ DNS โดยตรงโดย IP ฉันเดาว่านี่หมายความว่าการร้องขอ DNS จะถูกส่งต่อโดยเราเตอร์
bernie

ใช่ฉันเดาว่าจะส่งต่อคำขอ DNS จะทำอย่างไรถ้าคุณเปลี่ยนเป็นใช้ DNS สาธารณะของ Google ( 8.8.8.8และ8.8.4.4) แทน
Mikel

ว้าวเรื่องนี้สร้างความแตกต่างอย่างมาก! เห็นได้ชัดว่าเซิร์ฟเวอร์ DNS เหล่านี้ (ของ Google และ OpenDNS ') ล้มเหลวอย่างรวดเร็วเมื่อได้รับที่อยู่ IP ส่วนตัว ฉันจะทำการทดสอบเพิ่มเติมอีกสองสามครั้ง แต่ฉันคิดว่านี่จะช่วยแก้ปัญหาของฉันได้!
bernie

ทำเครื่องหมายว่านี่เป็นคำตอบที่ยอมรับได้ คำตอบ 3 ข้อนั้นมีประโยชน์ แต่การเปลี่ยนเซิร์ฟเวอร์ dns แก้ปัญหา "ใหญ่"
bernie

4

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

คุณอาจต้องการใช้คำสั่งhostor digเพื่อดูว่าการค้นหาใดที่ช้า หากคุณถูกเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ DNS ซึ่งไม่ได้ใช้งาน DNS จะใช้เวลาสักครู่ก่อนที่จะล้มเหลว คุณสามารถปรับการหมดเวลาและลองใหม่อีกครั้ง/etc/resolv.confเพื่อเร่งความล้มเหลว

แก้ไข: time getent hosts 192.168.1.50เพื่อทดสอบการตอบสนองลองจำแนกโดยใช้ สิ่งนี้จะส่งคืนการค้นหาจาก/etc/hostsไฟล์ของคุณเช่นเดียวกับ DNS hostและdigคำสั่งเพียงตรวจสอบ DNS หากสิ่งนี้กลับมา แต่ใช้เวลาสองสามวินาทีคุณอาจต้องการเปลี่ยนลำดับของhostsรายการในการ/etc/nsswitch.confย้ายไฟล์ไปยังด้านหน้าของรายการ

การตั้งค่าdnsmasqและใช้งานเป็นเนมเซิร์ฟเวอร์ DNS หลักของคุณ/etc/resolve.confควรแก้ไขปัญหาหากคุณมีโปรแกรมใด ๆ ที่ใช้ DNS ในการค้นหาชื่อเท่านั้น Exim ควรใช้โปรแกรมแก้ไขสำหรับการค้นหาพื้นฐาน คุณจะต้องใช้/etc/hostsไฟล์เว้นแต่คุณจะสามารถปิดการใช้งานเซิร์ฟเวอร์ DHCP บนเราเตอร์ของคุณคุณสามารถใช้dnsmasqสำหรับ DHCP dnsmasqจะลงทะเบียนชื่อโดยอัตโนมัติหากมีการระบุไว้ในคำขอ DHCP ที่จัดการ

แก้ไข 2: หากไม่มีคอมพิวเตอร์เครื่องใดของคุณอยู่เสมอคุณอาจต้องการดูการติดตั้ง samba และใช้winsในการกำหนดค่า nsswitch ของคุณ มันควรจะเร็วดังนั้นจึงอาจทำงานได้ถ้าคุณนำหน้าdnsในรายการโฮสต์

คุณสามารถดูการติดตั้งavahiยูทิลิตี้ซึ่งจะเปิดใช้งานการค้นหาอัตโนมัติบนเครือข่ายลิงค์ท้องถิ่น ฉันได้ทำงานกับด้าน IPv6 แล้ว แต่ไม่ได้เผยแพร่ที่อยู่ IPv4 โดเมนเริ่มต้นสำหรับโฮสต์คือ '.local' สิ่งนี้อาจไม่เหมาะสมในกรณีของคุณ แต่สามารถเขียนทับได้ นอกจากนี้ยังดูเหมือนว่าจะทำการค้นหาช้ากว่าwinsดังนั้นการกำหนดmdnsล่วงหน้าdnsในการกำหนดค่า nsswitch อาจไม่เหมาะสม


ฉันคิดว่าเขาพูดว่า LAN ทั้งหมด (และเท่านั้น) ค้นหาช้าและเขาพยายามหลีกเลี่ยงไฟล์โฮสต์โดยสิ้นเชิง
ckhan

เนื่องจากนี่เป็นเพียงเซิร์ฟเวอร์ทดสอบ (และเซิร์ฟเวอร์เสมือนด้วย!) ฉันจึงไม่สามารถเชื่อถือได้ในฐานะเซิร์ฟเวอร์ DHCP สำหรับ LAN ทั้งหมด มีไคลเอนต์ไร้สายอื่น ๆ เป็นครั้งคราวด้วยเช่นกันที่ต้องใช้ IP แม้ว่าพีซี dev ของฉันและดังนั้นเซิร์ฟเวอร์ทดสอบจึงไม่ทำงาน
bernie

อัปเดตโพสต์ของฉันอีกครั้ง ขอบคุณสำหรับความช่วยเหลือของคุณ
bernie

3

หากคุณไม่ต้องการทำแบบฝึกหัดการตั้งค่าเซิร์ฟเวอร์ DNS (และ DHCP) สำหรับเครือข่ายในบ้านของคุณคุณสามารถบอกบริการต่าง ๆ ว่าเป็นไปได้ที่จะไม่ทำการค้นหา DNS ย้อนกลับ

ตัวอย่างเช่นหากต้องการปิดใช้งานการค้นหา reverse DNS สำหรับ SSHD ให้เพิ่มรายการต่อไปนี้ในsshd_configไฟล์ (หรือคล้ายกันขึ้นอยู่กับ distro):

UseDNS no

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

host_lookup = *

ดูเหมือนว่าคุณสามารถส่งออกตัวแปรสภาพแวดล้อมนี้สำหรับผู้ใช้ที่เริ่มต้นกระบวนการ Glassfish:

export AS_NO_REVERSE_DNS=true


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

1

มีปัญหาเดียวกันหลังจากเปลี่ยนจากไดนามิกเป็น IP คงที่ เครือข่ายของฉันได้รับการกำหนดค่าแล้ว: STATIC - ไม่มี IPv6 และไม่ต้องการใช้เมลเซิร์ฟเวอร์

ฉันแก้ไขปัญหาด้วยการทำ:

1: เรียกใช้ dpkg-reconfigure exim4-config

2: เมื่อคุณได้รับคำถามการค้นหา DNS -> ตั้งค่าการค้นหา DNS ให้น้อยที่สุด (หมุนโทรศัพท์)

มันทำให้ฉันมีข้อผิดพลาดว่าการค้นหาแบบนี้จะไม่ทำงานและข้อเสนอแนะในการแก้ไข / etc / hosts - แต่สิ่งเดียวที่ฉันทำกับ / etc / hosts คือการแสดงความคิดเห็นเกี่ยวกับ ip6-allnodes และ ip6-allrouters

รีบูตควรเร็วตอนนี้ (สำหรับฉันมันเป็นอย่างน้อย)

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