호스트 이름 -i는 Linux에서 이상한 결과를 반환합니다.

호스트 이름 -i는 Linux에서 이상한 결과를 반환합니다.

아래 명령을 실행하면 이상한 IP 주소가 나타납니다.

hostname -i
198.105.244.11 198.105.254.11

내 호스트 파일 항목은 기본 구성에 있습니다. 여기에 내 /etc/hosts 파일 항목의 내용이 있습니다.

 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

이 컴퓨터의 실제 IP는 다음과 같습니다.192.168.2.31

/etc/hosts파일에 다음 항목을 추가하면

 192.168.2.31   myhost

예상한 결과를 얻을 수도 있습니다.

 hostname -i
 192.168.2.31

그런데 왜 실행할 때 다른 IP 범위가 표시됩니까 hostname -i?

고쳐 쓰다:

ip r

192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.31 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 192.168.2.1 dev eth0

ifconfig eth0

eth0      Link encap:Ethernet  HWaddr ##removed##  
          inet addr:192.168.2.31  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feca:24c2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2153703 errors:0 dropped:0 overruns:0 frame:0
          TX packets:612859 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:189727756 (180.9 MiB)  TX bytes:761146814 (725.8 MiB)

(Cent 6.4 사용)

답변1

이 호스트 이름에 대한 DNS 서버에 이전 DNS 레코드가 있을 수 있습니다. dig를 사용하여 이를 확인할 수 있습니다.

dig <your.host.name>

답변2

이는 DNS 서버의 속임수처럼 보입니다. 알 수 없는 호스트 이름/FQDN을 쿼리하면 얻은 두 개의 IP 주소가 정확하게 반환됩니다.

$ nslookup 알 수 없는 이름 4.2.2.2
서버: 4.2.2.2
주소: 4.2.2.2#53

신뢰할 수 없는 답변:
이름: 알 수 없는 이름
주소:198.105.244.11
이름: 알 수 없는 이름
주소:198.105.254.11

귀하의 서버는 먼저 DNS를 쿼리한 다음 /etc/hosts 파일을 찾도록 구성되어 있으므로 DNS 서버가 호스트 이름을 확인하는 경우 후자에 입력한 모든 내용은 무시됩니다. 문제는 사용자가 얻는 고정 IP 주소에 대해 알 수 없는 이름을 "확인"하여 사용자를 속인다는 것입니다.

이 문제를 해결하려면 파일을 편집하여 이 줄 앞에 /etc/nsswitch.conf넣으세요 .filesdnshosts

관련 정보