KISA WHOIS와 netType

서론

KISA(한국인터넷진흥원, Korea Internet & Security Agency)는 IT 위탁집행형 준정부기관으로서 다양한 업무를 수행하는데, 국가 인터넷주소 관리기관으로서 인터넷주소의 정보 검색 서비스인 WHOIS를 제공합니다.

인터넷주소 관리기관으로는 최상위 총괄관리기관 IANA가 있고, 그 아래로 대륙의 인터넷주소자원을 관리하는 APNIC. 그 아래에 한국의 인터넷주소 관리기관인 KISA가 있습니다. 이러한 관리기관들은 공개적으로 WHOIS 서비스를 제공하며, APNIC 역시 WHOIS를 지원합니다.

하지만 KISA의 WHOIS와 다른 WHOIS의 쿼리 결과는 다소 다릅니다. APNIC 등의 WHOIS 서비스는 KISA의 WHOIS를 부분적으로 가져오기 때문입니다. APNIC에서 직접 WHOIS 검색을 해보면,

remarks: This information has been partially mirrored by APNIC from

remarks: KRNIC. To obtain more specific information, please use the

remarks: KRNIC whois server at whois.kisa.or.kr.

source: KRNIC

라는 내용을 확인할 수 있습니다. 어디까지나 부분적으로 미러되었으며, 더 자세한 정보를 위해서는 whois.kisa.or.kr을 방문하라고 안내하고 있습니다.

본론

KISA WHOIS와 APNIC WHOIS의 한국의 주소 조회시 정보 차이

  1. APNIC에서는 2차 할당 정보를 확인할 수 없는 반면, KISA에서는 2차 할당 정보를 확인할 수 있습니다. 즉, 조금 더 자세한 정보를 확인할 수 있습니다.
  2. APNIC로는 주소와 우편번호, 할당일자 등의 내용을 확인할 수 없습니다.
  3. 1과 중복되는 내용이지만, 2차 할당 정보에 선택적으로Optionally 나타나는 정보인 netType을 확인할 수 없습니다.
  4. KISA에서는 한국어로 된 정보를 확인할 수 있습니다(회사명 같은 경우 필요할 수 있습니다, 대부분의 사람들은 한국어로 부르는 한국의 기업을 굳이 영어로 다루고 싶지 않을테니까요).

netType(네트워크 구분)

KISA WHOIS는 2차 할당 정보에서 선택적으로 netType(홈페이지에서 조회시 “네트워크 구분”/“Network Type”)을 제공합니다. 자세한 문서를 찾지는 못했지만, 몇 번의 테스트 결과로 볼 때 netType은 INFRA 혹은 CUSTOMER로 나뉘며 통신회사(SKT, LG, KT)의 대역을 살펴보면 아마 일반 사용자들에게 설치되는 유선 인터넷과 같은 것들이 CUSTOMER로 할당 되는 것으로 보입니다.

netType 필터링

Use Case에 따라 대역을 필터링하고 싶을 수 있습니다. 예를 들어 통신회사에 할당된 대역이 정말 통신회사가 직접 쓰고 있는 건지, 아니면 일반 사용자들에게 나누어 주었는지 알아야 할 수도 있기 때문입니다.

그러한 경우 KISA는 보유하고 있는 전체 IP 대역을 파일로 제공하고 있습니다. 아무나 다운받아 적절히 처리해, KISA가 제공하고 있는 공공데이터포털의 WHOIS OpenAPI를 사용할 수 있습니다. 하루 1만 건에서 10만 건까지 요청을 허가합니다.

관리대행자 ISP 필터링

다만 2차 할당 대역을 스캔하기 위해 API를 사용할 경우 지나치게 많은 요청이 필요할 수 있습니다. 그럴 경우 필요에 따라 관리대행자로 사전 필터링이 가능합니다.

관리대행자란 KISA에서 인터넷주소를 할당 대행을 위해 분배해준 독자적인 네트워크 운영자를 의미하며, 통신회사(SKT, LG, KT와 같은 ISP)라 생각해도 크게 틀리지는 않습니다. 하지만 이 목록을 직접 KISA에서 확인해보면, 생각보다 통신회사 외에도 관리대행자가 무척 많다는 것을 알 수 있습니다. 만약 독자분의 목적이 SKT, LG, KT 등의 통신회사의 대역만을 확인하는 거라면 미리 필터링 해 주는 편이 효율적일 것입니다.

KISA는 소유하고 있는 IP 대역과 마찬가지로 관리대행자별 IP 대역도 제공하고 있습니다. 관리대행자별 IPv4 주소 목록에서 파일을 다운로드 받을 수 있습니다. 홈페이지 내에 IPv6도 제공합니다.

OpenAPI WHOIS

공공데이터포털은 WHOIS OpenAPI를 제공하는데, 하루 1만 개에서 10만 개의 트래픽을 허가합니다.

다만 대규모의 API 호출이 필요한 경우 Leaky bucket과 같은 Rate Limit가 필요합니다. 과도한 호출은 WHOIS 서비스를 방해할 수 있기 때문입니다. 그리고 경험상 제대로 된 오류 핸들링도 필수로 보입니다, API에서 오류가 나는 경우가 제법 잦기 때문입니다.

적절한 관련 문서를 찾아볼 수는 없었지만, 제 테스트 결과 대략 10 RPS(Requests Per Second) 정도는 무리 없이 작동하는 듯 보였습니다(20 RPS에서는 처리중 23 code, Rate Limit 초과 오류를 반환).

결론

좀 더 상세한 정보를 확인하기 위해서는 인터넷주소 할당 체계를 이해한 후, 적절한 WHOIS 서비스를 이용하는 것이 중요합니다. 아마 외국에서는 KISA의 WHOIS에 접근하여 netType과 같은 정보를 확인하기 어려울 것이라고 생각합니다.

재발명하며 뭔가를 배우고 싶으신 분을 위해 제가 사용한 로직을 남겨놓겠습니다.

저는 먼저 KORNET으로 KT를.

broadNnet으로 SKT를.

BORANET, LG_HELLOVISION, PUBNETPLUS, XPEED로 LG의 대역을 필터링하였습니다.

이후 해당 대역들의 첫 번째 아이피를 쿼리한 뒤 2차 할당 내역을 따라가며 CUSTOMER 대역을 구하였습니다. 다만 주의할 요소로는 모든 아이피가 2차 할당을 가지고 있지 않습니다. 저는 이 부분을 약 192정도 점프하여 스캔하게끔 구현하였습니다.

2차 할당 내용을 모두 얻기 위해서는 최소 5만 회 이상의 API 호출이 필요하므로 캐싱(메모이제이션) 등을 resume 할 수 있도록 구현하는 편이 좋습니다.