호스트 이름 -i가 이상한 IP 주소를 반환하는 이유 이해

호스트 이름 -i가 이상한 IP 주소를 반환하는 이유 이해

다음 질문은 유사하지만 동일하지 않기 때문에 인용합니다.

내 CentOS 7 시스템에서 호스트 이름을 변경한 후 "hostname -i"에서 이상한 IP 주소를 얻었고 왜 이런 일이 발생하는지 알아내려고 노력 중입니다.

다음 명령을 사용하여 호스트 이름을 변경합니다.

# hostnamectl set-hostname saturn
# systemctl restart systemd-hostnamed

내 /etc/hosts 파일은 다음을 보여줍니다:

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

다음은 내 /etc/nsswistch.conf 파일에 있습니다.

hosts:      files dns myhostname

내 서버 IP 주소는 192.168.1.13이지만 "hostname -i"가 이상한 IP 주소를 반환합니다.

# hostname -i
92.242.140.21

그러나 "hostname -I"는 트릭을 수행합니다.

# hostname -I
192.168.1.13

왜 호스트 이름 -i가 92.242.140.21을 반환합니까? DNS가 내 시스템에 할당한 임의의 동적 IP입니까? 누군가 이것을 설명할 수 있나요? 감사해요!

답변1

모든 네트워크 인터페이스에 구성된 모든 IP 주소를 단순히 나열하는 명령과 달리 hostname -Ihostname -i명령은 이름 확인을 수행합니다( hostname맨페이지 참조).

새로 할당된 호스트 이름은 이 파일을 사용하여 확인할 수 없기 때문에 /etc/hosts파일을 실행하면 hostname -i시스템 이름 확인자가 외부 DNS 서버에 대한 DNS 쿼리를 생성하게 됩니다. 이 서버(ISP에 속한다고 가정)에서 이 쿼리는 비어 있는 것으로 표시됩니다(NXDOMAIN 결과: 즉 존재하지 않는 도메인). 귀하의 ISP가 Barefruit와 제휴 관계를 맺고 있으므로 NXDOMAIN 결과를 받지 못하고 대신 귀하의 쿼리에 대한 응답으로 Barefruit IP 주소를 받게 됩니다.

$ dig +short -x 92.242.140.21
unallocated.barefruit.co.uk.

파일에 새 호스트 이름을 추가하면 명령을 실행할 때 /etc/hosts이상한 Barefruit IP 주소가 사라질 것이라고 생각합니다 hostname -i. 그렇지 않은 경우 이 답변을 무시해도 됩니다. :)


재미삼아 이 dig명령을 사용하면 다른 이름 서버를 요청할 수 있습니다. 응답의 차이를 확인하려면 다음 두 명령을 실행하면 됩니다.

$ dig saturn
$ dig @8.8.8.8 saturn

첫 번째는 시스템의 사전 구성된 DNS 서버를 통해 이름 확인을 수행하고 Barefruit IP 주소가 반환될 수 있습니다. 두 번째 명령은 묻습니다.구글 퍼블릭 DNS이름을 확인하고 NXDOMAIN 상태를 반환합니다. 아니면?

그렇다면 귀하의 ISP가 다음과 같은 의심스러운 관행에 관여하고 있을 수 있습니다.DNS 하이재킹, 선택을 취소하거나 DNS 서비스 공급자를 변경할 가능성이 있는지 알아보고 싶을 수도 있습니다.

관련 정보