IPIPNOW
한국어
한국어English日本語中文
본 광고

curl이나 API로 내 IP를 어떻게 조회하나요?

터미널에서 curl ipnow.kr 을 입력하면 현재 접속의 공인 IP가 한 줄로 바로 출력되고, curl ipnow.kr/json 을 쓰면 위치·통신사·User-Agent 등 상세 정보가 JSON 형식으로 반환됩니다. Windows PowerShell에서도 비슷한 방식으로 바로 조회할 수 있습니다.

최종 수정일

내 공인 IP 주소
216.73.216.58
내 IP 자세히 보기

curl로 IP를 한 줄로 확인하기

터미널에서 curl ipnow.kr 을 입력하면 HTML 화면 대신 현재 공인 IP만 한 줄로 출력됩니다. curl ipnow.kr/ip 도 같은 방식으로 IP 한 줄만 돌려줍니다.

두 경로 모두 스크립트에서 변수로 바로 저장해 쓰기 좋게 설계돼 있어, 서버 상태 점검 스크립트나 원격 서버의 공인 IP 확인용으로 자주 활용됩니다.

JSON API로 상세 정보 받기

curl -s ipnow.kr/json 을 실행하면 JSON 형식의 응답을 받을 수 있습니다. jq가 설치돼 있다면 curl -s ipnow.kr/json | jq 로 보기 좋게 정리해서 볼 수 있습니다.

JSON에는 ip, ip_version, country_code, country, region, city, latitude, longitude, asn, isp, as_org, user_agent, browser, browser_version, os, device, is_bot, is_ai, bot_name, accept_language, protocol, time 같은 필드가 담겨 있습니다.

IPv4 강제 지정과 IPv6 주소 확인

curl -4 ipnow.kr 을 쓰면 IPv4로만 접속해 IPv4 공인 주소를 확인합니다. ipnow.kr 은 현재 IPv4로만 응답하므로 IPv4와 IPv6를 함께 쓰는 듀얼스택 환경에서도 결과는 항상 IPv4 주소이며, -6 옵션으로 IPv6 접속만 강제하면 연결에 실패하는 것이 정상입니다.

IPv6 주소가 궁금하다면 기기의 네트워크 설정을 확인하세요. Windows는 ipconfig, Mac은 ifconfig, Linux는 ip -6 addr 로 볼 수 있고, fe80 이 아니라 2 나 3 으로 시작하는 전역 주소가 있다면 IPv6로 인터넷에 연결된 상태입니다. IPv6는 보통 NAT 없이 쓰이므로 이 전역 주소가 곧 인터넷에서 보이는 IPv6 주소입니다. 두 주소 체계의 차이는 IPv4와 IPv6 차이에서 설명합니다.

Windows PowerShell에서 조회하기

PowerShell에서는 (Invoke-WebRequest -UseBasicParsing https://ipnow.kr/ip).Content 로 IP 문자열만 받아올 수 있고(Windows PowerShell 5.1은 -UseBasicParsing 이 없으면 오류나 확인 창이 뜰 수 있습니다), irm https://ipnow.kr/json (Invoke-RestMethod의 별칭)을 쓰면 JSON 응답을 바로 객체로 받아 필드별로 다룰 수 있습니다.

스크립트에서 자동으로 IP를 가져오려면?

bash 스크립트라면 MYIP=$(curl -s ipnow.kr/ip) 처럼 변수에 저장해 배포 스크립트나 방화벽 규칙에 바로 활용할 수 있습니다.

JavaScript에서는 fetch("https://ipnow.kr/json").then(r => r.json()).then(data => console.log(data.ip)) 처럼 fetch로 호출할 수 있으며, CORS가 모든 출처에 허용돼 있어 브라우저에서 직접 호출해도 막히지 않습니다.

명령별 응답 형식 한눈에 비교

같은 ipnow.kr 이라도 경로와 옵션에 따라 돌려주는 형식이 다릅니다. 사람이 눈으로 확인할 때는 텍스트 한 줄이, 프로그램에서 여러 값을 다룰 때는 JSON이 편합니다.

curl이 아닌 도구나 -A 옵션으로 바꾼 User-Agent로 http:// 주소를 호출하면 본문 대신 https 주소로 영구 이동하라는 응답만 받을 수 있습니다. 직접 만든 프로그램에서는 처음부터 https://ipnow.kr/json 처럼 https 주소를 쓰는 것이 안전하고, curl이라면 -L 옵션으로 이동을 따라가게 할 수도 있습니다.

ipnow.kr 조회 명령별 응답 형식
명령응답 형식주로 쓰는 곳
curl ipnow.krIP 주소 한 줄(텍스트)터미널에서 빠르게 확인
curl ipnow.kr/ipIP 주소 한 줄(텍스트)스크립트에서 변수로 저장
curl ipnow.kr/jsonJSON(위치·통신사·User-Agent 포함)프로그램에서 필드별로 처리
curl -4 ipnow.krIPv4 주소 한 줄(텍스트)IPv4 경로를 명시해야 할 때
irm https://ipnow.kr/jsonPowerShell 객체Windows 자동화 스크립트

필요한 필드만 꺼내 쓰는 방법

JSON 전체가 아니라 특정 값만 필요하다면 jq의 -r 옵션을 씁니다. curl -s https://ipnow.kr/json | jq -r .ip 는 IP만, curl -s https://ipnow.kr/json | jq -r ".country_code, .isp" 는 국가 코드와 통신사를 한 줄씩 출력합니다. Python이라면 표준 라이브러리만으로 json.load(urllib.request.urlopen("https://ipnow.kr/json"))["ip"] 처럼 읽을 수 있습니다.

필드 형식도 알아 두면 좋습니다. ip_version 과 asn 은 숫자, latitude·longitude 는 소수, is_bot·is_ai 는 참·거짓 값이고, 판별할 수 없는 값은 null 로 옵니다. 예를 들어 curl로 호출하면 os 는 null, device 는 cli 로 나오는 것이 정상이므로, 코드에서는 null 이 올 수 있는 필드를 미리 처리해 두세요.

공인 IP 변경을 감지하는 스크립트 예시

가정용 회선은 대부분 유동 IP라 주소가 바뀔 수 있습니다. 집 서버나 NAS를 밖에서 쓰는데 IP가 바뀐 것을 늦게 알아채면 접속이 끊기므로, 주기적으로 공인 IP를 확인해 이전 값과 비교하는 스크립트가 유용합니다.

bash에서는 NEW=$(curl -fsS -m 10 https://ipnow.kr/ip) || exit 1 로 현재 IP를 받고, 저장해 둔 값과 [ "$NEW" != "$(cat ~/.last_ip)" ] 로 비교해 다를 때만 알림을 보내고 파일을 갱신하면 됩니다. -f 는 HTTP 오류 응답을 실패로 처리하고, -sS 는 진행 표시는 숨기되 오류 메시지는 보여주며, -m 10 은 10초가 지나면 포기하게 합니다.

실행 주기는 cron으로 수 분에서 수십 분 간격이면 충분합니다. 짧은 시간에 지나치게 반복 호출하면 요청이 일시적으로 제한될 수 있으니 필요 이상으로 자주 부르지 마세요. 유동 IP가 바뀌는 조건은 유동 IP와 고정 IP 차이에서 다룹니다.

예상과 다른 결과가 나올 때 확인할 것

명령 자체는 성공했는데 결과가 이상하다면 대부분 실행 환경 때문입니다.

  • Windows PowerShell에서 출력이 길고 복잡할 때: Windows PowerShell 5.1에서 curl 은 Invoke-WebRequest의 별칭이라 응답이 객체 형태로 길게 출력됩니다. 실제 curl 프로그램을 쓰려면 curl.exe ipnow.kr 처럼 확장자를 붙입니다.
  • 회사 네트워크에서 다른 IP가 나올 때: http_proxy, https_proxy 같은 프록시 환경 변수가 설정돼 있으면 curl은 프록시를 거쳐 나가므로 프록시 서버의 IP가 보입니다. curl --noproxy "*" ipnow.kr 로 프록시 없이 확인할 수 있지만, 사내 정책상 직접 연결이 막혀 있을 수도 있습니다.
  • 클라우드 서버의 IP가 예상과 다를 때: NAT 게이트웨이나 프록시를 거쳐 나가는 구성에서는 서버에 붙은 주소와 인터넷에서 보이는 주소가 다릅니다. 상대 방화벽의 허용 목록에는 ipnow.kr 이 돌려준 주소를 등록해야 합니다.

curl이나 API로 내 IP를 어떻게 조회하나요?: 단계별 방법

  1. IP 한 줄만 확인터미널에서 curl ipnow.kr 또는 curl ipnow.kr/ip 를 입력해 공인 IP를 바로 출력합니다.
  2. JSON으로 상세 조회curl -s ipnow.kr/json 을 실행하고, 필요하면 | jq 로 보기 좋게 정리합니다.
  3. IPv4 강제 지정curl -4 ipnow.kr 로 IPv4 주소만 확인합니다. ipnow.kr 은 현재 IPv4로만 응답하므로 IPv6 주소는 기기의 네트워크 설정에서 확인합니다.
  4. PowerShell에서 조회(Invoke-WebRequest -UseBasicParsing https://ipnow.kr/ip).Content 또는 irm https://ipnow.kr/json 을 실행합니다.
  5. 스크립트에 연동bash에서는 $(curl -s ipnow.kr/ip) 로 변수에 저장하고, JavaScript에서는 fetch로 /json을 호출해 필요한 필드를 꺼내 씁니다.

자주 묻는 질문

브라우저에서 fetch로 호출하면 CORS 오류가 나지 않나요?

ipnow.kr의 API는 모든 출처에 CORS를 허용(Access-Control-Allow-Origin: *)하고 있어 별도 서버 없이 브라우저 자바스크립트에서 바로 호출할 수 있습니다.

API를 쓰려면 인증키가 필요한가요?

필요 없습니다. 회원가입이나 API 키 없이 누구나 무료로 curl이나 fetch로 바로 호출할 수 있습니다.

curl로 호출하면 is_bot 이 true로 나오는 이유는?

curl이나 스크립트 같은 자동화 클라이언트는 사람이 쓰는 브라우저가 아니므로 User-Agent를 기준으로 봇으로 분류됩니다. bot_name 에는 curl처럼 판별된 이름이 들어가며, 조회 결과의 IP나 위치·통신사 정보에는 영향이 없습니다.

User-Agent 필드는 왜 JSON에 같이 나오나요?

요청을 보낸 클라이언트(curl, 브라우저 등)의 User-Agent도 함께 기록해 어떤 환경에서 조회했는지 알 수 있게 한 것입니다. User-Agent 자체에 대한 설명은 User-Agent란에서 볼 수 있습니다.

참고 자료

불법·유해 링크 신고

불법·유해·사기(피싱) 링크를 발견하셨나요? 짧은 주소를 알려 주시면 검토 후 차단합니다. 서로 다른 이용자 신고가 쌓이면 자동으로 차단됩니다.

문의하기

서비스 이용 중 궁금한 점이나 제안을 남겨 주세요. 답변은 입력한 이메일로 보내 드립니다.

입력한 이메일은 이 문의에 답변할 때만 사용합니다.