Windows 명령 줄에서 외부 IP 주소 (NAT를 통해)를 얻는 방법은 무엇입니까? [복제]


13

Windows "ipconfig" 명령은 내 컴퓨터의 이더넷 인터페이스 ( ipconfig /all인수 포함) 의 매개 변수 만 표시 할 수 있습니다 . 인터페이스에 대한 자세한 정보를 표시 할 수 있지만 NAT 네트워크를 통한 외부 IP 주소는 표시되지 않습니다 .

ipconfig / all-Windows 스크린 샷

그러나 외부 IP 주소를 가져와 표시 할 수있는 "What is my IP address" 와 같은 여러 웹 사이트 가 있습니다. 그래서이 값을 외부에서 얻을 수 있는지 궁금합니다. 로컬 컴퓨터의 명령 줄 에서이 정보를 얻을 수있는 방법이 있다고 기대해야합니다 ...

VBScript로 수행중인 응용 프로그램에 로그온하려면이 값을 가져와야 합니다. cmdWindows 에서이를 수행하는 방법이 있습니까?


HTTP 기반 what-is-my-IP 서비스는 프록시 서버의 IP를 제공 할 수 있습니다. (그리고 누군가가 HTTPS 프록시가 존재한다고 지적하기 전에는 HTTPS를 투명하게 프록시 할 수 없습니다 . HTTPS가 있다면 그것을 알게 될 것입니다.)
billpg

답변:


11

이제 Oliver가 제공 한 사이트를 사용하여 VBScript에서이 작업을 수행 할 수 있습니다.

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://ifconfig.me/ip", False
o.send
WScript.StdOut.Write o.responseText

PowerShell에는 비슷한 방법이 있습니다.


좋았어. 프로그램에 삽입하겠습니다. 내 문제에 대한 좋은 해결책입니다. 감사합니다.
Diogo

흠,이 스크립트의 4 행, 문자 1에서 "Acess denied"를 반환합니다. 관리자 권한 명령 줄에서 실행하더라도 ... 이유를 알고 있습니까?
Diogo

@DiogoRocha 왜 그런지 모르겠다. Fiasco는 아마도 더 신뢰할 수 있습니다. wscript/에 대한 인터넷 액세스를 차단하는 방화벽 또는 무언가가있을 수도 있습니다 cscript.
Bob

10

문제는 IP 주소가 아닙니다. 라우터의 IP 주소입니다.

따라서 라우터를 거치지 않고는 검색 할 수 없습니다. 그리고 가장 쉬운 방법은 라우터가 웹 사이트를 검색하도록하는 것입니다 (이미 알고 있듯이). 라우터는 IP 주소를 사용하여 해당 사이트를 검색하기 때문입니다.

즉, ifconfig.me/ip 을 사용하면 쉽게 만들 수 있습니다 . 지금, 당신이 가지고 있다면 curl, 이미 끝난 것입니다 : Windows의 기본 Wget / cURL?


1
ifconfig.me/ip 를로드하는 데 시간이 오래 걸렸습니다. whatismyip.org 는 동일한 일반 텍스트 IP를 제공하며 훨씬 빠릅니다.
닌클

1
@nhinkle 그래도 위치에 따라 다를 수 있습니다. 둘 다로드 시간이 동일하지만 ifconfig.me의 핑 응답 시간은 절반입니다 (139ms 대 250ms). 아마도 더 중요한 것은 서비스가 가능한 한 오랫동안 유지되지만 실제로 알 방법이 없다는 것입니다.
Bob

포트 포워딩 규칙과 IPv4를 고려한 라우터의 외부 IP 주소에는 아무런 문제가 없습니다.
mbx

5

여가 시간에 실행할 VB 스크립트를 만듭니다.

이것을 txt 파일에 입력하십시오 :

Option Explicit
Dim http : Set http = CreateObject( "MSXML2.ServerXmlHttp" )
http.Open "GET", "http://icanhazip.com", False
http.Send
Wscript.Echo http.responseText   'or do whatever you want with it
Set http = Nothing

txt 파일을 닫고 ip.vbs로 이름을 바꿉니다 (이 예에서는 C :로 저장).

Windows에서 dos 창을 엽니 다 (cmd를 실행하십시오 ).

/ : 당신이 C에있어 확인 (없는 경우, 타입 C : 및 누른 다음 입력 CD를 .. & 당신이 C가 나타날 때까지 몇 번을 입력>)

dos 프롬프트에서 다음을 입력하십시오.

cscript ip.vbs

외부 IP를 즉시 볼 수 있습니다.

vbs 파일을 USB 키 또는 다른 것에 넣은 경우 (그리고 dos 프롬프트에서 cscript ip.vbs 를 실행 해야하지만 ip.vbs 파일과 동일한 디렉토리에 있는지 확인하십시오),이 파일을 가지고 갈 수 있습니다 어디에서나 컴퓨터에서 .vbs 파일을 실행하여 외부 IP를 볼 수 있습니다.

icanhazip.com의 주소가있는 행은 다음 중 하나로 변경할 수 있습니다.

http://myip.dnsomatic.com
http://whatismyip.org
http://icanhazip.com
http://www.whatismyip.com/automation/n09230945.asp
http://externip.com

편집, dos 창으로 가지 않고 Windows에서 ip.vbs 파일을 실행할 수도 있으며 약간의 팝업 창에 표시됩니다.


icanhazip.com의 응답 시간 은 유럽 중심의 ipconfig.me/ip 보다 낫습니다 .
Martin Braun


3

외부 IP 주소를 얻으려면 네트워크 외부에 무언가를 요청하고 IP 주소가 무엇인지 표시해야합니다. 이 작업은 결과를 쉽게 파싱하고 그로부터 IP 주소를 얻는 페이지를 쿼리하여 스크립팅을 통해 수행 할 수 있지만 Windows에 내장 된 도구는 외부 IP 주소를 알려줄 수 없습니다. 직접 작성하거나 찾아서 다운로드해야합니다.


2

DHCP IP 주소에 도메인 이름을 할당하기 위해 DynDNS 와 같은 것을 사용하면 도메인 이름을 사용 nslookup하거나 핑 (라우터가 응답하도록 구성된 경우)하고 핑 (ping) 할 수 있습니다.

다른 Windows 유틸리티는 traceroute유일한이지만, 해당 게이트웨이에 연결하는 라우터의 IP 주소가 아니라 연결 한 아웃 바운드 게이트웨이 만 표시합니다.

편집 : IP 주소 문자열을 추출하기 위해 위의 구문 분석이 약간 필요하고 ifconfig.me희소 한 응답이 있습니다 .Bob의 스크립트에 약간의 변형이 있습니다.이 기능은 응답이 없는지 테스트하고 깔끔한 IP를 되돌릴 수 있습니다. 서버가 작동중인 경우 스크립트에서 사용할 주소입니다.

wscript.echo WAN_IP()

function WAN_IP()
    set obj = createobject("Microsoft.XMLHTTP")
    call obj.open("get", "http://ifconfig.me/ip", false)
    obj.send()

    strresponse = obj.responsetext
    set obj = nothing

    if strresponse <> "" then
        strIP = strresponse
    else
        strIP = "Unavailable"
    end if

    WAN_IP = trim(strIP)

end function

1

라우터가 UPnP (Universal Plug & Play)를 지원하면 IP 주소를 쿼리 할 수 ​​있습니다.

Windows에서는 WMI를 사용하고 WMIC 도구를 사용하여 명령 행에서 이러한 정보를 조회 할 수 있습니다.


2
예를 들어 주시겠습니까? 나는 이것에 매우 관심이 있습니다.
Der Hochstapler

1

다른 사람들이 이미 말했듯이 외부 서비스에 의존해야합니다. 나는 http://www.externalip.net을 추천합니다

http://api.externalip.net/ip 를 사용 하여 ip를 일반 텍스트 형식으로 가져올 수 있습니다 . 빠르고 신뢰할 수 있으며 무제한 사용이 가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.