Sử dụng DNSMasq cho Độ phân giải tên máy chủ cục bộ


9

Tôi đang làm việc để thiết lập một mạng nội bộ gia đình cho tôi và bạn cùng phòng của tôi. Ý tưởng của tôi là chúng tôi sẽ có thể lưu trữ những thứ như hóa đơn tiện ích trong quá khứ ở nơi dễ truy cập hơn ngăn kéo trong nhà bếp, v.v ... Dù sao, tôi có Apache 2 chạy trên Raspberry Pi, trên mạng LAN của tôi và nếu tôi sử dụng địa chỉ IP của nó, tôi có thể truy cập các trang đang được phục vụ trên Pi. Vì tôi đang thực hiện dự án này nhiều hơn để tìm hiểu về kết nối mạng để cung cấp dịch vụ cho căn hộ của mình, tôi nghĩ sẽ thật tuyệt nếu mạng của tôi có thể cung cấp độ phân giải tên máy chủ cho mạng LAN của tôi. Vì vậy, thay vì trỏ trình duyệt của tôi tới 192.168.1.151địa chỉ IP của Pi, tôi có thể trỏ nó đến oberon(tên máy chủ của nó) và xem các trang web được cung cấp bởi Pi.

Bây giờ tôi biết tôi không phải là người đầu tiên muốn làm điều này, vì vậy tôi đã bắt đầu bởi Googling. Câu hỏi này, cũng trên Unix & Linux, đã giúp tôi rất nhiều: Làm thế nào để làm cho một máy có thể truy cập từ mạng LAN bằng tên máy chủ của nó . Tại thời điểm này, tôi đã thử mọi cách trong câu trả lời được xác minh. Tôi đã nghĩ về việc sử dụng hoststệp, nhưng điều đó có nghĩa là tôi sẽ phải nói với bạn cùng phòng của mình cấu hình máy của họ, điều mà tôi không muốn họ phải làm. Tôi đã cố gắng đặt trước một hợp đồng thuê DHCP cho Pi trên bộ định tuyến của mình (NETGEAR WNR1000v2 (còn gọi là N150)) và trong khi bảo lưu hoạt động, độ phân giải tên máy chủ không hoạt động. Kiểu này làm tôi thất vọng vì tôi đã nói với bộ định tuyến của mình IP của Pi tên máy chủ của nó, nhưng nó vẫn không cung cấp thông tin này cho khách hàng trên mạng LAN của tôi.

Với hai phương thức này không hoạt động, tôi quyết định cài đặt dnsmasqtrên Pi. Nó có vẻ đơn giản để cấu hình và tôi sẽ rất vui khi học một công cụ mới. Tôi đã cài đặt và có nó chạy tốt (có vẻ như). Tôi có thể dighoặc nslookupbiệt danh của Pi (mà tôi đặt trong /etc/hostsđể oberonhomenet) và có được kết quả chính xác. Tôi có thể làm tương tự cho các tên internet như yahoo.comvà nhận được câu trả lời chính xác vì tôi đã thiết lập Google 8.8.8.88.8.4.4làm máy chủ dự phòng /etc/dnsmasq.conf. Xem cái này:

me@oberon~$ dig oberon

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> oberon
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;oberon.                                IN      A

;; ANSWER SECTION:
oberon.                 0       IN      A       192.168.1.151

;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  6 18:59:18 2013
;; MSG SIZE  rcvd: 40

Lưu ý rằng SERVER127.0.0.1: oberonđược nhìn lên địa chỉ IP riêng của mình trên chính nó. Đây là những gì tôi mong đợi để xem. Đầu ra là như nhau nếu tôi làm dig oberon @localhost. Vì đầu ra này, tôi nghĩ rằng nó dnsmasqđang hoạt động tốt. Vì vậy, để đưa nó lên cấp độ tiếp theo, tôi muốn tất cả các máy khách trong mạng LAN của mình có thể nhập oberonvào trình duyệt của chúng và được đưa đến oberontrang chỉ mục. Đối với điều này, tôi biết rằng tôi cần phải định cấu hình bộ định tuyến của mình (xin lỗi nếu điều này tránh khỏi lãnh thổ Unix & Linux).

Tôi có một Netgear WNR1000v2 mà tôi khá quen thuộc. Tôi đã định cấu hình chuyển tiếp cổng để tôi có thể SSH vào Pi và tôi cũng đã tìm kiếm trong các cài đặt khác. Tôi biết rằng trước khi tôi bắt đầu dự án này, tôi đã nhận được các máy chủ DNS từ ISP của mình, nhưng bây giờ tôi muốn sử dụng các máy chủ DNS đó chủ yếu nhưng cũng sử dụng 192.168.1.151như một kiểm tra cuối cùng. Vì vậy, tôi đã thay đổi cấu hình DNS của bộ định tuyến của mình thành như sau:

Cấu hình DNS mới của bộ định tuyến của tôi.  Hãy tin tôi khi tôi nói hai mục đầu tiên được cung cấp bởi ISP của tôi

Vì vậy, với cấu hình này, tôi hy vọng có thể thực hiện nslookup oberontrên máy tính để bàn (Windows) của mình và nhận được kết quả 192.168.1.151. Nhưng điều này không xảy ra. Đây là những gì xảy ra:

C:\Users\me>nslookup oberon
Server:  UnKnown
Address:  fe80::226:f2ff:fefa:bea

*** UnKnown can't find oberon: Non-existent domain

Đặt lại hoặc dnsflushingbộ điều hợp mạng trên máy Windows của tôi không thay đổi gì cả.

Bây giờ đây là lý do tại sao tôi xé tóc ra đây:

C:\Users\me>nslookup oberon 192.168.1.151
Server:  oberon.lan
Address:  192.168.1.151

Name:    oberon
Address:  192.168.1.151

Rõ ràng, dnsmasqđang làm việc tốt. Nếu tôi bảo hộp Windows của mình sử dụng 192.168.1.151để phân giải tên oberon, mọi thứ đều ổn ( .lantên miền là một phần của cấu hình dnsmasq, vì vậy tôi dự kiến ​​sẽ thấy nó ở đó). Nếu tôi có thể yêu cầu bộ định tuyến của mình báo cho máy Windows của tôi sử dụng 192.168.1.151khi thực hiện truy vấn DNS, tôi sẽ ổn!

Vì vậy, dường như vấn đề nằm ở bộ định tuyến của tôi, nhưng tôi không thể biết phải làm gì ngoài việc thay đổi máy chủ DNS để bao gồm 192.168.1.151như tôi đã có. bất cứ ai có thể giúp tôi ở đây? Tôi sẽ cố gắng cung cấp thêm thông tin mong muốn.


Hãy thử đặt pi làm máy chủ DNS đầu tiên, sau đó nó có hoạt động không?
terdon

1
Các bộ định tuyến là nơi thích hợp để làm điều này. Nếu vì một lý do nào đó, bạn không quản lý để bộ định tuyến của mình phân phát tên cho Pi, hãy chạy dnsmasq trên Pi và để bộ định tuyến phục vụ Pi vì máy chủ DNS sẽ hoạt động. Có vẻ như vấn đề của bạn là cấu hình bộ định tuyến của bạn đúng cách.
Gilles 'SO- ngừng trở nên xấu xa'

Bạn có đang viết lại hợp đồng thuê DHCP trên máy khách sau khi cập nhật cài đặt DNS trên bộ định tuyến không? Cấu hình DNS được gửi trong hợp đồng thuê DHCP, do đó, nó phải có một hợp đồng thuê mới để có được các cài đặt mới. Là một giải pháp thay thế, bạn cũng có thể xem xét mDNS / zeroconf / avahi.
Patrick

Câu trả lời:


2

Vấn đề của bạn nằm ở sự hiểu lầm của bạn về cách sử dụng các máy chủ DNS đó, tôi không biết chi tiết chính xác về các cửa sổ phương thức sử dụng để chọn máy chủ DNS nào để truy vấn nhưng tôi đang đặt cược chính> phụ> thứ ba / luôn luôn /. Và ngay cả khi nó không phải là trò chơi vòng tròn, bạn vẫn sẽ truy vấn một máy chủ không có ích 2 trong 3 lần.

Điều gì sẽ xảy ra là máy chủ chính sẽ được truy vấn. Nếu hết thời gian, có thể là một hoặc hai giây, máy chủ tiếp theo sẽ được truy vấn. DNS không phải là một hệ thống "đồng thuận", nếu một trong các máy chủ từ xa bị truy vấn, cuối cùng nó sẽ phát hiện ra kết quả mà tên máy chủ của bạn không tồn tại, từ quan điểm của nó là máy chủ DNS internet.

Bạn cần dns LAN của riêng bạn làm máy chủ DNS chính. Những người khác sẽ tạo ra các máy chủ sao lưu phù hợp nhưng tôi xem xét chỉ cần bỏ hoàn toàn.

Cũng cần lưu ý, dns ngược (tra cứu tên IP) của bạn phân giải thành "hostname.lan" nhưng các bài kiểm tra độ phân giải chuyển tiếp của bạn chỉ bằng tên máy chủ. Bạn cũng nên có độ phân giải chuyển tiếp cho hostname.lan được thiết lập ở đâu đó. Mặc dù có thể có nhiều tra cứu chuyển tiếp "tên để giải quyết" cho máy chủ lưu trữ, nhưng có một kỳ vọng rằng có một tra cứu ngược lại IP với một tên, đến lượt nó có một tên phù hợp với bản ghi IP đó. Nó không phải lúc nào cũng quan trọng và đôi khi làm cho các tệp nhật ký rên rỉ, nhưng một số thứ nhạy cảm với điều này hơn những thứ khác.

Ngoài ra, đừng quên xóa bất kỳ tập tin máy chủ lưu trữ nào mà bạn đã đặt khi bạn hoàn thành công việc (tôi không biết điều đó có liên quan đến dnsmasq không, không bao giờ sử dụng nó, tôi có một cấu hình tương tự nhưng phức tạp hơn bằng cách sử dụng tên ISC-BIND máy chủ mà bạn có thể định cấu hình chuyển tiếp đến các máy chủ khác như bạn đang sử dụng hoặc đơn giản là sử dụng nó như một máy chủ DNS không chuyển tiếp tự phân giải tên đầy đủ - đó là những gì tôi đã thiết lập).

Không cần phải nói, như lần đầu tiên bạn suy đoán rằng bạn rất xa cách khi thiết lập thiết bị này, hầu như mọi mạng LAN công ty được phát triển hợp lý và rất nhiều mạng LAN gia đình phát triển quá mức sẽ có loại thiết lập này.


1
Cảm ơn sự giúp đỡ của bạn iain! Tôi hiểu những gì bạn đang nói về cách DNS không phải là một hệ thống đồng thuận, vì vậy tôi đã đặt Pi thành máy chủ DNS chính trong bộ định tuyến của mình. Sau đó tôi đã gia hạn hợp đồng thuê DHCP trên máy Windows của mình. Tuy nhiên, nslookup oberonvẫn không hoạt động. Một điều tôi không đề cập đến trong văn bản của bài đăng gốc của mình là khi nslookupthất bại, nó nói rằng máy chủ mà nó sử dụng là một fe80địa chỉ IPv6 - mà tôi biết là một địa chỉ liên kết cục bộ dành riêng. Nhưng tôi không biết điều đó có nghĩa gì với DNS. Là hộp Windows của tôi truy vấn chính nó? dnsflushkhông thay đổi hành vi này.
c.anna

Và với giá trị của nó, độ phân giải tên máy chủ LAN cũng không hoạt động trên các thiết bị iOS của tôi. Tôi chưa đề cập đến chúng vì tôi có nhiều sức mạnh nội tâm hơn với Windows, nhưng nếu vấn đề của tôi thực sự phát sinh nghiêm trọng từ Windows, tôi sẽ không hy vọng các thiết bị này có cùng một vấn đề.
c.anna

Ngoài ra, để làm giảm sự lo lắng của bạn về .lantên miền, tôi đã định cấu hình dnsmasqđể tự động mở rộng tên máy chủ đơn giản để thêm .lan. Chạy nslookup oberon.lan 192.168.1.151trả về kết quả mong đợi củaName: oberon.lan Address: 192.168.1.151
c.anna

Tôi tự hỏi nếu có một "chủ nghĩa cửa sổ" tại nơi làm việc hoặc một cái gì đó, việc đặt tên máy chủ của bạn trực tiếp dưới tên miền cấp cao nhất ('oberon.') Là một điều kỳ quặc, oberon.lan có ý nghĩa hơn nhiều. Một điều cần lưu ý là hậu tố tên miền và 'tên miền tìm kiếm' thường được thêm vào một tên để giải quyết nó, ví dụ: "oberon" có thể được giải quyết và được tìm thấy là "oberon.lan" nếu lan nằm trong miền tìm kiếm. Tuy nhiên, các truy vấn trên dường như không cho thấy trường hợp này, đào đặc biệt có thời gian kết thúc trên tên máy chủ, nhưng hãy lưu ý điều đó khi kiểm tra!
iain

Hmm sau khi sửa các dns chính, bạn sẽ cần phải mở lại các cửa sổ dhcp (đặt lại bộ điều hợp nên làm điều đó), sau đó kiểm tra xem ipconfig /allmáy chủ dns chính xác đang được sử dụng, nếu đúng thì bạn có thể cần phải xả. Nhưng tôi không thể nghĩ gì khác, nó sẽ hoạt động.
sourcejedi

1

Có thể hơi muộn, nhưng vô hiệu hóa ipv6 trên bộ điều hợp không dây của tôi đã làm điều đó.


Upvote: Luôn luôn là một ý tưởng tốt. Trừ khi hệ thống ở ngoài đó trần truồng và yêu cầu nó. Và cho đến nay (tháng 9 năm 2017) có rất ít thiết bị sử dụng tại nhà đáp ứng danh mục đó, nếu có.
SDsolar
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.