getent 호스트는 IPv6을 인쇄하고, getent ahosts는 IPv4를 인쇄합니다


9

터미널에서 바로 출력 :

$ 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

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


제목이 잘못되었습니다 (출력의 반대)
whoan

답변:


8

모두 getent hostsgetent ahosts잠재적으로 모두 IPv4 및 IPv6 주소를 인쇄,하지만 그들은 (두 개의 서로 다른 명령을 갖는 지점이 있다는) 다르게 인쇄 할 수있는 주소를 결정할 수 있습니다.

hosts호출 gethostbyname2(의 IPv6 지원 변형 gethostbyname). 이 동작은 하드 코딩되어 있습니다 . IPv6 주소를 찾아보고 존재하지 않는 경우 IPv4 주소를 찾으십시오.

ahosts전화 getaddrinfo. 이 함수는 주어진 이름에 대한 모든 프로토콜을 열거하므로 동일한 호출에서 IPv4 및 IPv6 주소를 모두 반환 할 수 있습니다. 반환되는 내용은의 설정에 따라 결정됩니다 /etc/gai.conf. 많은 응용 프로그램이 여전히 IPv6에 대처하기 위해 고군분투하기 때문에 대부분의 배포판은 기본적으로 IPv4를 선호하며 명시 적 요청에 의해서만 IPv6을 사용합니다.

일부 유용한 읽기 ahostsgai.conf스택 교환 주위 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.