คำสั่งที่ยึดตาม * อะไรที่ฉันสามารถใช้เพื่อค้นหา IP ภายนอกของฉัน


16

คล้ายกับการค้นหาhttp://whatismyip.com เห็นได้ชัดว่ามันจะต้องสอบถามคอมพิวเตอร์ที่นั่น แค่สงสัยว่าใครมีวิธีที่ฉลาดในการทำมัน?


ดูเพิ่มเติมunix.stackexchange.com/a/81699/37512
Timo Tijhof

คำตอบ:



8
ขุด + short myip.opendns.com

ใช้งานได้เฉพาะถ้าคุณใช้ OpenDNS เป็นเซิร์ฟเวอร์ dns ของคุณ

หากคุณไม่ได้หนึ่งในนั้นควรทำงาน:

dig + short myip.opendns.com @ 208.67.222.222
dig + short myip.opendns.com @ 208.67.220.220
dig + short myip.opendns.com @ 208.67.222.222 @ 208.67.220.220

1
ใช้งานไม่ได้กับ MacOS 10.5, Ubuntu 8.04 หรือ Ubuntu 9.04 ของฉัน
Drew Stephens

น่าสนใจที่มันทำบน Ubuntu 8.10 ของฉัน
แบรดกิลเบิร์

อาจเป็นเพราะฉันใช้ opendns
แบรดกิลเบิร์

+1 สำหรับการใช้ DNS เพื่อค้นหา IP (แทนที่จะเป็น http) คุณสามารถระบุเซิร์ฟเวอร์ dns โดยใช้ชื่อเช่น@resolver1.opendns.com(เพื่อความสะดวกในการอ่าน)
jfs



2

เราจะต้องใช้เซิร์ฟเวอร์ของ OpenDNS เพื่อที่จะใช้สิ่งนี้ ... คุณสามารถค้นหาเซิร์ฟเวอร์ DNS บางตัวที่มีการขุดดังนี้:

dig + short myip.opendns.com @ 208.67.222.222

2

คุณสามารถใช้ curl เพื่อดึงหน้าจากสิ่งที่ชอบ whatismyip แล้วนำชิ้นส่วนออกมา ฉันใช้ whatismyipaddress.com ในตัวอย่างนี้ ... เห็นได้ชัดว่าเขตข้อมูลจะแตกต่างกับบริการที่แตกต่างกัน

curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }'

1

ฉันใช้ traceroute ไปที่ไหนสักแห่งบนอินเทอร์เน็ตและมองหาการกระโดดออกจากเครือข่ายท้องถิ่นของเรา

อาจจะมีวิธีที่ดีกว่า




0

คุณสามารถใช้คำสั่ง ifconfig เพื่อแสดงรายการอินเตอร์เฟสทั้งหมดและที่อยู่ IP ที่เกี่ยวข้อง

ดังนั้นหากคุณรู้ว่าอินเตอร์เฟซอินเทอร์เน็ตของคุณคือ ppp0 คุณสามารถเรียกใช้

$ ifconfig ppp0
ppp0 Link encap: โปรโตคอลแบบจุดต่อจุด
          inet addr: XXXX.X PtP: YYYY Mask: 255.255.255.255
          POINTOPOINT RUNNING NOARP MULTICAST MTU: 1444 เมตริก: 1
          แพ็คเก็ต RX: ข้อผิดพลาด 198986: 0 ลดลง: 0 overruns: 0 เฟรม: 0
          แพ็กเก็ต TX: 122929 ข้อผิดพลาด: 0 ลดลง: 0 overruns: 0 ผู้ให้บริการ: 0
          การชน: 0 txqueuelen: 3
          ไบต์จำนวน: 134195571 (127.9 MiB) TX ไบต์: 17101701 (16.3 MiB)

XXXX จะเป็นที่อยู่ IP ของคุณ YYYY คือที่อยู่ IP ของ hop ถัดไป

จากนั้นคุณสามารถประมวลผลเอาต์พุตของ ifconfig ภายหลังด้วย grep / awk / sed / cut / perl / อะไรก็ได้ที่จะแยกเฉพาะ IP

อีกทางเลือกหนึ่งหากคุณติดตั้งเครื่องมือ iproute ไว้คือใช้คำสั่ง ip เช่น

$ ip addr รายการ ppp0
21842: ppp0: mtu 1444 qdisc htb state UNKNOWN qlen 3
    การเชื่อมโยง / PPP
    inet XXXX เพียร์ YYYY / 32 ขอบเขตทั่วโลก ppp0

อาจอ่านง่ายกว่าและง่ายกว่าในการแยกวิเคราะห์:

$ ip addr รายการ ppp0 | awk '/ inet / {พิมพ์ $ 2}'
XXXX

- มีโอกาสที่ IP ใด ๆ ใน ifconfig จะไม่ตรงกับ IP อินเทอร์เน็ตจริง (ในกรณีของ biNAT) - ใน FreeBSD ไม่มีแพ็คเกจ iproute2 ดังนั้นคำสั่ง ip จึงไม่สามารถใช้ได้
SaveTheRbtz

จริงฉันไม่ใช้ NAT ดังนั้นมันจึงไม่เคยเกิดขึ้นกับฉัน .... ดูเหมือนว่า "ผิด" กับฉันที่จะใช้บริการภายนอกสำหรับข้อมูลที่คุณสามารถค้นหาระบบของคุณเอง แม้จะมี NAT ฉันยังคงต้องการที่จะค้นหาวิธีการสอบถามเราเตอร์ที่ทำ NAT (อาจจะผ่านการสืบค้น SNMP) แทนที่จะใช้บริการภายนอกซึ่งอาจหรือไม่อาจใช้งานได้เมื่อฉันต้องการ
cas

@ Craig วิธีการของคุณดี อย่างไรก็ตามไม่ใช่ IP ภายนอกยกเว้นว่าคุณสามารถเข้าถึงได้จากค่าภายนอก คุณไม่ต้องพึ่งพาจุดเชื่อมต่อภายนอกสำหรับคำตอบนี้ แนวคิดคือการหาจุดภายนอกที่เชื่อถือได้ (อย่างน้อยกว่าจุดรอบนอกของคุณ) สำหรับการสืบค้น OpenDNS เป็นจุดที่ดี
nik

@nik: กรณีเดียวที่ IP ของเราเตอร์ชายแดนไม่ใช่ IP ภายนอกคือเมื่อคุณอยู่หลัง NAT หลายเลเยอร์ ... ในกรณีนี้โซลูชันที่ถูกต้องคือเปลี่ยนไปใช้บริการที่ไม่เสียหายโดยสมองโดยเร็ว . นอกจากนี้ปัญหาในการดึง URL เพื่อค้นหา IP ของคุณก็คือมันจะบอก IP ของโฮสต์ที่ดึงข้อมูลจริงเท่านั้นซึ่งอาจเป็นพร็อกซีที่ตัดผ่านส่วนหัวของ Via
cas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.