Linux에서 whois 명령을 사용하는 방법

whois 조회는 인터넷 도메인의 실제 소유자가 누구인지, 그리고 해당 도메인과 관련된 다양한 상세 정보를 알아볼 수 있는 유용한 방법입니다. Linux 환경에서는 명령줄 인터페이스를 통해 whois 조회를 실행할 수 있습니다. 이 글에서는 그 방법을 자세히 안내합니다.

후이즈 시스템이란 무엇인가?

후이즈 시스템은 도메인 소유권과 관련된 세부 정보를 기록한 데이터베이스 시스템입니다. ICANN(국제 인터넷 주소 관리 기구)은 도메인 이름 등록 및 소유권을 관리하지만, 실제 기록 데이터는 레지스트리라고 불리는 여러 회사에 의해 유지됩니다.

누구나 후이즈 기록을 조회할 수 있습니다. 조회를 요청하면, 레지스트리 중 하나가 해당 요청을 처리하고 관련 후이즈 레코드에서 상세 정보를 제공합니다.

다음은 whois 시스템을 이해하는 데 필수적인 용어들입니다.

레지스트리: 특정 도메인 이름 목록을 관리하는 회사 (여러 회사가 존재합니다).
등록자: 도메인의 법적 소유자. 이 사람의 이름으로 도메인이 등록됩니다.
등록 대행자: 등록자가 도메인을 등록하기 위해 이용하는 회사.

후이즈 레코드에는 도메인 이름을 등록한 개인, 회사 또는 기타 법인과 관련된 모든 연락처 정보가 포함됩니다. 레코드에 포함된 정보량은 등록마다 다를 수 있습니다.

일반적으로 후이즈 기록에는 다음과 같은 정보가 포함됩니다.

등록자 이름 및 연락처 정보 (도메인 소유자)
등록 대행자 이름 및 연락처 정보 (도메인 이름을 등록한 회사)
도메인 등록 날짜
정보가 마지막으로 업데이트된 시간
도메인 만료 날짜

웹 브라우저를 통해서도 whois 조회를 할 수 있지만, Linux whois 명령어를 사용하면 명령줄에서 직접 조회를 수행할 수 있습니다. 이는 그래픽 사용자 인터페이스 없이 컴퓨터에서 조회를 해야 하거나, 쉘 스크립트 내에서 조회를 실행하려는 경우에 특히 유용합니다.

whois 명령어 설치

whois 명령어는 Ubuntu 20.04 버전에 이미 기본으로 설치되어 있습니다. 다른 Ubuntu 버전이나 배포판의 경우, 다음 명령어를 사용하여 설치할 수 있습니다.

sudo apt-get install whois

Fedora 사용자는 다음 명령어를 사용하십시오.

sudo dnf install whois

Manjaro에서는 다음 명령어를 입력합니다.

sudo pacman -Syu whois

도메인 이름으로 whois 조회하기

whois 명령어는 도메인 이름 또는 인터넷 프로토콜(IP) 주소와 함께 사용할 수 있습니다. 각각의 경우 반환되는 정보는 약간씩 다릅니다.

먼저 도메인 이름을 사용하여 조회를 수행하는 예시입니다.

whois cnn.com

whois 레지스트리의 응답은 요약 정보로 시작한 다음 추가 정보를 포함하는 형태로 반복됩니다. 아래는 상표권 설명 및 이용 약관이 제거된 예시입니다.

Domain Name: CNN.COM
Registry Domain ID: 3269879_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.corporatedomains.com
Registrar URL: http://www.cscglobal.com/global/web/csc/digital-brand-services.html
Updated Date: 2018-04-10T16:43:38Z
Creation Date: 1993-09-22T04:00:00Z
Registry Expiry Date: 2026-09-21T04:00:00Z
Registrar: CSC Corporate Domains, Inc.
Registrar IANA ID: 299
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: 8887802723
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited
Domain Status: serverTransferProhibited https://icann.org/epp#serverTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Name Server: NS-1086.AWSDNS-07.ORG
Name Server: NS-1630.AWSDNS-11.CO.UK
Name Server: NS-47.AWSDNS-05.COM
Name Server: NS-576.AWSDNS-08.NET
DNSSEC: unsigned

위 정보는 비교적 명확합니다. 연락처 정보, 등록 날짜 등을 포함하여 등록 대행자 및 레지스트리에 대한 다양한 세부 정보가 제공됩니다. 목록 중 일부 항목은 생소할 수도 있습니다.

IANA(인터넷 주소 할당 기관)는 최상위 도메인 이름 시스템 영역, IP 프로토콜 주소 지정 시스템 및 레지스트리 목록과 같은 사항을 감독하고 조정합니다. 위 결과에서 레지스트리는 ‘IANA ID: 299’로 표시된 299번입니다.

‘도메인 상태’ 줄은 도메인의 현재 상태를 나타내며, 여러 상태가 동시에 적용될 수 있습니다. 각 상태는 확장 가능한 프로비저닝 프로토콜에 따라 정의됩니다. 일부 상태는 거의 볼 수 없으며, 다른 일부는 법적 분쟁과 같은 특정 상황에 제한됩니다.

이 예시에서는 다음과 같은 상태가 적용되었습니다.

clientTransferProhibited: 현재 등록 대행자에서 다른 등록 대행자로 도메인을 이전하는 요청을 거부합니다.
serverDeleteProhibited: 도메인을 삭제할 수 없습니다.
serverTransferProhibited: 도메인을 다른 등록 대행자에게 이전할 수 없습니다.
serverUpdateProhibited: 도메인 정보를 업데이트할 수 없습니다.

마지막 3개 상태는 일반적으로 등록자의 요청이 있거나 법적 분쟁이 진행 중인 경우에 활성화됩니다. 이 경우 CNN은 회사의 도메인을 ‘잠금’ 처리하기 위해 이러한 기능을 요청했을 수 있습니다.

DNSSEC는 도메인 이름 시스템 보안 확장으로, DNS 이름 확인자가 DNS 영역에서 수신한 데이터가 유효하고 변경되지 않았는지 암호화 방식으로 확인할 수 있도록 하는 시스템입니다.

다음은 응답의 더 자세한 부분입니다.

Domain Name: cnn.com
Registry Domain ID: 3269879_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.corporatedomains.com
Registrar URL: www.cscprotectsbrands.com
Updated Date: 2018-04-10T16:43:38Z
Creation Date: 1993-09-22T04:00:00Z
Registrar Registration Expiration Date: 2026-09-21T04:00:00Z
Registrar: CSC CORPORATE DOMAINS, INC.
Registrar IANA ID: 299
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: +1.8887802723
Domain Status: clientTransferProhibited http://www.icann.org/epp#clientTransferProhibited
Domain Status: serverDeleteProhibited http://www.icann.org/epp#serverDeleteProhibited
Domain Status: serverTransferProhibited http://www.icann.org/epp#serverTransferProhibited
Domain Status: serverUpdateProhibited http://www.icann.org/epp#serverUpdateProhibited
Registry Registrant ID:
Registrant Name: Domain Name Manager
Registrant Organization: Turner Broadcasting System, Inc.
Registrant Street: One CNN Center
Registrant City: Atlanta
Registrant State/Province: GA
Registrant Postal Code: 30303
Registrant Country: US
Registrant Phone: +1.4048275000
Registrant Phone Ext:
Registrant Fax: +1.4048271995
Registrant Fax Ext:
Registrant Email: [email protected]
Registry Admin ID:
Admin Name: Domain Name Manager
Admin Organization: Turner Broadcasting System, Inc.
Admin Street: One CNN Center
Admin City: Atlanta
Admin State/Province: GA
Admin Postal Code: 30303
Admin Country: US
Admin Phone: +1.4048275000
Admin Phone Ext:
Admin Fax: +1.4048271995
Admin Fax Ext:
Admin Email: [email protected]
Registry Tech ID:
Tech Name: TBS Server Operations
Tech Organization: Turner Broadcasting System, Inc.
Tech Street: One CNN Center
Tech City: Atlanta
Tech State/Province: GA
Tech Postal Code: 30303
Tech Country: US
Tech Phone: +1.4048275000
Tech Phone Ext:
Tech Fax: +1.4048271593
Tech Fax Ext:
Tech Email: [email protected]
Name Server: ns-576.awsdns-08.net
Name Server: ns-1086.awsdns-07.org
Name Server: ns-47.awsdns-05.com
Name Server: ns-1630.awsdns-11.co.uk
DNSSEC: unsigned

위 결과는 요약 정보와 거의 동일하지만, 등록자, 관리 담당자 및 기술 담당자의 연락처 세부 정보에 대한 추가 섹션을 제공합니다.

등록자 이름은 ‘도메인 이름 관리자’로 지정되어 있습니다. 때때로 회사는 비용을 지불하고 등록 대행자가 이 목적으로 유지하는 일반 이름으로 도메인을 등록하도록 선택합니다. 여기도 마찬가지인 것으로 보입니다. 그러나 등록자의 주소가 ‘One CNN Center’이므로 등록자가 누구인지는 분명합니다.

IP 주소로 whois 조회하기

IP 주소를 사용하여 whois 조회를 수행하는 방법은 도메인 이름과 함께 사용하는 것만큼 간단합니다. whois 명령어 뒤에 IP 주소를 지정하기만 하면 됩니다.

whois 205.251.242.103

다음은 whois가 반환한 결과입니다.

NetRange: 205.251.192.0 - 205.251.255.255
CIDR: 205.251.192.0/18
NetName: AMAZON-05
NetHandle: NET-205-251-192-0-1
Parent: NET205 (NET-205-0-0-0-0)
NetType: Direct Allocation
OriginAS: AS16509, AS39111, AS7224
Organization: Amazon.com, Inc. (AMAZON-4)
RegDate: 2010-08-27
Updated: 2015-09-24
Ref: https://rdap.arin.net/registry/ip/205.251.192.0

OrgName: Amazon.com, Inc.
OrgId: AMAZON-4
Address: 1918 8th Ave
City: SEATTLE
StateProv: WA
PostalCode: 98101-1244
Country: US
RegDate: 1995-01-23
Updated: 2020-03-31
Ref: https://rdap.arin.net/registry/entity/AMAZON-4

OrgAbuseHandle: AEA8-ARIN
OrgAbuseName: Amazon EC2 Abuse
OrgAbusePhone: +1-206-266-4064
OrgAbuseEmail: [email protected]
OrgAbuseRef: https://rdap.arin.net/registry/entity/AEA8-ARIN

OrgNOCHandle: AANO1-ARIN
OrgNOCName: Amazon AWS Network Operations
OrgNOCPhone: +1-206-266-4064
OrgNOCEmail: [email protected]
OrgNOCRef: https://rdap.arin.net/registry/entity/AANO1-ARIN

OrgRoutingHandle: ADR29-ARIN
OrgRoutingName: AWS Dogfish Routing
OrgRoutingPhone: +1-206-266-4064
OrgRoutingEmail: [email protected]
OrgRoutingRef: https://rdap.arin.net/registry/entity/ADR29-ARIN

OrgRoutingHandle: IPROU3-ARIN
OrgRoutingName: IP Routing
OrgRoutingPhone: +1-206-266-4064
OrgRoutingEmail: [email protected]
OrgRoutingRef: https://rdap.arin.net/registry/entity/IPROU3-ARIN

OrgTechHandle: ANO24-ARIN
OrgTechName: Amazon EC2 Network Operations
OrgTechPhone: +1-206-266-4064
OrgTechEmail: [email protected]
OrgTechRef: https://rdap.arin.net/registry/entity/ANO24-ARIN

RTechHandle: ROLEA19-ARIN
RTechName: Role Account
RTechPhone: +1-206-266-4064
RTechEmail: [email protected]
RTechRef: https://rdap.arin.net/registry/entity/ROLEA19-ARIN

RAbuseHandle: ROLEA19-ARIN
RAbuseName: Role Account
RAbusePhone: +1-206-266-4064
RAbuseEmail: [email protected]
RAbuseRef: https://rdap.arin.net/registry/entity/ROLEA19-ARIN

RNOCHandle: ROLEA19-ARIN
RNOCName: Role Account
RNOCPhone: +1-206-266-4064
RNOCEmail: [email protected]
RNOCRef: https://rdap.arin.net/registry/entity/ROLEA19-ARIN

첫 번째 섹션에는 검색한 IP 주소를 소유한 조직에 대한 정보가 포함되어 있습니다 (이 경우 Amazon이 소유한 여러 주소 중 하나). 또한 레지스트리에서 내부적으로 Amazon.com, Inc.를 식별하는 데 사용되는 일부 식별자도 제공됩니다.

두 번째 섹션에는 Amazon.com, Inc.라는 등록자의 주소와 이름이 포함되어 있습니다. ‘Ref:’ 필드의 웹 주소에는 이 정보가 JSON(JavaScript Object Notation) 형식으로 포함되어 있습니다.

나머지 섹션에는 남용, 네트워크 운영, 트래픽 라우팅 등과 관련된 문제를 보고할 수 있는 연락처 정보가 포함되어 있습니다.

스크립트에서 whois 명령어 사용하기

스크립트에서 whois 명령어를 활용하는 한 가지 예로, 만료 날짜를 확인해야 하는 도메인 목록이 있다고 가정해 보겠습니다. 다음 쉘 스크립트로 이 작업을 수행할 수 있습니다.

편집기에 다음 스크립트를 입력하고 ‘get-expiry.sh’로 저장합니다.

#!/bin/bash

DOMAIN_LIST="wdzwdz.com reviewgeek.com lifesavvy.com cloudsavvyit.com"

echo "Expiration dates:"

for domain in $DOMAIN_LIST
do
  echo -n "$domain :: "
  whois $domain | grep 'Expiration' | awk '{print $5}'
done

다음과 같이 chmod 명령을 사용하여 스크립트에 실행 권한을 부여합니다.

chmod +x get-expiry.sh

스크립트 이름을 입력하여 실행합니다.

./get-expiry.sh

각 도메인의 만료 날짜는 whois 응답에서 grep 명령을 사용하여 추출됩니다. grep 명령은 ‘Expiration’이라는 문자열을 포함하는 줄을 찾습니다. 그리고 awk 명령어를 사용하여 해당 줄에서 다섯 번째 항목을 출력합니다.

편의성과 자동화

온라인에서도 whois 조회를 수행할 수 있습니다. 하지만 터미널 창에서 whois 명령어를 사용하거나 스크립트에서 자동화하면 편리하고 유연한 방식으로 작업을 처리할 수 있습니다.