เป็นไปได้ไหมที่จะเห็นที่อยู่ IP ภายนอกของฉันโดยไม่ทำการร้องขอเว็บขาออก


21

หากการเชื่อมต่อของคุณเป็น NAT'ed เป็นไปได้ไหมที่จะเห็นที่อยู่ IP ภายนอกของคุณโดยไม่ต้องทำการร้องขอเว็บขาออก

ระบบปฏิบัติการใด ๆ (Windows, Linux, ฯลฯ ) ก็ใช้ได้


7
คุณพยายามหลีกเลี่ยง HTTP หรือพยายามหลีกเลี่ยงการส่งข้อมูลขาออกใด ๆ เลยใช่หรือไม่ โซลูชันสากลที่เกี่ยวข้องกับการส่งทราฟฟิกขาออกบางประเภท แต่ไม่จำเป็นต้องเป็น HTTP
Spiff

นี่เป็นเพียงสมมติฐานมากกว่าฉันไม่ต้องการให้ปริมาณการใช้งานขาออกใด ๆ เลย
Axel Persinger

2
คุณกำลังบอกว่าเครือข่าย / เราเตอร์ของคุณอยู่หลังการตั้งค่า NAT ระดับองค์กร (เช่นกำลังรับที่อยู่ IP ส่วนตัวจาก ISP ของคุณ) ถ้าเป็นเช่นนั้นไม่มีทางที่ฉันจะคิดว่าคุณสามารถหาที่อยู่ IP สาธารณะโดยไม่ต้องเข้าถึงเครือข่ายสาธารณะและ "มองย้อนกลับไป" เช่น whatsmyip.com หรือบริการที่คล้ายกัน
acejavelin

แฮ็คที่ฉันเคยทำคือตรวจสอบกับเราเตอร์ของฉัน - จริง ๆ แล้วฉันมีสคริปต์ที่สกปรกจริง ๆ ที่จะถูที่เนื่องจากด้วยเหตุผลบางอย่างส่วนใหญ่บริการบนเว็บจะไม่ตรวจสอบ IP ของฉันอย่างถูกต้อง ISP ของฉันสนุกอย่างนั้นจริงๆ
Geek

2
คุณสามารถลองโทรหา ISP ด้วยรายละเอียดลูกค้าของคุณ ไม่จำเป็นต้องเชื่อมต่ออินเทอร์เน็ตและไม่มีคอมพิวเตอร์
โทมัส

คำตอบ:


24

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

เราเตอร์รู้ที่อยู่ IP ภายนอกของคุณดังนั้นเมื่อเข้าถึงหน้าการกำหนดค่าคุณจะพบที่อยู่ IP นั้นได้ วิธีนี้ไม่ต้องการเครื่องมือพิเศษใด ๆ ยกเว้นเว็บเบราว์เซอร์

โปรโตคอลอื่น ๆ ที่ต้องการเครื่องมือในการรับข้อมูล:

ดังที่ทดสอบโดย user @dirkt วิธีการทั้งหมดใช้ได้กับ IPv4 เท่านั้น (ยกเว้นสำหรับ PCP)


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

2
"วิธีการอื่นใด ๆ ที่จะต้องทำให้การร้องขอเว็บภายนอก" Web (เช่น HTTP) ไม่จำเป็นต้อง แต่ที่ง่ายที่สุดบางทีอาจจะเข้าใจ
eques

1
ดังที่ได้กล่าวไว้ในคำตอบอื่น ๆ uPnP, NAT-PMP และ PCP เป็นวิธีที่แตกต่างกันในการรับข้อมูลจากเราเตอร์นอกเหนือจากการเข้าถึงหน้าการกำหนดค่า วิธีที่คุณใช้ถ้อยคำดูเหมือนว่า "นอกเหนือจากการเข้าถึงหน้าการกำหนดค่าวิธีอื่น ๆ จะต้องมีการร้องขอทางเว็บ" ความถูกต้องคือ "นอกเหนือจากการรับข้อมูลจากเราเตอร์แล้วต้องใช้วิธีอื่นและพยายามเชื่อมต่อขาออก" (ไม่จำเป็นต้องมีคำขอทางเว็บ)
dirkt

@dirkt: สำหรับ UPnP ฉันไม่มั่นใจ NAT-PMP ฉันคิดว่าใช้ได้กับ IPv4 เท่านั้น PCP บนเครือข่าย IPv6 จะส่งคืนคำนำหน้า IPv6 และสามารถทำอะไรได้มากกว่านี้ แต่โดยทั่วไปจะไม่ได้รับการติดตั้งบนเราเตอร์เชิงพาณิชย์
harrymc

1
@harrymc: จุดสิ้นสุดบริการ UPnP สำหรับ Fritzbox ของฉันคือWANIPConn1/GetExternalIPAddressและมันก็ส่งคืนที่อยู่ที่ถูกต้องได้สำเร็จ
dirkt

12

มีสองสามวิธีที่ทำงานกับ NATs บางตัว แต่ไม่มีอะไรรับประกันได้ว่าจะทำงานได้ทุกที่

ฉันเชื่อว่า uPnP, NAT-PMP และ PCP (Universal Plug And Play, NAT Port Mapping Protocol และ Port Control Protocol) ทุกคนมีวิธีที่จะถาม NAT NAT ที่สอดคล้องกับสิ่งที่ที่อยู่สาธารณะ แต่ไม่ใช่ NATs ทั้งหมดที่สนับสนุนโปรโตคอลเหล่านี้ การสนับสนุนเป็นเรื่องปกติในเราเตอร์เกตเวย์บ้านมากกว่าในโซลูชัน NAT ขององค์กรหรือผู้ให้บริการเครือข่าย

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


8
UPnP และอื่น ๆ อาจให้ผลลัพธ์ที่ผิดพลาดเช่นกันหากระบบอยู่หลัง NAT (หรือมากกว่า) NAT
user71659

@ user71659 ฉันสงสัยว่ามีที่อยู่ anycast ใดที่จะถูกส่งไปยัง NAT นอกสุดโดยอัตโนมัติเพื่อให้สามารถใช้สำหรับคำขอประเภทนั้นได้
kasperd

1
@ kasperd NAT ทุกคนคิดว่ามันเป็น NAT ชั้นนอกสุด มี IP ที่ถูกกำหนดเส้นทางโดยอัตโนมัตินอก NATs ทั้งหมด เหล่านี้เรียกว่า IP สาธารณะ
user253751

1
@ user20574 ไม่ NAT ไม่คิดอย่างนั้นส่วนใหญ่ไม่สนใจ หากจะกำหนดที่อยู่ anycast เช่นนั้นมาตรฐานจะต้องกำหนดด้วยเมื่อ NAT กำหนด IP นั้นให้กับตัวเองและเมื่อไม่ได้กำหนดไว้ คำตอบคือหาก IP ภายนอกอยู่ใน RFC 1918 หรือ RFC 6598 NAT จะไม่กำหนดที่อยู่ anycast ให้กับตัวเอง
kasperd

8

คุณสามารถใช้คำขอ DNS ซึ่งฉันเชื่อว่าจะไม่อยู่ในหมวดหมู่ของ "คำขอเว็บ":

nslookup myip.opendns.com resolver1.opendns.com

1
dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep ednsนอกจากนี้คุณยังสามารถใช้ ฉันพบคำสั่งที่นี่: groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/…
kasperd

nsslookupคำสั่งของคุณล้มเหลวสำหรับฉัน ฉันได้รับ Server: resolver1.opendns.com Address: 2620:119:35::35#53 ** server can't find myip.opendns.com: NXDOMAIN
kasperd

1
@kasperd: ใช้งานได้กับ IPv4 เท่านั้นขออภัย ฉันหลีกเลี่ยงdigเพราะมันไม่ได้อยู่ใน Windows ข้อดีmyaddrของ Google ก็คือฉันไม่ทราบเลย! ฉันเดาว่า Windows nslookupเทียบเท่าจะเป็นnslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
Mehrdad

ฉันรันคำสั่งนั้นบนเครื่องที่มีทั้ง IPv4 และ IPv6 ดังนั้นหากสนับสนุน IPv4 จริง ๆ มันควรจะทำงานได้ เห็นได้ชัดว่าปัญหาคือคุณไม่สามารถบอกได้nslookupว่าจะใช้เวอร์ชั่นใดของ IP เพื่อการขนส่ง แต่วิธีการของ OpenDNS นั้นหมายความว่าคุณต้องทำ หากไม่มีคุณจะต้องคาดเดาว่า IP เวอร์ชั่นnslookupใดที่จะใช้สำหรับการขนส่งและขอ A หรือ AAAA ตามลำดับ หากคุณติดอยู่กับnslookupคุณสามารถใช้ผู้ให้บริการอื่นเช่น Google อย่างไรก็ตามคุณยังคงได้รับรุ่นโปรโตคอลเพียงหนึ่งรุ่นในการตอบกลับและคุณไม่สามารถเลือกได้
kasperd

ฉันทดสอบnslookup -type=txt o-o.myaddr.l.google.com ns3.google.comและใช้งานได้จริง แต่ถ้าฉันมีทั้ง IPv4 และ IPv6 ที่จะไม่ให้ฉันเลือกว่าจะดูอะไร เป็นไปได้มากว่ามันจะแสดงที่อยู่ IPv6 ให้ฉันและมีโอกาสมากที่ฉันจะใช้เพราะฉันต้องการทราบที่อยู่ IPv4 ของ NAT หากต้องการหลีกเลี่ยงสิ่งนั้นจะต้องใช้บริการที่มีชื่อ IPv4 เท่านั้นและชื่อ IPv6 เท่านั้นซึ่งจะแก้ไขปัญหาของ NAT64 ด้วย
kasperd

7

ฉันต้องการเพิ่มจุดหนึ่งคำตอบที่มีอยู่แล้ว

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

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

ในตัวอย่างด้านล่างRouter #2สามารถดำเนินการ NAT และส่งเข้าชม uplinks ใดอย่างหนึ่งและโฮสต์ที่ได้รับจะได้เห็นที่แตกต่างกันอยู่ IP Hostภายนอกสำหรับ

หรืออาจเป็นได้ว่าปลายทาง (ตัวอย่างเช่นhost1.example.com) กำหนดเส้นทางผ่านเสมอUplink Aและโฮสต์host2.example.comจะกำหนดเส้นทางผ่านUplink Bเสมอ ดังนั้นที่อยู่ IP ภายนอกของคุณที่เห็นโดยโฮสต์เหล่านั้นจะแตกต่างกันโดยให้ข้อมูลนั้นUplink AและUplink Bเป็น ISP ที่แตกต่างกัน

   Uplink A                                  Uplink B
-------------                             -------------
      |                                         |
      |                                         |
      |     192.168.1.1         192.168.50.50   |
      |               -----------               |
      |---------------|Router #2|---------------|
                      -----------
                           |  192.168.100.1
                           |
                           |  192.168.100.2
                      -----------
                      |Router #1|
                      -----------
                           |  192.168.200.1
                           |
                           |  192.168.200.2
                      -----------
                      |   Host  |
                      -----------

ดังนั้นการส่งทราฟฟิกจะช่วยให้ได้ผลลัพธ์ที่น่าเชื่อถือมากขึ้น


4

คุณสามารถใช้ DNS แทน HTTP ตัวอย่างเช่นคุณสามารถใช้:

dig +short TXT o-o.myaddr.l.google.com

นี่จะแสดงที่อยู่ unicast ของเซิร์ฟเวอร์ DNS ที่คุณใช้และหากรองรับ EDNS ก็จะแสดงที่อยู่ IP ของคุณด้วยแม้ว่าจะถูกตัดทอน

ในการรับที่อยู่ IP แบบเต็มคุณสามารถบายพาสเซิร์ฟเวอร์ DNS ในพื้นที่ของคุณและส่งคำขอข้างต้นไปที่ ns {1,2,3,4} .google.com โดยตรง

dig +short TXT o-o.myaddr.l.google.com @ns3.google.com

หากคุณต้องการดูที่อยู่ IP ของคุณในรุ่นโปรโตคอลที่ระบุคุณสามารถใช้-6และ-4:

dig -6 +short TXT o-o.myaddr.l.google.com @ns3.google.com
dig -4 +short TXT o-o.myaddr.l.google.com @ns3.google.com

คุณยังสามารถใช้ OpenDNS ได้หากต้องการ OpenDNS ไม่ได้ใช้ระเบียน TXT สำหรับรายการนี้ แต่เป็นระเบียน A และ AAAA ดังนั้นคุณต้องระบุเวอร์ชันโปรโตคอลที่คุณต้องการ:

dig -6 +short AAAA myip.opendns.com @resolver2.opendns.com
dig -4 +short A myip.opendns.com @resolver2.opendns.com

โปรดสังเกตว่าหากปริมาณการใช้งานของคุณผ่านการแปลโปรโตคอลคุณอาจได้ผลลัพธ์ที่แตกต่างหรือไม่มีเลย การทดสอบจากเครื่องที่อยู่หลัง NAT64 ฉันสามารถเห็นที่อยู่ IPv6 ของฉันด้วยคำสั่งข้างต้น แต่ไม่ใช่ที่อยู่ IPv4 ของ NAT64

คำตอบนี้ขึ้นอยู่กับแหล่งข้อมูลเหล่านี้1 2 3และการวิจัยของฉันเองเล็กน้อย


2

โดยทั่วไปแล้วเว็บอ้างอิงถึง HTTP หากเป็นความหมายของคำถามของคุณตัวอย่างเช่นคุณสามารถใช้ STUN ( Wikipedia Article ) ซึ่งย่อมาจาก "Session Traversal Utilities for NAT"

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.