Perintah untuk menentukan IP publik saya?

637

Jika saya periksa dengan google , saya dapat melihat IP publik saya. Apakah ada sesuatu di baris perintah Ubuntu yang akan memberikan saya jawaban yang sama?

kfmfe04
sumber
2
"memiliki IP dinamis", "SSH menggunakan beberapa sistem lain di internet", "perintah yang akan menampilkan IP PUBLIK yang ada". Anda melihat masalah ayam / telur di sini? Bagaimana Anda bisa menjalankan perintah pada server jauh tanpa mengetahui alamatnya? Anda mungkin lebih tertarik pada layanan seperti no-ip.com / DynDNS.org.
gertvdijk
seseorang tidak dapat SSH tanpa mengetahui IP publik sobat ... dynDNS menghabiskan banyak biaya dan tidak ada ip yang sulit tetapi situasinya tidak memungkinkan itu ... tetap saja pertanyaannya telah dijawab .. terima kasih atas saran Anda
Bhavesh Diwan
1
PS duckduckgo.com/?q=ip (tidak ada baris perintah, tetapi tidak ada kakak G juga)
Campa
1
Mungkin ini harus menjadi pertanyaan yang terpisah, tetapi saya ingin melihat peringatan ketika alamat IP publik saya berubah. Untuk saat ini, saya hanya menggunakan jawaban berikut di crontab with notify-send.
PJ Brunet
solusi hebat di bawah ini. Untuk penggunaan Centos: di ifconfig eth1 | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*inet *([^ ]+).*/\2/p}'mana eth1 adalah perangkat jaringan yang Anda minati, Anda dapat menghilangkan string 'et1' untuk menampilkan semua ips dari semua adaptor. Alih-alih \2Anda dapat menulis \1 \2untuk menunjukkan nama masing-masing adaptor juga.
Hafenkranich

Jawaban:

916

Jika Anda tidak berada di belakang router, Anda dapat menemukannya menggunakan ifconfig.

Jika Anda berada di belakang perute, maka komputer Anda tidak akan tahu tentang alamat IP publik karena perute melakukan terjemahan alamat jaringan. Anda bisa bertanya pada beberapa situs web apa yang menggunakan alamat IP publik Anda curlatau wgetdan mengekstrak informasi yang Anda butuhkan darinya:

curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  

atau lebih pendek

curl https://ipinfo.io/ip
Michael K.
sumber
27
ty - tepat setelah saya memposting, saya menyadari bahwa saya tidak mencari jawaban di Google terlebih dahulu: sepertinya ini akan berfungsi curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' Kemungkinan lain tercantum di sini: go2linux.org/what-is-my-public-ip-address-with-linux
kfmfe04
1
yakin - Anda dapat menambahkannya ke jawaban Anda
kfmfe04
1
Untuk memperjelas: Itu adalah retas, dan sangat jelek pada saat itu, jadi saya melakukan edit untuk membuatnya lebih sederhana dan sesuatu yang dapat diingat orang.
jrg
2
Persis seperti yang dinyatakan Giovanni P. OP harus mengubah server yang diterima.
loostro
36
curl -s ipinfo.io/ip
chao
385

Untuk menemukan ip eksternal, Anda dapat menggunakan layanan berbasis web eksternal, atau menggunakan metode berbasis sistem. Yang lebih mudah adalah dengan menggunakan layanan eksternal, juga ifconfigsolusi berbasis akan bekerja di sistem Anda hanya jika Anda tidak ketinggalan a NAT. kedua metode tersebut telah dibahas secara rinci di bawah ini.

Menemukan IP eksternal menggunakan layanan eksternal

Cara termudah adalah dengan menggunakan layanan eksternal melalui browser baris perintah atau alat unduhan. Karena wgettersedia secara default di Ubuntu, kita dapat menggunakannya.
Untuk menemukan ip Anda, gunakan-

$ wget -qO- https://ipecho.net/plain ; echo

Kesopanan :

Anda juga dapat menggunakan lynx(browser) atau curlmenggantikannya wgetdengan sedikit variasi pada perintah di atas, untuk menemukan ip eksternal Anda.

Menggunakan curluntuk menemukan ip:

$ curl https://ipecho.net/plain

Untuk penggunaan output yang diformat lebih baik:

$ curl https://ipecho.net/plain ; echo

Metode yang lebih cepat (bisa dibilang tercepat) menggunakan digdengan OpenDNSsebagai resolver:

Jawaban lain di sini semua pergi HTTP ke server jauh. Beberapa dari mereka memerlukan penguraian output, atau mengandalkan header User-Agent untuk membuat server merespons dalam teks biasa. Mereka juga sering berubah (turun, ganti nama, memasang iklan, mungkin mengubah format output, dll.).

  1. Protokol respons DNS distandarisasi (formatnya akan tetap kompatibel).
  2. Secara historis layanan DNS (OpenDNS, Google Public DNS, ..) cenderung bertahan lebih lama dan lebih stabil, terukur, dan secara umum dijaga daripada layanan HTTP whatismyip.com baru apa pun yang sedang panas saat ini.
  3. (bagi mereka yang peduli dengan optimasi mikro), metode ini seharusnya lebih cepat secara inheren (baik itu hanya dengan beberapa mikro detik).

Menggunakan dig dengan OpenDNS sebagai resolver:

$ dig +short myip.opendns.com @resolver1.opendns.com

111.222.333.444

Disalin dari: https://unix.stackexchange.com/a/81699/14497

Menemukan IP eksternal tanpa mengandalkan layanan eksternal

  • Jika Anda tahu nama antarmuka jaringan Anda

Ketikkan yang berikut di terminal Anda:

$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'

Dalam contoh di atas, ganti <interface_name>dengan nama antarmuka Anda yang sebenarnya, misalnya: eth0, eth1, pp0, dll ...

Contoh penggunaan:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
  • Jika Anda tidak tahu nama antarmuka jaringan Anda

Ketik yang berikut di terminal Anda (ini mendapatkan nama dan alamat ip dari setiap antarmuka jaringan di sistem Anda):

$ 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 }'

Contoh penggunaan:

$ 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

NB: Output bersifat indikatif dan tidak nyata.

Courtesy: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/

MEMPERBARUI

  1. LANG=ctelah ditambahkan ke ifconfigpenggunaan berbasis, sehingga selalu memberikan output bahasa Inggris, terlepas dari pengaturan lokal.
disajikan89
sumber
1
@ Z9iT, Tentu .. Ini harus bekerja di distribusi linux asalkan Anda sudah menginstal wget. Seperti yang dikatakan jika Anda memiliki ikal atau lynx sudah tersedia, gunakan itu saja. Anda akan memerlukan izin root untuk menginstal jadi gunakansudo apt-get install wget
saji89
13
Perintah dengan ifconfig hanya berfungsi, jika Anda tidak berada di belakang NAT.
lukassteiner
1
cukup gunakan -wopsi curl alih-alih gema :)curl -w '\n' ident.me
drAlberT
3
Proposal ini menggunakan dig cukup bagus unix.stackexchange.com/questions/22615/…
binaryanomaly
4
Versi terakhir tanpa layanan eksternal hanya berfungsi, jika komputer Anda terhubung langsung ke internet yang jarang terjadi, jika tidak, Anda hanya mendapatkan alamat IP lokal Anda.
rubo77
117

Favorit saya selalu:

curl ifconfig.me

sederhana, mudah diketik.

Anda harus menginstal curl terlebih dahulu;)

Jika ifconfig.me sedang down coba icanhazip.com dan atau ipecho.net

curl icanhazip.com

atau

curl ipecho.net
Harimau kumbang
sumber
3
@ Z9iT, saya baru saja memeriksanya sekarang. Ya, itu akan menampilkan ip eksternal di terminal Anda.
saji89
7
Waktu respons dari ifconfig.metampaknya sedikit lebih lambat daripada ipecho.net.
Drew Noakes
3
Jika Anda tidak memiliki curltetapi memiliki wget:wget -U curl -qO- ifconfig.me
Stéphane Chazelas
2
ifconfig.me tampaknya tidak menanggapi :(
Asfand Qazi
1
@ AsfandYarQazi - bekerja di sini. Anda dapat mencoba salah satu alternatifnya, icanhazip.com
Panther
60

icanhazip.com adalah favorit saya.

curl icanhazip.com

Anda dapat meminta IPv4 secara eksplisit:

curl ipv4.icanhazip.com

Jika Anda belum memilikinya, curlAnda dapat menggunakannya wget:

wget -qO- icanhazip.com
yprez
sumber
Terima kasih! Saya harus mencoba banyak yang disarankan di atas sampai saya menemukan beberapa yang mampu IPv6. Sayang sekali bahwa layanan seperti itu biasanya masih hanya IPv4.
Vladimír Čunát
48

Saya menemukan semuanya menjengkelkan dan lambat, jadi saya menulis sendiri. Sederhana dan cepat.

API-nya ada di http://api.ident.me/

Contoh:

curl ident.me
curl v4.ident.me
curl v6.ident.me
Pierre Carrier
sumber
1
Woah, itu sangat cepat!
waldyrious
1
Saya menemukan solusi icanhazip.com lebih cepat dan itu termasuk baris baru dalam output.
Tyler Collier
1
Ya, memang memang lebih cepat akhir-akhir ini. Baru saja mengubah solusi saya.
Pierre Carrier
2
Pujian! 2 tahun dan Anda masih mempertahankannya. Sudah selesai dilakukan dengan baik. "IDENTify ME", adalah apa yang terlintas dalam pikiran saya, ketika saya perlu ip check :)
Mohnish
aws lebih cepat time curl http://checkip.amazonaws.com-> 0.91svs .241suntuk ident.meMari kita doakan saja aws tidak turun;)
Avindra Goolcharan
42

Anda bisa menggunakan permintaan DNS alih-alih permintaan HTTP untuk mengetahui IP publik Anda:

$ dig +short myip.opendns.com @resolver1.opendns.com

Ini menggunakan resolver1.opendns.comserver dns untuk menyelesaikan myip.opendns.comnama host ajaib ke alamat ip Anda .

jfs
sumber
3
Ini sangat cepat. Saya melakukan satu eksekusi pemanasan, kemudian 10 eksekusi masing-masing dan curl icanhazip.com. Rata-rata untuk curlversi: 174ms. Rata-rata untuk versi khusus DNS: 9ms. ~ 19x lebih cepat. Lihat juga: unix.stackexchange.com/a/81699/8383
Adam Monsen
1
@AdamMonsen Terima kasih atas tautannya. Inti menggunakan DNS (sebagai jawaban yang Anda tautkan mengatakan) adalah bahwa responsnya standar (dan tidak mungkin berubah) dan layanan (OpenDNS) mungkin bertahan lebih lama daripada sebagian besar alternatif http-nya. Waktu yang diperlukan untuk membuat permintaan mungkin dibayangi oleh perintah waktu mulai.
jfs
Ya. Saya tidak akan terkejut jika curlitu lebih lambat dari itu dig. Bahkan jika mereka ditulis ulang untuk menjadi sama mungkin, curlmasih akan lebih lambat; menggunakan HTTP ( termasuk DNS) dan dighanya menggunakan DNS.
Adam Monsen
22

Amazon AWS

curl http://checkip.amazonaws.com

Output sampel:

123.123.123.123

Saya suka itu karena:

  • ia hanya mengembalikan IP plaintext, tidak ada yang lain
  • itu dari penyedia terkenal yang tidak akan offline dalam waktu dekat
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
18

Yang saya gunakan adalah:

wget -O - -q icanhazip.com

Ya, Anda dapat memiliki ip :-)

jflaflamme
sumber
3
Saya lebih suka curl icanhazip.comkadang wget- kadang adalah satu-satunya yang tersedia, tetapi kadang-kadang tidak wgettersedia juga dan curlmerupakan satu-satunya pilihan Anda (seperti OS / X). Either way curl icanhazip.comhampir semudah curl ifconfig.metetapi jauh lebih lucu ;-)
TryTryAgain
11

Ketikkan persis ini, tekan di Entermana ditunjukkan:

telnet ipecho.net 80Enter
GET /plain HTTP/1.1Enter
HOST: ipecho.net Enter
BROWSER: web-kitEnter
Enter

Ini secara manual mengirimkan permintaan HTTP, yang akan mengembalikan IP Anda di bagian bawah HTTP/1.1 200 OK reply

Contoh output:

$ telnet ipecho.net 80
Trying 146.255.36.1...
Connected to ipecho.net.
Escape character is '^]'.
GET /plain HTTP/1.1
HOST: ipecho.net
BROWSER: web-kit

HTTP/1.1 200 OK
Date: Tue, 02 Jul 2013 07:11:42 GMT
Server: Apache
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache
Pragma: no-cache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html

f
111.222.333.444
0
Liam
sumber
6
Bagus, ini bekerja dengan baik, tidak harus menginstal curl adalah keuntungan bagi saya: satu liner: printf "GET / plain HTTP / 1.1 \ nHOST: ipecho.net \ nBROWSER: web-kit \ n \ n" | nc ipecho.net 80
Ozone
9

Satu lagi yang cepat (mungkin yang tercepat, relatif)

curl ipecho.net/plain
Mohnish
sumber
9

Untuk ini, STUN diciptakan. Sebagai klien, Anda dapat mengirim permintaan ke server STUN yang tersedia untuk umum dan minta ia memberikan kembali alamat IP yang dilihatnya. Agak tingkat rendah whatismyip.com karena tidak menggunakan HTTP dan tidak ada server DNS yang dibuat dengan cerdas tetapi protokol STUN yang sangat cepat.

Menggunakan stunclient

Jika Anda telah stunclientmenginstal ( apt-get install stuntman-clientpada debian / ubuntu) Anda cukup melakukan:

$stunclient stun.services.mozilla.com
Binding test: success
Local address: A.B.C.D:42541
Mapped address: W.X.Y.Z:42541

di mana A.B.C.Dalamat IP mesin Anda di internet lokal dan W.X.Y.Zserver alamat IP seperti situs web melihat dari luar (dan yang Anda cari). Menggunakan sedAnda dapat mengurangi output di atas hanya alamat IP:

stunclient stun.services.mozilla.com |
    sed -n -e "s/^Mapped address: \(.*\):.*$/\1/p"

Namun, pertanyaan Anda adalah bagaimana menemukannya menggunakan baris perintah, yang mungkin dikecualikan menggunakan klien STUN. Jadi saya bertanya-tanya ...

Menggunakan bash

Permintaan STUN dapat dibuat dengan tangan, dikirim ke server STUN eksternal menggunakan netcatdan diproses setelah menggunakan dd, hexdumpdan sedseperti itu:

$echo -en '\x00\x01\x00\x08\xc0\x0c\xee\x42\x7c\x20\x25\xa3\x3f\x0f\xa1\x7f\xfd\x7f\x00\x00\x00\x03\x00\x04\x00\x00\x00\x00' |
    nc -u -w 2 stun.services.mozilla.com 3478 |
    dd bs=1 count=4 skip=28 2>/dev/null |
    hexdump -e '1/1 "%u."' |
    sed 's/\.$/\n/'

Gema mendefinisikan permintaan STUN biner (0x0001 menunjukkan Permintaan Binding) memiliki panjang 8 (0x0008) dengan cookie 0xc00cee dan beberapa hal yang disisipkan dari wireshark. Hanya empat byte yang mewakili IP eksternal yang diambil dari jawabannya, dibersihkan dan dicetak.

Bekerja, tetapi tidak disarankan untuk penggunaan produksi :-)

PS Banyak server STUN tersedia karena merupakan teknologi inti untuk SIP dan WebRTC. Menggunakan salah satu dari Mozilla harus privasi yang aman tetapi Anda juga bisa menggunakan yang lain: STUN daftar server

Victor Klos
sumber
+1 untuk teknologi geekiest dan sebenarnya yang paling tepat. Permintaan http berfungsi, yang mana saya telah menggunakan seluruh hidup saya, tapi saya suka bahwa sebenarnya ada beberapa pemikiran yang diajukan ke pertanyaan. Saya tidak tahu ini. Terima kasih!
Mike S
7

Saya memiliki layanan bodoh untuk ini dengan telnet. Sesuatu seperti ini:

telnet myip.gelma.net

Your IPv4: xxx.xxx.xxx.xxx
Your IPv6: ::ffff:xxxx:xxxx

Jangan ragu untuk menggunakannya.

Gelma
sumber
5

Anda dapat membaca halaman web dengan hanya menggunakan bash, tanpa curl, wget:

$ exec 3<> /dev/tcp/icanhazip.com/80 && # open connection
  echo 'GET /' >&3 &&                   # send http 0.9 request
  read -u 3 && echo $REPLY &&           # read response
  exec 3>&-                             # close fd
jfs
sumber
Ini dikombinasikan dengan checkip.amazonaws.comadalah yang tercepat bagi saya
Avindra Goolcharan
1
@AvindraGoolcharan mencoba permintaan dns
jfs
2

Bagi kita yang memiliki akses masuk ke router kita, menggunakan skrip untuk bertanya kepada router apa alamat IP WAN-nya adalah cara paling efisien untuk menentukan alamat IP eksternal. Misalnya skrip python berikut mencetak IP eksternal untuk router Medialink MWN-WAPR300N saya:

import urllib, urllib2, cookielib
import re
from subprocess import check_output as co

cookie_jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar))
urllib2.install_opener(opener)

def get(url, values=None):
  data = None
  if values: data = urllib.urlencode(values)
  req = urllib2.Request(url, data)
  rsp = urllib2.urlopen(req)
  return rsp.read()

router = co(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2]
url = "http://" + router

get(url+"/index.asp")
get(url+"/LoginCheck", dict(checkEn='0', Username='admin', Password='admin'))
page = get(url+"/system_status.asp")

for line in page.split("\n"):
  if line.startswith("wanIP = "):
    print line.split('"')[1]
    exit(1)

Perhatikan bahwa ini tidak terlalu aman (seperti halnya dengan kredensial plaintext & masuk ke sebagian besar router), dan tentu saja tidak portabel (perlu diubah untuk setiap router). Namun itu sangat cepat dan solusi yang sangat masuk akal pada jaringan rumah yang aman secara fisik.

Untuk mengkustomisasi skrip untuk router lain, saya sarankan menggunakan addon tamperdata di firefox untuk menentukan permintaan HTTP apa yang harus dibuat.

cronburg
sumber
2
Anda harus mencoba mendapatkan alamat IP dari router secara tata bahasa. Sebagai contoh router = subprocess.check_output(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2].
Cristian Ciupitu
2

Ini akan mendapatkan IP lokal:

ifconfig

atau untuk output yang lebih pendek:

ifconfig | grep inet

juga

ip addr show

dan mungkin:

hostname -I

Ini harus mendapatkan IP eksternal

wget http://smart-ip.net/myip -O - -q ; echo

NB Jika Anda tidak keberatan untuk menginstal curl, ini juga:

curl http://smart-ip.net/myip
Wilf
sumber
1
ifconfig | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*addr: *([^ ]+).*/\1,\2/p}'akan mencetak antarmuka lokal dan IP V4 yang sesuai
Hannu
1
ifconfig | sed -nre '/^[^ ]+/{N;N;s/^([^ ]+).*addr: *([^ ]+).*addr: *([^ ]+).*/\1,\2,\3/p}'- IP v4 dan v6.
Hannu
2

Banyak router rumah dapat ditanyakan oleh UPnP:

curl "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>" -s

Kemudian, ambil alamat ip dari jawabannya.

grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'

sumber
2

Jika Anda menggunakan DD-WRT maka ini berfungsi untuk saya:

curl -s 192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'

atau

curl -s -u your_ddwrt_username:your_ddwrt_password http://192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'
  • Di mana 192.168.1.1 adalah Alamat IP Gateway / Router LAN dari router DD-WRT.

  • The -s komponen berarti diam (yaitu tidak menunjukkan kemajuan informasi curl).

  • Oh, saya harus menyebutkan bahwa saya menggunakan hal di atas dengan "DD-WRT v24-sp2 (01/04/15) std" .
CMP
sumber
1

Jika Anda telah menginstal lynx dalam tipe Ubuntu

lynx bot.whatismyipaddress.com
Binny
sumber
curl bot.whatismyipaddress.combekerja juga.
Tomofumi
0

gunakan ip!

ip addr show

kemudian cari adaptor yang relevan (tidak lo, dan biasanya eth0), dan cari alamat ip di dekat inet.

Eliran Malka
sumber
2
Pertanyaannya adalah tentang publik, bukan alamat IP internal
Wolf
0

Mungkin saya sedikit terlambat, tetapi inxi dapat melakukannya dengan cukup mudah.

Pasang inxi

sudo apt install inxi

Kemudian jalankan perintah berikut

inxi -i

Contoh dengan informasi saya diblokir menggunakan zopsi untuk menyalin dan menempel ke situs-situs seperti ini:

~$ inxi -iz
Network:   Card: NVIDIA MCP77 Ethernet driver: forcedeth
           IF: eth0 state: up speed: 1000 Mbps duplex: full mac: <filter>
           WAN IP: <filter>
           IF: eth0 ip-v4: <filter> ip-v6-link: N/A

Di mana dikatakan <filter>adalah tempat WAN IP, IPv4, alamat MAC dll akan muncul

Terrance
sumber
-2

Cukup keluarkan traceroute untuk situs web atau layanan apa pun ..

sudo traceroute -I google.com

Baris 2 sepertinya selalu menjadi alamat IP publik saya setelah melewati gateway router saya.

user@user-PC ~ $ sudo traceroute -I google.com
traceroute to google.com (173.194.46.104), 30 hops max, 60 byte packets
 1  25.0.8.1 (25.0.8.1)  230.739 ms  231.416 ms  237.819 ms
 2  199.21.149.1 (199.21.149.1)  249.136 ms  250.754 ms  253.994 ms**

Jadi, buat perintah bash.

sudo traceroute -I google.com | awk -F '[ ]' '{ if ( $2 ="2" ) { print $5 } }'

Dan hasilnya ...

(199.21.149.1)

Saya tidak berpikir mengandalkan skrip PHP dan jenisnya adalah praktik yang baik.

woahguy
sumber
ini menarik, meskipun sangat lambat dan tidak mendapatkan ip eksternal saya seperti ini
rubo77
Jawaban ini terlalu tidak akurat untuk berguna. Di lingkungan perusahaan saya, saya tidak mendapatkan alamat IP sama sekali. Satu-satunya cara kerjanya adalah jika Anda memahami bagaimana router dan switch lokal Anda dibuat, dan bahkan kemudian itu mungkin tidak on line 2 tergantung pada jumlah hop lokal yang Anda lewati. Tidak ada cara untuk membuat algoritma yang koheren dari teknik ini, dan ada banyak solusi lain di sini yang lebih sederhana dan akan memberi Anda jawaban yang tepat setiap saat.
Mike S
Walaupun mungkin bekerja di beberapa konfigurasi khusus, saya sebenarnya belum pernah melihat IP eksternal saya di traceroute. Biasanya gateway saya (jika saya tidak berada di belakang NAT), atau gateway router saya, tetapi sebagian besar router lain lebih jauh.
mivk
alias ip = 'lynx --dump ipecho.net/plain '
phildobbin
-2

Perintah tanpa dependensi kecuali 8.8.8.8 menjadi DNS Google:

echo $(ip route get 8.8.8.8 | awk '{print $NF; exit}')
Rolf
sumber
Ini hanya memberi tahu Anda alamat IP dari antarmuka keluar lokal Anda.
guntbert
perintah tidak menunjukkan alamat ip publik jika saya menjalankannya di server cloud. bukankah itu pertanyaannya?
Rolf
Tidak, di mana Anda melihat "server cloud"?
guntbert