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 -nl
rấ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/hosts
hoặ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/hosts
chỉ đ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-pc
tậ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-pc
tậ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.