호스트 이름의 IP 주소 확인


85

DNS 서버 IP 주소와 호스트 이름이 있습니다.

Java를 사용하여 IP 주소와 호스트 이름을 사용하여 DNS 서버에서 반환 한 호스트 이름의 IP 주소를 어떻게 찾을 수 있습니까?


3
dig <hostname>명령 줄에서?
ceejayoz 2013

Java 코드에서 동일한 작업을 수행하는 방법과 DNS-Server IP 주소 및 호스트 이름을 어디에서 사용해야합니까?
Dark Matter

또 다른 쿼리는 어떤 경우 든 DNS 서버 IP 주소를 제공해야하거나 기본적으로 찾으려고 할 것입니다. 여기서 호스트 이름 만 사용해야하는지 아니면 호스트 이름 + dns- 서버 IP 주소도 사용해야하는지 약간 혼란 스럽습니까?
Dark Matter 2013

1
이름을 사용한 주소 조회는 복잡하지 않습니다. 시스템의 기본 리졸버를 사용하는 한. 그래서 : 정말로 DNS 서버 주소를 사용해야합니까?
AH

나는 같은 질문이 있습니다 : DNS 서버 주소가 정말로 필요합니까 아니면 기본적으로 주소를 확인할 것입니까? BTW 나는 AIX Unix 서버를 사용하고 있습니다.
Dark Matter

답변:


126

InetAddressgetHostAddress()방법을 살펴보십시오 .

InetAddress address = InetAddress.getByName("www.example.com"); 
System.out.println(address.getHostAddress()); 

DNS IP 주소가 10.37.221.152이고 호스트 이름이 "www.student.com"이면 어떻게 IP 주소를 찾을 수 있습니까?
Dark Matter

3
@DarkMatter : InetAddress요청시 DNS 확인 주소를 가져와야 합니다 getHostAddress(). 하지만 특정 DNS 서버 를 사용하도록 강제 할 수 있는지 확실하지 않습니다 .
thegrinner

따라서 프로그래머가 DNS 서버 주소를 명시 적으로 지정하지 않고 이상적으로 자체적으로 해결해야합니까?
Dark Matter

1
@DarkMatter 네. 나는 그것이 컴퓨터 자체에 설정된 DNS 서버를 사용한다고 생각합니다.
thegrinner

29

다음과 같이 할 수 있습니다.

for(InetAddress addr : InetAddress.getAllByName("stackoverflow.com"))
    System.out.println(addr.getHostAddress());

9

이를 위해 InetAddress를 사용할 수 있습니다. 아래 코드를 시도하십시오.

InetAddress address = InetAddress.getByName("www.yahoo.com");
System.out.println(address.getHostAddress());
System.out.println(address.getHostName());

3

위의 모든 내용에서 제안한대로 사용할 수 InetAddress.getByName("hostName")있지만 이것은 캐시 된 IP를 제공 할 수 있습니다. 동일한 내용에 대해서는 Java 설명서를 읽어보십시오. DNS에서 IP를 얻으려면 다음을 사용할 수 있습니다.

InetAddress[] ipAddress = DNSNameService.lookupAllHostAddr("hostName");

@daksh가 지적한 것 외에도 여기에 제안 된대로 DNS 응답 캐시를 비활성화 할 수 있지만 여기에 제안 된대로 OS 및 기타 DNS 서버에서 만든 DNS 응답의 캐시와 캐시를 비활성화하는시기를 알고 있어야 합니다 . 이것이 도움이
되기를 바랍니다

어떤 이유로이 호출은 모든 호스트 이름에 대해 긍정적 인 결과를 제공합니다. 내 IP를 기본값으로 사용한다고 생각했지만 알 수없는 호스트에 대해 특정 IP를 제공합니다.
Imaskar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.