host (1) 명령은 이름 서버 만 사용합니까?


3

매뉴얼 페이지에 따르면 host"에 나열된 서버"를 쿼리해야 /etc/resolv.conf하지만 해당 파일의 첫 번째 항목 만 사용합니다.

thefourthtower:$cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 192.168.1.254
domain gateway.2wire.net
search gateway.2wire.net
thefourthtower:$host thefourthtower
Host thefourthtower not found: 3(NXDOMAIN)
thefourthtower:$host thefourthtower 192.186.1.254
thefourthtower.gateway.2wire.net has address 192.168.1.74

2wire비트는 2 와이어 (2Wire) 모뎀 / 라우터에서 온다. AT & T (또는 2Wire?)는 펌웨어의 성능이 매우 떨어지고 DNS 서버 (캐시)가 일반적으로 AT & T 자체의 DNS 서버에 의해 발생하는 문제인 Google Public DNS보다 느립니다 (대체 서버에는 옵션이 없음).

추가 항목 을 얻 host거나 nslookup사용할 수 있습니까 /etc/resolv.conf(서버를 수동으로 지정하지 않아도 됨)?

또는 /etc/hosts원하는 resolv.conf항목 순서에 따라 호스트를 수동으로 매핑하는 유일한 솔루션 입니까?

최신 정보

위의 어느 것도 Google의 네임 서버가 내 로컬 호스트에 대해 알아야한다고 생각하지 않습니다.

나는 묻습니다 : 로컬 이름에만 특정 이름 서버를 사용할 수 있습니까 ( 'fourthtower'와 같은 이름은 로컬이어야하기 때문에)?

대답은 NO 인 것처럼 보이고 기존 로컬 네임 서버가 너무 좋지 않기 때문에 내 컴퓨터에서 네임 서버를 실행해야합니다.

답변:


3

host명령은 리졸버 라이브러리를 사용하고 해당 라이브러리는 /etc/resolv.conf의 이름 서버 항목을 순서대로 사용하지만 실패시에만 사용합니다. 여러 항목의 목적은 어떤 이유로 기본 서버에 장애가 발생한 경우 중복성을위한 것입니다. 그러나 주 서버는 긍정적이든 부정적이든 (예 : NXDOMAIN) 응답을 제공하며 다른 네임 서버 항목은 사용되지 않습니다. 3 중 중복을 위해 최대 3 개를 가질 수 있습니다.

Google과 같은 외부 이름 서버는 로컬 호스트 이름을 알지 못합니다. 그것들을 / etc / hosts 파일에 두거나 로컬 이름 서버를 실행해야합니다. 로컬 이름 서버를 실행하면 DNS 조회를 캐싱 할 수있어 향후 또는 반복 조회가 훨씬 빨라집니다.

dnsmasq 를 로컬 DNS 및 캐시로 사용 합니다. 정말 많은 도움이됩니다. 그냥 설정 /etc/resolv.conf사용 127.0.0.1하여 ISP 업스트림 서버를 첫 번째 (또는 유일한) 네임 서버 및 사용자에하는 dnsmasq를 구성합니다. ISP가 느리더라도 로컬 캐시는 대부분의 시간을 보상합니다.


1

/etc/resolv.confLAN의 호스트 또는 로컬에서 사용되는 도메인에 대해 모르는 경우 처음 두 개의 네임 서버 항목을 제거하십시오 .

NXDOMAIN 응답은 gateway.2wire.net인터넷에서 사용할 수있는 등록 된 도메인 이름이 아니기 때문일 수 있습니다.

$ dig gateway.2wire.net any

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_5.3 <<>> gateway.2wire.net any
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 7984
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;gateway.2wire.net.             IN      ANY

;; AUTHORITY SECTION:
2wire.net.              1200    IN      SOA     ns1.2wire.com. hostmaster.2wire.com. 2007041700 3600 600 604800 1200

;; Query time: 209 msec
;; SERVER: 10.0.0.9#53(10.0.0.9)
;; WHEN: Tue Aug 30 13:29:23 2011
;; MSG SIZE  rcvd: 95

신뢰할 수있는 네임 서버는와 2wire.net같은 도메인이 없다고 말합니다 gateway.2wire.net. LAN 수준에서만 2wire 제품이 사용하는 것이 편리하다고 생각합니다.

8.8.8.8은 Google 이름 서버이며 개인 LAN의 호스트 및 2 와이어 라우터에서 설정 한 다소 이상한 구성 선택에 대해 알 필요가 없습니다.

네 번째 타워 컴퓨터의 이름은 자체 /etc/hosts테이블에 나타나고 (DNS 이전에 문의하도록 준비해야 함) 실제로 LAN의 DNS 네임 서버 (예 : 2wire 라우터)에 알려야합니다.

당신은 /etc/nsswitch.conf포함 hosts: files dns합니까?


항목이 존재하기 때문에 nsswitch.conf존경받는 다고 믿지 않습니다 . host/etc/hosts
reve_etrange

@reve : true "호스트는 DNS 조회를 수행하기위한 간단한 유틸리티입니다."하지만 host응용 프로그램의 이름 확인 문제를 진단하는 데만 사용 하기를 기대합니다 . 사용하는 응용 프로그램은의 gethostbyname()영향을받습니다 nsswitch.conf.
RedGrittyBrick

0

다음 코드를 사용 하여 /etc/resolv.conf의 모든 이름 서버 를 쿼리 할 수 ​​있습니다 .

grep '^nameserver' /etc/resolv.conf | cut -c 12- | xargs -i host [HOSTNAME] {}

또는 원하는 경우 dig(1):

grep '^nameserver' /etc/resolv.conf | cut -c 12- | xargs -i dig @{} [HOSTNAME]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.