2014-06-24 3 views
0

이 DNS 검색 스크립트를 만들었는데 아주 이상한 일을하고 있습니다. 관련 코드 :가짜 호스트 이름을 해결 하시겠습니까?

def resolver 
    begin 
     Resolv.each_address(@host) do |ip| 
     if ip == false 
      puts "Failed to resolve address" 
     else 
      puts ip 
     end 
     end 
    rescue ArgumentError 
     puts "You must specify a hostname." 
    end 
    end 

모두 한 부분을 제외하고 예상대로 작동합니다. 말도 안되는 것을 입력하면 (예 : fdjafaldjfafbfda) 성공적으로 주소를 확인합니다. 동일한 주소 일 때마다, 비록 내가 입력 한 임의의 쓰레기가 다르더라도. 왜 이런 일이 일어나고 있는지 이해하고 싶습니다. 나는 그것이 코드의 if ip == false 부분과 관련이 있다고 가정하고있다. 내가

ruby resolve.rb www.stackoverflow.fake.domain 

와 예를

require 'resolv' 

def resolver(host) 
    begin 
     puts "resolving \"#{host}\"" 
     Resolv.each_address(host) do |ip| 
     if ip == false 
      puts "Failed to resolve address" 
     else 
      puts ip 
     end 
     end 
    rescue ArgumentError 
     puts "You must specify a hostname." 
    end 
    end 

resolver(ARGV[0]) 

의 약간 수정 된 버전을 실행하면 예상대로

+1

'require 'resolv'; Resolv.each_address ('garbage') {| ip | p ip};'IRB 또는 Pry에서 나를위한 결과를 출력하지 않습니다. 그게 너를위한거야? –

+1

DNS 호스트로 8.8.8.8 (Google)을 사용해보십시오. 그들은 알려지지 않은 주소를 시도하고 납치하지 않을 것입니다. – Matt

답변

1

나는, IP 주소를하지 얻을. 이 방법을 사용하면 다른 결과를 얻을 수 있습니다. DNS 공급자의 "기능"을 실행했을 수 있습니다. 예 : Verisign은 2003 년에 조회 정책을 다시 변경했습니다. 누군가 존재하지 않는 도메인을 쿼리했을 때 대신 Verisign 광고 페이지로 리디렉션되었습니다. Slashdot discussion on Verisign policy from 2003

+0

나는 그것을 생각하지 않았다. 아마 당신 말이 맞아. 제공하는 IP 주소를 찾고, 검색 가이드의 조직 및 넷 이름을 찾습니다. 일종의 리디렉션이어야합니다. p11y에서 제공 한 위의 코드를 실행하면 코드와 동일한 IP 주소를 반환합니다. 따라서 DNS 공급자와 분명히 관련이 있습니다. 흥미 롭 군. – user3408678

+0

반갑습니다. 내 대답으로 문제가 해결되면 수락을 고려해보십시오 (체크 표시 버튼 사용). –

+0

알았어, 고마워. – user3408678

관련 문제