우분투 서버는 LAN 호스트 이름을 확인하지 않습니다


14

비트가 여기에 붙어 있습니다.

/ etc / hosts에 특정 항목이 없으면 LAN 호스트 이름을 확인할 수없는 2 개의 시스템이 있습니다.

그러나 LAN의 다른 시스템은 호스트 이름을 확인할 수 있습니다 .

내 LAN :

  • DNSMasq가 활성화 된 DD-WRT v24-sp2를 실행하는 Cisco 라우터 1 개. LAN에서 호스트 이름과 IP로이를 구성했습니다.
  • 1 x Kubuntu 12.10 (라우터의 DNSMasq에 입력 된 모든 호스트 이름을 올바르게 확인)
  • 2 x NAS (모든 이름을 올바르게 확인)

  • 1 x Ubuntu Server 12.04 (/ etc / hosts에 입력하지 않으면 로컬 호스트 이름이 확인되지 않음)

  • 1 x XBMCLive (Dharma) (항목이 / etc / hosts에 있지 않으면 동일하지 않음)

라우터에서 마지막 2 개의 DNSMasq 항목을 사용하려면 어떻게해야합니까? 각 시스템은 라우터를 네임 서버로 사용하도록 설정되어 있으며 모든 장치는 외부 주소를 올바르게 확인합니다.

감사.

더 많은 정보 :

서버에서 다른 PC를 핑 (wstation)하면

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

그런 다음 .local 을 추가하면

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

직접

$ 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                                                                       

나는 대답을 모른다. 이것이 도움이 될지 전혀 모른다. 그러나 만약 당신이 모른다면 ... 나는 기계 이름 뒤에 ".local"을 붙이면 어떻게 든 발견된다는 것을 발견했다. 구성이 필요하지 않습니다. 주소를 지정했기 때문에 실제로 도움이되었지만 테스트에 사용하는 OS를 추가하거나 제거 할 때 항목을 계속 변경해야했습니다. 그러나 machinename.local을 지정하면 더 이상 걱정할 필요가 없습니다. 이것이 어디에서 오는지 아는 경우 언제든지 알려주십시오. :)
Marty Fried

1
안녕하세요 마티, 답변 주셔서 감사합니다. .local
teracow에서

답변:


15

현재 출력에 대하여

ping wstation
PING wstation.local.domain

PC가 .local.domain비 FQDN 쿼리에 추가 하고 있음을 분명히 나타냅니다 . 이것은 설정에서 잘못 구성되었거나 잘못 잘못 구성되었습니다. (실제로 .local.domain접미사 를 실제로 사용하지 않는 한 )

이름 확인 및 기간

많은 사람들이 모르는 한 가지 중요한 점은 성명은 항상 마침표 ( .)로 끝나야한다는 것 입니다. 생략하면 기계는 로컬 검색 도메인 (예 : mydomain.tld) ​​내에서이를 해결하려고 시도합니다. 이 경우에 대한 쿼리는 mypc.local입니다 mypc.local.mydomain.tld. 이 쿼리를 방지하기 위해 기간.

리졸버 구성

리졸버 구성은 여기서 매우 중요합니다. 우분투 (및 데비안)에서는 파일에 구성되어 있습니다 /etc/network/interfaces(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

Linux에서 이름 확인은 다른 방법으로도 수행 할 수 있습니다. 로컬 DNS 서버가이 모든 것에 대해 쿼리되고있는 것은 아닙니다. 해결 구성에 /etc/nsswitch.conf대한 파일을 살펴보십시오 hosts.

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

즉, 먼저 파일 (파일)을 시도한 /etc/hosts다음 mDNS를 시도한 후에 나중에 실제 DNS 서버를 쿼리합니다. mDNS는 Linux에서 Avahi를 사용하여 구현되며 Apple 장치에서는 Bonjour라고합니다. .local기본적으로 접미사를 사용하며 브로드 캐스트 메시지를 통해 작동합니다. ARP와 비슷하지만 DNS에 적합합니다.

이러한 모든 시스템은 .localmDNS 장치와 혼합 된 정식 DNS 설정에서 사용할 때 매우 혼란스럽고 훨씬 더 복잡 할 수 있습니다 . 한 장치가 작동하고 다른 장치가 작동하지 않는 이유에 대해 지금 혼란 스럽기 때문입니다. 모두 동일한 해결 방법을 사용 하지는 않습니다 .

물건을 정리하려면

  • .localmDNS에 전적으로 의존하지 않는 한 사용을 피하십시오 . 귀하의 질문에서 귀하가 사물을 중앙 위치에 구성하고 싶다는 것을 이해하므로 여기에 내 접근 방식은 피하는 것입니다.
  • 특수한 도메인 이름 (예 :)을 사용하도록 로컬 DNS 서버 (귀하의 경우 DD-WRT 장치)를 구성하십시오 my.home. dnsmasq의 경우이 설정은 단일 설정이지만 정기적 인 설정에서는 DNS 서버와 DHCP 서버 모두에서 구성해야합니다 (DHCP를 통해 발표되므로).
  • 단순하고 고유 한 호스트 이름을 갖도록 모든 PC를 구성하십시오. 이들은 DHCP 요청에서 이것을 사용하며 라우터에서 실행중인 dnsmasq에서이를 사용하여이를 해결합니다. 또는 DHCP에 의존하지 않도록 수동으로 구성하십시오.
  • /etc/resolv.conf과거에 구성에 남은 경우 남은 구성을 제거하십시오 .
  • 네트워크의 PC를 my.home로컬 검색 도메인 으로 사용하도록 구성하십시오 . 이는 DHCP를 통해 자동으로 수행되거나 /etc/network/interfaces파일을 통해 또는 Network Manager에서 고정 주소를 사용하는 경우 수행 할 수 있습니다 .

    여기에 이미지 설명을 입력하십시오

  • 이제 간단한 이름 확인 ( ping hostname)과 전체 이름 ( ping hostname.my.home)이 모두 작동합니다.

5
와! 멋진 답변 gertvdijk! 매우 포괄적입니다. 당신이 한 말을 이해하려면 시간이 필요합니다. 호스트 이름 다음에 점으로 핑을 테스트했으며 올바르게 작동한다고 말할 수 있습니다. 이 LAN에서 영구 컴퓨터에는 DHCP를 사용하지 않습니다. 나는 그것이 무엇인지 이해하지 못했기 때문에 어떤 컴퓨터에서도 .local 설정을 구성하지 않았습니다. 귀하의 지시에 따라 더 자세히 조사하여 다시 연락 드리겠습니다.
teracow

이 포괄적 인 답변에 감사드립니다. mDNS 전에 DNS가 시도되도록 /etc/nsswitch.conf를 변경했습니다 files mdns4_minimal [NOTFOUND=return] dns mdns4. 이제 모든 것이 (나쁜 이름으로 된) host.foo.local 주소 지정된 컴퓨터에서 기대하는 것처럼 작동합니다. 이 변경 이전에는 ping hostname작동했지만 ping hostname.foo.local실패했습니다. 나는 dig hostname실패 했을 때 정말 혼란스러워 dig hostname.foo.local했고 결과를 반환했습니다. 이제 예상대로 FQDN을 핑할 수 있습니다. 이 방법으로 주문하는 데 단점이 있습니까?
TafT

1

gertvdijk의 답변을 바탕으로 방금 nsswitch.conf의 라인을 주석 처리했습니다.

sudo vim /etc/nsswitch.conf

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

0

TAB을 사용하는 대신 IP와 호스트 이름 사이에 여러 공백이 포함 된 / etc / hosts와 비슷한 문제가 발생했습니다. TAB로 변경 한 후 ping을 통해 호스트 이름을 확인할 수 있습니다.

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

/superuser//a/938366/467479 에서도 참조 하십시오


3
죄송합니다. 정확하지 않습니다. 호스트 파일은 공백 또는 탭과 함께 작동합니다. 또한 127.0.0.1에는 먼저 localhost가 있고 그 뒤에 localhost.localdomain이 있어야하며 설정에 따라 시스템 호스트 이름이 있어야합니다. (일부 설정의 경우 Ubuntu / Debian에서 호스트 이름을 127.0.1.1 줄에 넣었습니다.) mDNS / Avahi
The Dude

1
도메인에 Windows 컴퓨터가있는 경우 분명히 Avahi 또는 Zeroconf mDNS 구현과 호환되지 않는 유니 캐스트 DNS를 사용합니다. 또한 /etc/nsswitch.conf를 확인하여 mdns4_minimal [NOTFOUND = return] 이후에 풀링되는지 또는 전체 mdns4 조회를 수행하는지 확인하십시오 (뒤로 이동). 또한 mDNS / sd-DNS 리졸버가 해당 도메인에 대한 조회를 마스크하므로 .local 도메인을 사용하도록 DNS 서버를 구성하지 마십시오. 내부 DNS TLD의 경우 .lan, .work, .home 등을 사용하십시오 (그러나 .biz, .xyz, .web 등과 같은 새 TLD 중 하나는 아님). 행운을 빕니다. 재미있는 DNS 확인의 세계에 오신 것을 환영합니다.
Dude
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.