Tra cứu DNS ngược làm chậm hoạt động mạng trên mạng LAN


9

Môi trường

Thiết lập mạng LAN của tôi khá cơ bản:

  • Một bộ định tuyến được kết nối với modem của ISP và internet
  • Máy tính phát triển của tôi kết nối trực tiếp với bộ định tuyến

Bộ định tuyến cung cấp DHCP nhưng không chạy máy chủ DNS của chính nó. Trên thực tế, không có máy chủ DNS nào được lưu trữ ở bất kỳ đâu trên mạng LAN của tôi (thiết lập mạng gia đình điển hình). Bộ định tuyến được cấu hình để gửi các máy chủ DNS của ISP như một phần thông tin cho thuê DHCP.

Tôi đã thiết lập máy VirtualBox trên PC phát triển của mình và cài đặt Debian Squeeze (6.0.4) trên đó. Chế độ mạng VirtualBox là Bridged Adapterđể mô phỏng một máy chủ độc lập trên mạng LAN của tôi. Trở thành một máy chủ VirtualBox thay vì một máy chủ vật lý không thực sự quan trọng, nhưng tôi đề cập đến nó cho đầy đủ.

Vấn đề

Mỗi khi một hoạt động mạng thực hiện tra cứu ngược DNS của một mạng LAN trước khi thực hiện, máy chủ sẽ bị trì hoãn lâu. Một số ví dụ về hoạt động mạng chậm:

  • Kết nối SSH đến máy chủ từ PC dev của tôi
  • Kết nối với cổng quản trị của máy chủ Glassfish
  • netstat -l( netstat -nlrất nhanh)
  • Starting MTA: exim4 khi khởi động mất nhiều thời gian để hoàn thành

Một số trong số này có cách giải quyết như thêm Ip của máy tính của tôi vào /etc/hostshoặc thêm tùy chọn dành riêng cho lệnh để tránh thực hiện tra cứu ngược DNS. Rõ ràng, việc sử dụng /etc/hostschỉ đi xa vì nó bất hòa với DHCP.

Tuy nhiên, tôi không thể không nghĩ rằng tôi đang thiếu thứ gì đó. Tôi có thực sự cần thiết lập máy chủ DNS ở đâu đó trên mạng LAN không? Đó dường như là một nỗ lực to lớn và vô ích cho nhu cầu của tôi và tôi không thể tin rằng không có lựa chọn nào khác trong môi trường DHCP như của tôi.

Tôi đã tìm kiếm trên mạng rất nhiều cho điều này và có thể tôi không có cụm từ tìm kiếm phù hợp, nhưng tôi không thể tìm thấy giải pháp ...

cập nhật 1 sau câu trả lời của BillThor

Sử dụng máy chủ (đào cho kết quả tương tự):

# 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

My /etc/resolv.conf (đã được tạo tự động trong khi cài đặt)

nameserver 192.168.1.1

Cả máy chủ và máy đào đều trả về rất nhanh cho một ip công cộng nhưng phải mất 10 giây để hết thời gian cho một ip LAN. Tôi đoán 10s là giá trị thời gian chờ hiện tại của tôi.

cập nhật 2

Với dev-pctập tin trong / etc / hosts:

$ time getent hosts 192.168.1.50
192.168.1.50    dev-pc

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

Không có dev-pctập tin trong / etc / hosts:

$ time getent hosts 192.168.1.50

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

Có vẻ như tôi sẽ phải tìm các tùy chọn hoặc tham số chương trình từng phần cho từng người đang cố gắng thực hiện tra cứu DNS ngược! Không ai trong số các máy (ảo hay không) có thể hoạt động như một máy chủ DNS trên mạng LAN của tôi vì chúng không phải lúc nào cũng hoạt động. Thật không may, phần sụn của bộ định tuyến không bao gồm máy chủ DNS.

Câu trả lời:


3

192.168.1.1 có phải là địa chỉ IP của bộ định tuyến của bạn không?

nameserver 192.168.1.1 đề nghị bộ định tuyến của bạn tự quảng cáo là máy chủ DNS, thay vì "gửi máy chủ DNS của ISP".

Những thương hiệu và mô hình của bộ định tuyến bạn có? Giao diện web có hiển thị thông điệp tường trình không?

Tôi tự hỏi liệu bộ định tuyến của bạn có chuyển tiếp yêu cầu đến máy chủ tên của ISP hay không, nhưng máy chủ tên ISP của bạn sẽ bỏ yêu cầu, vì họ không muốn bạn biết máy của họ có IP 192.168.1.50được gọi là gì.

Gợi ý:

  • Kiểm tra kỹ cài đặt bộ định tuyến của bạn. Nó sẽ trả lời các yêu cầu cho mạng riêng của bạn . Có lẽ bạn có thể thêm một mục máy chủ tĩnh trong giao diện web của bộ định tuyến của bạn?
  • Hãy thử cài đặt Avahi trên tất cả các hệ thống trên mạng của bạn.
  • Yêu cầu bộ định tuyến của bạn sử dụng DNS công cộng của Google ( 8.8.8.88.8.4.4) hoặc OpenDNS

Bộ định tuyến của tôi là "Bộ định tuyến NETGEAR WNR3500L" @ 192.168.1.1. Các nhật ký chỉ hiển thị cho thuê DHCP và đăng nhập vào giao diện quản trị. Bạn đã đúng, bộ định tuyến gửi 192.168.1.1 dưới dạng máy chủ dns khi xử lý các hợp đồng thuê DHCP (được xác nhận với Wireshark). Trên giao diện quản trị của bộ định tuyến, tôi đang sử dụng "Nhận tự động từ ISP" cho các địa chỉ DNS. Tùy chọn khác là chỉ định máy chủ DNS trực tiếp bằng IP. Tôi đoán điều này có nghĩa là các yêu cầu DNS thực sự được chuyển tiếp bởi bộ định tuyến.
bernie

Vâng, tôi đoán nó đang chuyển tiếp các yêu cầu DNS. Nếu bạn thay đổi nó để sử dụng Google Public DNS ( 8.8.8.88.8.4.4) thì sao?
Mikel

Wow điều này thực sự làm cho một sự khác biệt LỚN! Rõ ràng các máy chủ DNS này (của Google và OpenDNS ') không hoạt động nhanh khi được cung cấp địa chỉ IP riêng. Tôi sẽ chạy thêm một vài bài kiểm tra, nhưng tôi nghĩ rằng điều này giải quyết vấn đề của tôi!
bernie

Đánh dấu này là câu trả lời được chấp nhận. 3 câu trả lời rất hữu ích, nhưng việc thay đổi máy chủ dns đã giải quyết vấn đề "nói chung".
bernie

4

Không tra cứu DNS sẽ thất bại nhanh chóng. Tuy nhiên, tôi thường chạy dnsmasq sẽ đọc tệp máy chủ và phục vụ các mục đó để tra cứu chuyển tiếp và ngược lại. Nó cũng hoạt động như một máy chủ bộ đệm DNS để giảm tải cho các máy chủ DNS ngược dòng của bạn.

Bạn có thể muốn sử dụng lệnh hosthoặc digđể xem tra cứu nào chậm. Nếu bạn được chuyển hướng đến một máy chủ DNS không chạy DNS thì sẽ mất khá nhiều thời gian để thất bại. Bạn có thể điều chỉnh thời gian chờ và thử lại /etc/resolv.confđể tăng tốc độ thất bại.

EDIT: Để kiểm tra phản hồi của trình phân giải, hãy thử sử dụng time getent hosts 192.168.1.50. Điều này sẽ trả về tra cứu từ /etc/hoststệp của bạn cũng như DNS. Các lệnh hostdigchỉ kiểm tra DNS. Nếu điều này trở lại nhưng mất vài giây, bạn có thể muốn thay đổi thứ tự của hostsmục nhập trong /etc/nsswitch.confcác tệp di chuyển về phía trước danh sách.

Thiết lập dnsmasqvà sử dụng nó làm máy chủ tên DNS chính của bạn /etc/resolve.confsẽ giải quyết vấn đề nếu bạn có bất kỳ chương trình nào chỉ dựa vào DNS để tra cứu tên. Exim nên sử dụng trình phân giải cho tra cứu cơ sở. Bạn sẽ cần một /etc/hoststệp, trừ khi bạn có thể vô hiệu hóa máy chủ DHCP trên bộ định tuyến của mình, bạn có thể sử dụng dnsmasqcho DHCP. dnsmasqsẽ tự động đăng ký tên nếu chúng được cung cấp trong DHCP yêu cầu nó xử lý.

EDIT2: Nếu không có máy tính nào của bạn luôn hoạt động, bạn có thể muốn xem cài đặt samba và sử dụng winstrong cấu hình nsswitch của bạn. Nó sẽ nhanh, vì vậy nó có thể hoạt động nếu bạn đặt nó trước dnstrong mục nhập máy chủ.

Bạn cũng có thể xem việc cài đặt các avahitiện ích sẽ cho phép tự động phát hiện trên các mạng liên kết cục bộ. Tôi có nó hoạt động ở phía IPv6, nhưng nó không xuất bản địa chỉ IPv4. Tên miền mặc định cho máy chủ lưu trữ là '.local'. Điều này có thể không phù hợp trong trường hợp của bạn, nhưng có thể bị ghi đè. Nó cũng có vẻ chậm hơn làm tra cứu hơn winsđể đặt mdnstrước dnstrong cấu hình nsswitch thể không phù hợp.


Tôi nghĩ rằng anh ấy nói tất cả (và duy nhất) mạng LAN trông có vẻ chậm và anh ấy đang cố gắng tránh hoàn toàn một tệp máy chủ.
ckhan

Vì đây chỉ là một máy chủ thử nghiệm (và cả máy chủ ảo nữa!), Tôi không thể dựa vào nó như một máy chủ DHCP cho toàn bộ mạng LAN. Có những máy khách không dây thỉnh thoảng khác cũng cần IP ngay cả khi máy tính dev của tôi và do đó máy chủ thử nghiệm không chạy.
bernie

Cập nhật bài viết của tôi một lần nữa. Cảm ơn vì sự giúp đỡ của bạn.
bernie

3

Nếu bạn không muốn thực hiện thiết lập máy chủ DNS cục bộ (và có khả năng DHCP) cho mạng gia đình của mình, bạn có thể thông báo cho các dịch vụ ở nơi có thể để không thực hiện tra cứu DNS ngược.

Ví dụ: để tắt tra cứu dns ngược cho SSHD, hãy thêm đoạn sau vào sshd_configtệp (hoặc tương tự tùy thuộc vào distro):

UseDNS no

Bạn có thể xóa dòng này khỏi cấu hình Exim, mặc dù tôi không rõ liệu điều này có ảnh hưởng đến tốc độ khởi động hay không, nó sẽ ngăn việc tra cứu ngược lại khi kết nối máy khách:

host_lookup = *

Có vẻ như bạn có thể xuất biến môi trường này cho người dùng bắt đầu quá trình Glassfish:

export AS_NO_REVERSE_DNS=true


Tôi ước tôi có thể thiết lập một máy chủ DNS với thiết bị thực tế mà tôi có, nhưng nó không thực sự khả thi trừ khi tôi tải một phần sụn thay thế trên bộ định tuyến. Cảm ơn các tùy chọn cấu hình; Tôi đã không tìm hiểu về AS_NO_REVERSE_DNStùy chọn cho Glassfish vì vậy tôi sẽ xem xét.
bernie

1

Có vấn đề tương tự sau khi thay đổi từ IP động sang IP tĩnh. Mạng của tôi được định cấu hình ngay bây giờ: STATIC - KHÔNG IPv6 và không có ý định sử dụng máy chủ thư.

Tôi đã giải quyết vấn đề bằng cách làm:

1: chạy dpkg-cấu hình lại exim4-config

2: Khi bạn nhận được câu hỏi tra cứu DNS -> Đặt mức tra cứu DNS ở mức tối thiểu (Quay số)

Nó đã cho tôi một lỗi rằng loại tra cứu này sẽ không hoạt động và đề xuất chỉnh sửa / etc / hosts - nhưng điều duy nhất tôi đã làm với / etc / hosts là nhận xét các dòng ip6-allnodes và ip6-allrouters.

Khởi động lại phải nhanh chóng (đối với tôi nó là ít nhất).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.