예를 들어 AS714에 속하는 IP 범위를 알고 싶습니다.
이 정보는 어떻게 얻습니까?
나는 그 반대의 방법을 알고 있습니다. 그러나 다른 방법은 그렇게 쉬운 것처럼 보이지 않습니다.
예를 들어 AS714에 속하는 IP 범위를 알고 싶습니다.
이 정보는 어떻게 얻습니까?
나는 그 반대의 방법을 알고 있습니다. 그러나 다른 방법은 그렇게 쉬운 것처럼 보이지 않습니다.
답변:
온라인 관련 정보는 http://ipinfo.io/AS714에 나와 있습니다 (다른 ASN과 동등한 세부 정보를 얻으려면 ASN을 교체하십시오).
검색하는 대신 프로그래밍 방식으로 RADb whois 서버를 사용할 수 있습니다.
$ whois -h whois.radb.net -- '-i origin AS714' | grep -Eo "([0-9.]+){4}/[0-9]+" | head
17.108.0.0/16
17.106.0.0/15
17.102.0.0/16
17.207.0.0/16
17.216.0.0/16
17.250.48.0/24
17.252.65.0/24
192.35.50.0/24
17.148.0.0/14
17.86.0.0/17
좋아, 방금 간단한 방법을 찾았습니다. 브라우저에 http://bgp.he.net/[ASXXX]#_prefixes 를 입력하면됩니다 . 여기서 [ASXXX]는 특정 AS이며 http://bgp.he.net/AS714#_prefixes 와 같은 숫자 입니다.
이것을 발견하는 다른 사람을 위해-나는 Ben Dowling의 대답을 정말로 좋아했습니다 . 그러나에 따르면 :
http://www.radb.net/support/query2.php
매우 다른 결과를 산출하는 다른 방법이 있습니다 ! Bens '에서 나오지 않은 페이스 북 IP를 테스트하고있었습니다 | 헤드 결과. 위의 링크에 따르면 IP4 주소에 대한 올바른 쿼리 방법은 다음과 같습니다.
whois -h whois.radb.net '!gas714'
마찬가지로 다음과 같은 방법으로 모든 IP6 주소를 찾을 수 있습니다.
whois -h whois.radb.net '!6as714'
내가 말했듯이-Facebook ASN에서 이것을 실행했을 때 누락 된 IP 주소를 찾았습니다.
나중에 업데이트
불행히도 Radb.net은 정확한 데이터를 제공하지 않습니다 !! 시도 ASN 19281
예를 들어, 당신은 주어진 결과를 볼 수 있지만, 당신은 단순히 후이즈 radb.net 매개 변수없이이 말을한다면 "어떤 기록을 찾을 수 없습니다." IMHO가 충분히 정확하지 않은 것 같습니다.
whois -h whois.radb.net -- '!6as32934'
주소 중간에 줄 바꿈으로 "잘림"됩니다
echo '!6as32934'|nc whois.radb.net 43
bgp.he.net에 대한 쿼리를 실제로 자동화 할 수 없으며 403 응답을 계속 얻은 다음 사용자 에이전트를 위조 할 때 실제로 실제 브라우저인지 확인하려고 시도했습니다. bgp.he.net (사이트에 연락해도)으로 모든 것에 실패했습니다.
DID가 나를 위해 일한 것은 Ben Dowling이 다른 답변에서 말한 것처럼 http://ipinfo.io 를 쿼리하는 것이 었습니다 .
ASN 당 모든 IP 블록을 얻기 위해 파이썬 스크립트를 수행했습니다. CSV 파일에 모든 AS 번호 목록이 있습니다. 여기있어:
import requests
from bs4 import BeautifulSoup
import re
url_base = 'http://ipinfo.io/'
as_base = 'AS'
output = open('ip_per_asn.csv', 'w')
with open('chilean_asn.csv') as f:
lines = f.read().splitlines()
for asn in lines:
ASN = as_base + asn
page = requests.get(url_base+ASN)
html_doc = page.content
soup = BeautifulSoup(html_doc, 'html.parser')
for link in soup.find_all('a'):
if asn in link.get('href'):
auxstring = '/'+as_base+asn+'/'
line = re.sub(auxstring, '', link.get('href'))
printstring = asn+','+line+'\n'
if 'AS' not in printstring:
output.write(printstring)
print asn+'\n'
print 'script finished'
즉, ipinfo.io와 함께 curl을 사용할 수도 있습니다. 정중하게 행동하고 서버에 터무니없이 큰 쿼리를하지 마십시오.