máy chủ Ubuntu không giải quyết tên máy chủ LAN


14

Bit bị kẹt ở đây.

Tôi có 2 máy không thể phân giải tên máy chủ LAN, trừ khi có các mục cụ thể trong / etc / hosts

Nhưng các máy khác trong mạng LAN có thể phân giải tên máy chủ.

Mạng LAN của tôi:

  • 1 x Bộ định tuyến của Cisco chạy DD-WRT v24-sp2 với DNSMasq được bật. Tôi đã cấu hình cái này với tên máy chủ và IP trên mạng LAN của tôi.
  • 1 x Kubfox 12.10 (giải quyết chính xác tất cả tên máy chủ miễn là chúng được nhập vào DNSMasq trên bộ định tuyến)
  • 2 x NAS (cũng giải quyết chính xác tất cả các tên)

  • 1 x Ubuntu Server 12.04 (điều này KHÔNG giải quyết tên máy chủ cục bộ trừ khi chúng được nhập vào / etc / hosts)

  • 1 x XBMCLive (Pháp) (tương tự - không giải quyết trừ khi các mục nhập nằm trong / etc / hosts)

Làm cách nào để tôi có được 2 cái cuối cùng để sử dụng các mục DNSMasq trên bộ định tuyến? Mỗi máy được đặt để sử dụng bộ định tuyến làm máy chủ tên và tất cả các đơn vị giải quyết chính xác các địa chỉ bên ngoài.

Cảm ơn.

thêm một số thông tin:

Trong khi trên máy chủ, nếu tôi ping một PC khác (wstation)

$ ping wstation
PING wstation.local.domain (x.x.x.x) 

Nếu tôi sau đó nối .local

$ ping wstation.local
PING wstation.local.local.domain (x.x.x.x)

và trực tiếp

$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_req=1 ttl=64 time=0.387 ms
64 bytes from 10.0.0.4: icmp_req=2 ttl=64 time=0.316 ms
64 bytes from 10.0.0.4: icmp_req=3 ttl=64 time=0.312 ms
64 bytes from 10.0.0.4: icmp_req=4 ttl=64 time=0.280 ms
64 bytes from 10.0.0.4: icmp_req=5 ttl=64 time=0.322 ms
^C
--- 10.0.0.4 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.280/0.323/0.387/0.038 ms                                                                       

Tôi không biết câu trả lời, và tôi không biết liệu điều này có hữu ích không, nhưng trong trường hợp bạn không biết ... Tôi phát hiện ra rằng nếu tôi thêm ".local" sau một tên máy, thì bằng cách nào đó nó sẽ được tìm thấy mà không cần bất kỳ cấu hình cần thiết. Nó thực sự giúp tôi vì tôi đang chỉ định địa chỉ, nhưng cần tiếp tục thay đổi các mục khi tôi thêm hoặc xóa HĐH mà tôi đã sử dụng để kiểm tra, v.v. Nhưng, bằng cách chỉ định machinename.local, tôi không còn phải lo lắng nữa. Nếu bạn biết điều này đến từ đâu, hãy nói với tôi. :)
Marty Fried

1
Xin chào Marty, cảm ơn câu trả lời của bạn. Tôi đã thêm một số thông tin vào vấn đề để hiển thị những gì xảy ra với .local
teracow

Câu trả lời:


15

Về sản lượng hiện tại của bạn

ping wstation
PING wstation.local.domain

Rõ ràng chỉ ra rằng máy tính của bạn đang nối thêm .local.domaincác truy vấn không phải FQDN. Đây là một cái gì đó được cấu hình không đúng hoặc ít nhất là sai trong thiết lập của bạn. (trừ khi bạn thực sự sử dụng .local.domainhậu tố trên mục đích)

Tên giải quyết và thời gian

Một điều quan trọng mà nhiều người không biết, đó là tên đầy đủ phải luôn kết thúc bằng dấu chấm ( .). Nếu bạn bỏ qua nó, thì máy sẽ cố gắng giải quyết nó trong miền tìm kiếm cục bộ (ví dụ: mydomain.tld). Vì vậy, trong trường hợp đó, một truy vấn cho mypc.localsẽ trở thành mypc.local.mydomain.tld. Để ngăn chặn điều này, truy vấn với thời gian.

Cấu hình bộ giải

Cấu hình trình phân giải có tầm quan trọng lớn ở đây. Trong Ubuntu (và Debian), phần này được định cấu hình trong tệp /etc/network/interfaces(giả sử bạn không chạy NetworkManager):

iface eth0 inet static
   address 192.168.3.3
   netmask 255.255.255.0
   gateway 192.168.3.1
   dns-nameservers 192.168.3.45 192.168.8.10
   dns-search foo.org bar.com                      # <-- these are the search domains

Việc giải quyết tên trong Linux cũng có thể được thực hiện theo những cách khác. Không chỉ là máy chủ DNS cục bộ đang được truy vấn cho tất cả những điều này. Hãy xem /etc/nsswitch.conftập tin của bạn để biết hostscấu hình giải quyết:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

Điều này có nghĩa là các tệp được thử trước tiên (đây là /etc/hoststệp), sau đó là mDNS và chỉ sau đó máy chủ DNS thực mới được truy vấn. mDNS được triển khai bằng Avahi trong Linux và được gọi là Bonjour trên các thiết bị của Apple. Nó đang sử dụng .localhậu tố theo mặc định và hoạt động thông qua các tin nhắn quảng bá. Giống như ARP hoạt động, nhưng sau đó cho DNS.

Tất cả các hệ thống này có thể rất khó hiểu và thậm chí nhiều hơn khi sử dụng .localtrong thiết lập DNS thông thường được trộn với các thiết bị mDNS. Tôi đoán đây là lý do tại sao bây giờ bạn bối rối về lý do tại sao một thiết bị hoạt động và thiết bị kia không: tất cả chúng không sử dụng cùng một phương pháp giải quyết.

Để sắp xếp mọi thứ

  • Tránh sử dụng nếu .localtrừ khi bạn muốn dựa hoàn toàn vào mDNS. Từ câu hỏi của bạn, tôi hiểu rằng bạn muốn giữ mọi thứ được cấu hình ở vị trí trung tâm, vì vậy cách tiếp cận của tôi ở đây là tránh nó.
  • Cấu hình máy chủ DNS địa phương của bạn (thiết bị DD-WRT trong trường hợp của bạn) để sử dụng một tên miền đặc biệt, ví dụ my.home. Đối với dnsmasq, đây chỉ là một cài đặt, nhưng trong các thiết lập thông thường, cấu hình này phải được cấu hình trên cả máy chủ DNS cũng như máy chủ DHCP (vì nó được thông báo qua DHCP).
  • Cấu hình tất cả các PC để có một tên máy chủ đơn giản và duy nhất. Họ sử dụng điều này trong yêu cầu DHCP và điều này được sử dụng trong dnsmasq chạy trên bộ định tuyến của bạn để giải quyết chúng. Ngoài ra, cấu hình chúng theo cách thủ công để không phải phụ thuộc vào DHCP.
  • Loại bỏ bất kỳ cấu hình còn sót lại /etc/resolv.conftrong trường hợp bạn thay đổi nó trong quá khứ.
  • Định cấu hình các PC trong mạng của bạn để sử dụng my.homelàm miền tìm kiếm cục bộ. Điều này có thể được thực hiện thông qua DHCP tự động hoặc nếu sử dụng địa chỉ tĩnh qua /etc/network/interfacestệp hoặc trong Trình quản lý mạng:

    nhập mô tả hình ảnh ở đây

  • Bây giờ cả tên đơn giản giải quyết ( ping hostname) cũng như tên đầy đủ ( ping hostname.my.home) sẽ hoạt động.

5
Ồ Câu trả lời tuyệt vời gertvdijk! Rất toàn diện. Vì vậy, tôi sẽ cần một chút thời gian để hiểu những gì bạn đã nói. Tôi có thể nói rằng tôi đã thử nghiệm một ping với một dấu chấm sau tên máy chủ và nó hoạt động chính xác. Tôi không sử dụng DHCP trên mạng LAN này cho các máy cố định. Tôi chưa bao giờ định cấu hình cài đặt .local trên bất kỳ máy nào vì tôi không hiểu nó là gì. Tôi sẽ điều tra thêm về điều này theo hướng dẫn của bạn và lấy lại cho bạn.
teracow

Thankyou cho câu trả lời toàn diện này. Tôi đã thay đổi /etc/nsswitch.conf để DNS được thử trước mDNS files mdns4_minimal [NOTFOUND=return] dns mdns4. Bây giờ mọi thứ hoạt động giống như tôi đang mong đợi với các máy chủ địa chỉ host.foo.local của tôi. Trước khi thay đổi này ping hostnamesẽ làm việc nhưng ping hostname.foo.localđã thất bại. Tôi đã thực sự bối rối khi dig hostnamethất bại và dig hostname.foo.localđang trả lại một kết quả, ngược lại với những gì tôi mong đợi. Bây giờ tôi có thể ping FQDN như tôi mong đợi. Có một nhược điểm để đặt hàng theo cách này?
TafT

1

Dựa trên câu trả lời của gertvdijk, tôi chỉ nhận xét dòng này trong nsswitch.conf

sudo vim /etc/nsswitch.conf

.
.
.
hosts:          files dns # mdns4_minimal [NOTFOUND=return] dns

0

Tôi gặp vấn đề tương tự với / etc / hosts chứa nhiều khoảng trắng giữa IP và tên máy chủ, thay vào đó sử dụng TAB. Sau khi thay đổi thành TAB, tên máy chủ có thể được giải quyết bằng ping.

127.0.0.1        test.local
         ^^^^^^^^ → Should be a TAB not multiple spaces.

xem thêm trên /superuser//a/938366/467479


3
Tôi xin lỗi, điều đó KHÔNG chính xác. Các tập tin máy chủ sẽ làm việc với không gian hoặc các tab. Ngoài ra, 127.0.0.1 nên có localhost trước, tiếp theo là localhost.localdomain - và tùy thuộc vào thiết lập, tên máy chủ của bạn. (Tuy nhiên, một số thiết lập, Ubuntu / Debian đã đặt tên máy chủ của bạn trên dòng 127.0.1.1) Tuy nhiên, tôi không khuyên bạn nên cài đặt bất kỳ địa chỉ .local nào trong tệp máy chủ, vì chúng xung đột với mDNS / Avahi
The Dude

1
Nếu bạn có máy Windows trên miền của mình, rõ ràng nó sử dụng DNS unicast, không tương thích với các triển khai mDNS của Avahi hoặc Zeroconf. Ngoài ra, hãy kiểm tra /etc/nsswitch.conf của bạn để xem liệu nó có được bảo lãnh sau mdns4_minimal [NOTFOUND = return] hoặc thực hiện tra cứu mdns4 đầy đủ không (di chuyển trở lại). Ngoài ra, không định cấu hình bất kỳ máy chủ DNS nào để sử dụng tên miền .local, vì trình phân giải mDNS / sd-DNS sẽ che dấu tra cứu đến tên miền đó. Đối với TLD DNS nội bộ của bạn, hãy sử dụng .lan, .work, .home, v.v (nhưng KHÔNG phải là một trong những TLD mới, như .biz, .xyz, .web, v.v ...). Chúc may mắn và chào mừng bạn đến với thế giới thú vị của độ phân giải DNS.
Các Dude
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.