Network dns_get_record

(PHP 5, PHP 7, PHP 8)

dns_get_record — 호스트 이름과 연결된 DNS 리소스 레코드 가져오기


설명

dns_get_record(
    string $hostname,
    int $type = DNS_ANY,
    array &$authoritative_name_servers = null,
    array &$additional_records = null,
    bool $raw = false
): array|false
                

지정된 hostname과 연결된 DNS 리소스 레코드를 가져옵니다.


매개변수

hostname
hostname은 "www.example.com"과 같은 유효한 DNS 호스트 이름이어야 합니다. 역방향 조회는 in-addr.arpa 표기법을 사용하여 생성할 수 있지만 대부분의 역방향 조회에는 gethostbyaddr()이 더 적합합니다.

메모: DNS 표준에 따라 이메일 주소는 user.host 형식으로 제공됩니다(예: hostmaster@example.com이 아닌 hostmaster.example.com). 다음과 같은 함수와 함께 사용하기 전에 이 값을 확인하고 필요한 경우 수정하십시오. mail().

type
기본적으로 dns_get_record()hostname과 관련된 모든 리소스 레코드를 검색합니다. 쿼리를 제한하려면 선택적 type 매개변수를 지정하십시오. DNS_A, DNS_CNAME, DNS_HINFO, DNS_CAA, DNS_MX, DNS_NS, DNS_PTR, DNS_SOA, DNS_TXT, DNS_AAAA, DNS_SRV, DNS_NAPTR, DNS_A6, DNS_ALL 또는 DNS_ANY 중 하나일 수 있습니다.

메모: 플랫폼 간의 libresolv 성능의 편심 때문에 DNS_ANY는 항상 모든 레코드를 반환하지 않으며 느린 DNS_ALL은 모든 레코드를 더 안정적으로 수집합니다.

메모: Windows: DNS_CAA는 지원되지 않습니다. DNS_A6에 대한 지원은 구현되지 않았습니다.

authoritative_name_servers
참조에 의해 전달되고 제공된 경우 Authoritative Name Servers에 대한 리소스 레코드로 채워집니다.
additional_records
참조로 전달되고 제공된 경우 Additional Records로 채워집니다.
raw
type은 원시 DNS 유형 ID로 해석됩니다(DNS_* 상수는 사용할 수 없음). 반환 값에는 수동으로 구문 분석해야 하는 data 키가 포함됩니다.

반환 값

이 함수는 연관 배열의 배열을 반환하거나 실패 시 false를 반환합니다. 각 연관 배열에는 최소한 다음 키가 포함됩니다.

기본 DNS 속성

Attribute Meaning
host 나머지 관련 데이터가 참조하는 DNS 네임스페이스의 레코드입니다.
class dns_get_record()는 인터넷 클래스 레코드만 반환하므로 이 매개변수는 항상 IN을 반환합니다.
type 레코드 유형을 포함하는 문자열입니다. 유형 값에 따라 결과 배열에 추가 속성도 포함됩니다. 아래 표를 참조하십시오.
ttl 이 레코드에 "Time To Live"가 남아 있습니다. 이것은 레코드의 원래 ttl과 같지 않고 오히려 원래 ttl에서 권한 있는 이름 서버가 쿼리된 이후 경과한 시간 길이를 뺀 것과 같습니다.

'유형'에 종속된 연관 배열의 다른 키

Type Extra Columns
A ip: 점으로 구분된 10진수 표기법의 IPv4 주소입니다.
MX pri: 메일 교환기의 우선 순위. 낮은 숫자는 더 높은 우선 순위를 나타냅니다. target: 메일 교환기의 FQDN입니다. dns_get_mx()도 참조하십시오.
CNAME target: 레코드의 별칭이 지정된 DNS 네임스페이스의 위치 FQDN입니다.
NS target: 이 호스트 이름에 대한 권한이 있는 이름 서버의 FQDN입니다.
PTR target: 이 레코드가 가리키는 DNS 네임스페이스 내의 위치입니다.
TXT txt: 이 레코드와 연결된 임의의 문자열 데이터입니다.
HINFO cpu: 이 레코드가 참조하는 시스템의 CPU를 지정하는 IANA 번호입니다. os: 이 레코드에서 참조하는 시스템의 운영 체제를 지정하는 IANA 번호입니다. 이러한 값의 의미는 IANA의 » Operating System Names을 참조하세요.
CAA flags: 1바이트 비트 필드. 현재 '중요'를 의미하는 비트 0만 정의됩니다. 다른 비트는 예약되어 있으므로 무시해야 합니다. tag: CAA 태그 이름(영숫자 ASCII 문자열). value: CAA 태그 값(이진 문자열, 하위 형식을 사용할 수 있음). 추가 정보는 다음을 참조하세요. » RFC 6844
SOA mname: 리소스 레코드가 시작된 시스템의 FQDN입니다. rname: 이 도메인에 대한 관리 연락처의 이메일 주소입니다. serial: 요청된 도메인의 이 개정판의 일련 번호입니다. refresh: 이 도메인의 원격 복사본을 업데이트할 때 보조 이름 서버가 사용해야 하는 새로 고침 간격(초)입니다. retry: 새로 고침이 실패한 후 두 번째 시도를 하기 전에 기다리는 시간(초)입니다. expire: 보조 DNS 서버가 삭제하기 전에 성공적인 새로 고침 없이 영역 데이터의 원격 복사본을 유지해야 하는 최대 시간(초)입니다. minimum-ttl: 클라이언트가 서버에서 새 확인을 요청하기 전에 DNS 확인을 계속 사용할 수 있는 최소 시간(초)입니다. 개별 리소스 레코드로 재정의할 수 있습니다.
AAAA ipv6: IPv6 address
A6 masklen: chain에서 지정한 대상에서 상속할 길이(비트)입니다. ipv6: chain과 병합할 이 특정 레코드의 주소입니다. chain: ipv6 데이터와 병합할 상위 레코드입니다.
SRV pri: (우선순위) 가장 낮은 우선순위가 먼저 사용되어야 합니다. weight: 일반적으로 우선 순위가 지정된 targets 중 무작위로 선택해야 하는 가중치에 대한 순위입니다. targetport: 요청한 서비스를 찾을 수 있는 호스트 이름 및 포트. 추가 정보는 다음을 참조하세요. » RFC 2782
NAPTR orderpref: 위의 priweight와 동일합니다. flags, services, regex, replacement: » RFC 2915에 정의된 매개변수.

변경 로그

버전 설명
7.0.16, 7.1.2 CAA 레코드 유형에 대한 지원이 추가되었습니다.

Examples

예제 #1 dns_get_record() 사용

                  
<?php
$result = dns_get_record("php.net");
print_r($result);
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => MX
            [pri] => 5
            [target] => pair2.php.net
            [class] => IN
            [ttl] => 6765
        )

    [1] => Array
        (
            [host] => php.net
            [type] => A
            [ip] => 64.246.30.37
            [class] => IN
            [ttl] => 8125
        )

)
                

예제 #2 dns_get_record() 및 DNS_ANY 사용

MX 레코드가 확인되면 메일 서버의 IP 주소를 원하는 것이 매우 일반적이므로 dns_get_record()는 또한 관련 레코드를 포함하는 additional_records의 배열을 반환합니다. Authoritative_name_servers는 신뢰할 수 있는 이름 서버 목록을 포함하여 반환됩니다.

                  
<?php
/* Request "ANY" record for php.net,
   and create $authns and $addtl arrays
   containing list of name servers and
   any additional records which go with
   them */
$result = dns_get_record("php.net", DNS_ANY, $authns, $addtl);
echo "Result = ";
print_r($result);
echo "Auth NS = ";
print_r($authns);
echo "Additional = ";
print_r($addtl);
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

Result = Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => MX
            [pri] => 5
            [target] => pair2.php.net
            [class] => IN
            [ttl] => 6765
        )

    [1] => Array
        (
            [host] => php.net
            [type] => A
            [ip] => 64.246.30.37
            [class] => IN
            [ttl] => 8125
        )

)
Auth NS = Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => remote1.easydns.com
            [class] => IN
            [ttl] => 10722
        )

    [1] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => remote2.easydns.com
            [class] => IN
            [ttl] => 10722
        )

    [2] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => ns1.easydns.com
            [class] => IN
            [ttl] => 10722
        )

    [3] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => ns2.easydns.com
            [class] => IN
            [ttl] => 10722
        )

)
Additional = Array
(
    [0] => Array
        (
            [host] => pair2.php.net
            [type] => A
            [ip] => 216.92.131.5
            [class] => IN
            [ttl] => 6766
        )

    [1] => Array
        (
            [host] => remote1.easydns.com
            [type] => A
            [ip] => 64.39.29.212
            [class] => IN
            [ttl] => 100384
        )

    [2] => Array
        (
            [host] => remote2.easydns.com
            [type] => A
            [ip] => 212.100.224.80
            [class] => IN
            [ttl] => 81241
        )

    [3] => Array
        (
            [host] => ns1.easydns.com
            [type] => A
            [ip] => 216.220.40.243
            [class] => IN
            [ttl] => 81241
        )

    [4] => Array
        (
            [host] => ns2.easydns.com
            [type] => A
            [ip] => 216.220.40.244
            [class] => IN
            [ttl] => 81241
        )

)
                

기타