วิธีรับที่อยู่ IP ภายนอกของฉัน (มากกว่า NAT) จากบรรทัดคำสั่งของ Windows [ซ้ำ]


13

คำสั่ง"ipconfig" ของ Windows สามารถแสดงพารามิเตอร์จากส่วนต่อประสานอีเทอร์เน็ตจากเครื่องของฉัน (แม้จะมีipconfig /allข้อโต้แย้ง) มันสามารถแสดงข้อมูลโดยละเอียดเกี่ยวกับอินเทอร์เฟซ แต่มันจะไม่แสดงที่อยู่ IP ภายนอกของฉันผ่านเครือข่ายNAT

ipconfig / all - ภาพหน้าจอของ Windows

อย่างไรก็ตามมีหลายเว็บไซต์เช่น"ที่อยู่ IP ของฉันคืออะไร"ที่สามารถรับและแสดงที่อยู่ IP ภายนอกของฉันได้ ดังนั้นฉันสงสัยว่ามันเป็นไปได้ที่จะรับค่านี้จากภายนอกหรือไม่? ฉันควรคาดหวังว่าจะมีวิธีการรับข้อมูลนี้จากบรรทัดคำสั่งที่เครื่องท้องถิ่นของฉัน ...

ฉันต้องได้รับค่านี้เพื่อเข้าสู่ระบบโปรแกรมประยุกต์ที่ฉันทำกับVBScript มีวิธีทำเช่นนี้จากcmdบน Windows หรือไม่?


โปรดทราบว่าบริการ what-is-my-IP ที่ใช้ HTTP อาจให้ IP ของพร็อกซีเซิร์ฟเวอร์แก่คุณ (และก่อนที่จะมีใครชี้ให้เห็นว่ามีพร็อกซี 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

อืมมันจะส่งคืน "Acess ถูกปฏิเสธ" ในบรรทัดที่ 4 อักขระ 1 สำหรับสคริปต์นี้ แม้แต่เรียกใช้จากบรรทัดคำสั่งสิทธิ์ของผู้ดูแลระบบ ... คุณรู้หรือไม่
Diogo

@DiogoRocha ฉันไม่รู้ว่าทำไม ส่วนหนึ่งของ Fiasco น่าเชื่อถือกว่า นอกจากนี้ยังเป็นไปได้ที่คุณมีไฟร์วอลล์หรือสิ่งปิดกั้นการเข้าถึงอินเทอร์เน็ตเพื่อ/wscript cscript
Bob

10

ปัญหาคือไม่ใช่ที่อยู่ IP ของคุณ เป็นที่อยู่ IP ของเราเตอร์ของคุณ

ดังนั้นคุณจะไม่สามารถเรียกคืนได้โดยไม่ต้องผ่านเราเตอร์ของคุณ และวิธีที่ง่ายที่สุดคือการทำให้เราเตอร์ดึงข้อมูลเว็บไซต์ให้คุณ (ดังที่คุณได้สังเกตเห็นแล้ว) เพราะเราเตอร์จะใช้ที่อยู่ IP ของตนเพื่อดึงข้อมูลไซต์นั้น

ที่ถูกกล่าวว่าคุณสามารถทำให้มันง่ายในตัวเองโดยใช้ifconfig.me/ip ตอนนี้ถ้าคุณมีcurlคุณทำแล้วถ้าไม่: Wget / cURL ทางเลือกใหม่สำหรับ Windows?


1
ifconfig.me/ipใช้เวลาโหลดนาน whatismyip.orgให้ IP แบบข้อความธรรมดาที่เหมือนกันและเร็วกว่ามาก
ตี

1
@ ริ้วรอยที่อาจขึ้นอยู่กับตำแหน่งของคุณ พวกเขาทั้งสองดูเหมือนจะมีความเร็วในการโหลดเท่ากันสำหรับฉัน แต่เวลาตอบสนองการ ping จาก ifconfig.me นั้นเป็นครึ่งหนึ่ง (139ms เทียบกับ 250ms) สิ่งที่อาจสำคัญกว่านั้นคือการให้บริการอยู่ได้นานที่สุด แต่เราไม่มีทางรู้
Bob

ไม่มีอะไรผิดปกติกับที่อยู่ IP ภายนอกของเราเตอร์เมื่อพิจารณากฎการส่งต่อพอร์ตและ IPv4
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 (run cmd) ( ฮ่า! ฉันเพิ่งรู้ว่าถ้าคุณสลับมันจะกลายเป็น run dmc !! )

ตรวจสอบให้แน่ใจว่าคุณอยู่ใน c: / (หากไม่ใช่ให้พิมพ์c: & กด Enter แล้วcd .. & ป้อนสองสามครั้งจนกว่าคุณจะเห็น C:>)

ที่ประเภทพรอมต์ DOS:

cscript ip.vbs

และคุณจะเห็น IP ภายนอกของคุณทันที

หากคุณใส่ไฟล์ vbs ลงในคีย์ usb หรือสิ่งอื่น (และอย่าลืมเรียกใช้cscript ip.vbsที่ dos prompt - แต่ให้แน่ใจว่าคุณอยู่ในไดเรกทอรีเดียวกันกับไฟล์ 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

แก้ไขคุณยังสามารถเรียกใช้ไฟล์ ip.vbs ใน windows โดยไม่ต้องไปที่หน้าต่าง dos และมันจะปรากฏขึ้นในหน้าต่างป๊อปอัปเล็ก ๆ น้อย ๆ


icanhazip.comมีเวลาตอบสนองที่สั้นมากซึ่งดีกว่าipconfig.me/ipที่นี่ในศูนย์กลางของยุโรป
Martin Braun

4

ฉันสะดุดในเว็บไซต์นี้เมื่อมองหา PowerShell ที่เทียบเท่าและฉันคิดว่าฉันจะแบ่งปันคำสั่งนี้หากคนอื่นกำลังมองหา:

Invoke-WebRequest ifconfig.me/ip

รายละเอียดเพิ่มเติมมีให้ที่นี่หากคุณต้องการพวกเขา - http://jfrmilner.wordpress.com/2012/12/22/powershell-quick-tip-03-whats-my-external-ip-address-windows-command-line/


3

ในการรับที่อยู่ IP ภายนอกคุณจะต้องถามอะไรบางอย่างนอกเครือข่ายและให้รายงานกลับมาว่าที่อยู่ IP ของคุณ "ปรากฏ" เพื่อเป็นอะไร สิ่งนี้สามารถทำได้ผ่านการเขียนสคริปต์โดยการสอบถามหน้าเว็บที่ง่ายต่อการแยกวิเคราะห์ผลลัพธ์และรับที่อยู่ IP จากที่นั่น แต่ไม่มีเครื่องมือใน Windows ที่คุณสามารถบอกได้ว่าที่อยู่ IP ภายนอกของคุณคืออะไร คุณจะต้องเขียนด้วยตัวเองหรือค้นหาและดาวน์โหลด


2

การใช้บางอย่างเช่นDynDNSเพื่อกำหนดชื่อโดเมน DHCP IP ของคุณคุณสามารถทำได้nslookupหรือ ping (ถ้าเราเตอร์ของคุณกำหนดค่าให้ตอบกลับ) ชื่อโดเมนของคุณและดึงที่อยู่ IP จากนั้น

ยูทิลิตี 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

หากเราเตอร์ของคุณรองรับ Universal plug & Play (UPnP) คุณสามารถสอบถามได้ว่าเป็นที่อยู่ 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.