getent Hosts는 IPv6를 인쇄하고, getent ahosts는 IPv4를 인쇄합니다.

getent Hosts는 IPv6를 인쇄하고, getent ahosts는 IPv4를 인쇄합니다.

내 터미널은 그대로 출력됩니다.

$ getent hosts example.org
2001:500:88:200::10 example.org
$ getent ahosts example.org
192.0.43.10     STREAM 43-10.any.icann.org
192.0.43.10     DGRAM  
192.0.43.10     RAW    

나는 그들이 모두 (적어도주인)은 IPv4 및 IPv6 주소를 모두 인쇄해야 합니다. 왜 다른 주소 유형을 인쇄합니까?

$ uname -srvmpio
Linux 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:17:36 UTC 2012 i686 i686 i386 GNU/Linux

편집하다: 관련이 있을 것 같습니다.이 버그 보고서.

답변1

getent hosts및 둘 다 getent ahostsIPv4 및 IPv6 주소를 인쇄할 수 있지만 인쇄할 주소를 다른 방식으로 결정합니다(이것이 두 가지 다른 명령을 사용하는 요점입니다).

hosts수신 전화gethostbyname2(IPv6 변형 지원gethostbyname). 행동은하드코딩된: IPv6 주소를 찾고, IPv4 주소가 없으면 찾습니다.

ahosts수신 전화getaddrinfo. 이 함수는 지정된 이름에 대한 모든 프로토콜을 열거하므로 동일한 호출에서 IPv4 및 IPv6 주소를 모두 반환할 수 있습니다. 반환되는 내용은 다음의 설정에 따라 결정됩니다./etc/gai.conf. 많은 애플리케이션이 여전히 IPv6로 어려움을 겪고 있기 때문에 대부분의 배포판에서는 기본적으로 IPv4를 선호하고 명시적으로 요청한 경우에만 IPv6을 사용합니다.

Stack Exchange에 관한 ahosts유용한 자료는 다음과 같습니다.gai.conf

관련 정보