สำหรับการค้นหา ip ภายนอกคุณสามารถใช้บริการบนเว็บภายนอกหรือใช้วิธีการตามระบบ หนึ่งง่ายคือการใช้บริการภายนอกยังifconfig
โซลูชั่นที่จะทำงานในระบบของคุณ NAT
แต่ถ้าคุณไม่ได้อยู่เบื้องหลัง ทั้งสองวิธีได้รับการกล่าวถึงในรายละเอียดด้านล่าง
ค้นหา IP ภายนอกโดยใช้บริการภายนอก
วิธีที่ง่ายที่สุดคือการใช้บริการภายนอกผ่านเบราว์เซอร์ commandline หรือเครื่องมือดาวน์โหลด เนื่องจากwget
เป็นค่าเริ่มต้นใน Ubuntu เราจึงสามารถใช้มันได้
เพื่อหาไอพีของคุณให้ใช้
$ wget -qO- https://ipecho.net/plain ; echo
มารยาท :
คุณสามารถใช้lynx
(เบราว์เซอร์) หรือcurl
แทนที่wget
ด้วยคำสั่งย่อยข้างบนเพื่อค้นหาไอพีภายนอกของคุณ
ใช้curl
เพื่อค้นหา ip:
$ curl https://ipecho.net/plain
เพื่อการใช้งานในรูปแบบเอาต์พุตที่ดีขึ้น:
$ curl https://ipecho.net/plain ; echo
ที่รวดเร็ว (เนื้อหาที่เร็วที่สุด) วิธีการใช้dig
ที่มีOpenDNS
เป็นตัวจำแนก:
คำตอบอื่น ๆ ที่นี่ทั้งหมดผ่าน HTTP ไปยังเซิร์ฟเวอร์ระยะไกล บางส่วนต้องการการแยกวิเคราะห์เอาต์พุตหรือใช้ส่วนหัว User-Agent เพื่อให้เซิร์ฟเวอร์ตอบกลับเป็นข้อความธรรมดา พวกเขายังเปลี่ยนค่อนข้างบ่อย (ลงไปเปลี่ยนชื่อวางโฆษณาอาจเปลี่ยนรูปแบบเอาท์พุท ฯลฯ )
- โปรโตคอลการตอบสนอง DNS เป็นมาตรฐาน (รูปแบบจะเข้ากันได้)
- บริการ DNS ในอดีต (OpenDNS, DNS สาธารณะของ Google, .. ) มีแนวโน้มที่จะอยู่รอดได้นานกว่าและมีความเสถียรสามารถปรับขนาดได้และดูแลโดยทั่วไปมากกว่าบริการ HTTP whatismyip.com HTTP ที่ทันสมัยที่สุด
- (สำหรับผู้ที่สนใจเกี่ยวกับการเพิ่มประสิทธิภาพขนาดเล็ก) วิธีนี้ควรเร็วขึ้นโดยเนื้อแท้ (ไม่กี่วินาทีเท่านั้น)
การใช้ dig กับ OpenDNS เป็นตัวแก้ไข:
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
คัดลอกมาจาก: https://unix.stackexchange.com/a/81699/14497
ค้นหา IP ภายนอกโดยไม่ต้องพึ่งพาบริการภายนอก
- ถ้าคุณรู้ชื่ออินเทอร์เฟซเครือข่ายของคุณ
พิมพ์สิ่งต่อไปนี้ในเทอร์มินัลของคุณ:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
ในข้างต้นแทนที่<interface_name>
ด้วยชื่อของอินเตอร์เฟซที่แท้จริงของคุณเช่น: eth0
, eth1
, pp0
ฯลฯ ...
ตัวอย่างการใช้งาน:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
- หากคุณไม่รู้จักชื่ออินเทอร์เฟซเครือข่าย
พิมพ์สิ่งต่อไปนี้ในเทอร์มินัลของคุณ (ซึ่งจะได้รับชื่อและที่อยู่ ip ของทุก ๆ อินเทอร์เฟซเครือข่ายในระบบของคุณ):
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
ตัวอย่างการใช้งาน:
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444
หมายเหตุ:ผลลัพธ์เป็นสิ่งบ่งชี้และไม่ใช่ของจริง
มารยาท: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
UPDATE
LANG=c
ได้รับการเพิ่มเข้ากับifconfig
ประเพณีที่ใช้เพื่อที่จะให้ผลภาษาอังกฤษเสมอโดยไม่คำนึงถึงการตั้งค่าสถานที่