아래 명령을 실행하면 이상한 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
넣으세요 .files
dns
hosts