PHP curl은 getaddrinfo()를 사용하여 호스트 이름을 IP 주소로 확인합니다. 옵션을 설정하면 IPV4 주소를 쉽게 찾을 수 있지만 꽤 많은 일이 걸릴 것이며 IPv6를 네트워크에 올리면 정상적으로 실행 취소하기가 어려울 것입니다.기본적으로 IPV4 주소 만 검색하도록 getaddrinfo()를 설정할 수 있습니까?
전체 우분투 서버에 대해 getaddrinfo()를 IPv4 조회로 기본 설정하는 방법이 있습니까?
감사 웨인
PHP curl은 getaddrinfo()를 사용하여 호스트 이름을 IP 주소로 확인합니다. 옵션을 설정하면 IPV4 주소를 쉽게 찾을 수 있지만 꽤 많은 일이 걸릴 것이며 IPv6를 네트워크에 올리면 정상적으로 실행 취소하기가 어려울 것입니다.기본적으로 IPV4 주소 만 검색하도록 getaddrinfo()를 설정할 수 있습니까?
전체 우분투 서버에 대해 getaddrinfo()를 IPv4 조회로 기본 설정하는 방법이 있습니까?
감사 웨인
이 솔루션은, C에 대한 PHP는 확실하지 않다. getaddrinfo를 호출 할 때 조회 할 항목에 대한 '힌트'를 제공하는 struct addrinfo를 전달합니다. 이 대답에 적용 듯 나의 코멘트에서 아래 복사
struct addrinfo *res;
struct addrinfo hints;
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_INET;
hints.ai_flags = AI_PASSIVE;
hints.ai_socktype = SOCK_STREAM;
getaddrinfo("localhost", "80", &hints, &res);
아래 예 :
은 그냥 '기본값'을 제공한다 getaddrinfo에 대한 래퍼 함수를 만듭니다. 그런 다음 응용 프로그램 전체에서 랩퍼 기능을 사용하십시오. ipv6이 실행 중일 때 함수의 내부 '기본값'을 변경합니다.
Linux의 경우 getaddrinfo()
의 동작은 /etc/gai.conf
으로 조정할 수 있습니다. 이 파일을 사용하여 IPv6 주소가 반환되지 않도록 할 수는 없지만이 파일을 사용하여 IPv6 주소보다 IPv4 주소의 우선 순위를 지정할 수 있습니다.
그래도 PHP/Curl에서 AI_ADDRCONFIG
플래그를 getaddrinfo()
으로 전달하면 현재 컴퓨터에 IPv6 주소가 구성된 경우에만 IPv6 주소가 반환됩니다.
C 또는 PHP의 솔루션에 관심이 있습니까? – askmish
아니요. 내가 sys 또는 dev에 IPv4로 조회를 기본값으로 같은 어딘가에 기본 설정을 설정하고 싶습니다. – Wayne
그런 설정이없는 것 같습니다. 일부 정보는 여기 : http://askubuntu.com/questions/32298/prefer-a-ipv4-dns-lookups-before-aaaaipv6-lookups. – nos