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?
networking
kfmfe04
sumber
sumber
notify-send
.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\2
Anda dapat menulis\1 \2
untuk menunjukkan nama masing-masing adaptor juga.Jawaban:
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
curl
atauwget
dan mengekstrak informasi yang Anda butuhkan darinya:atau lebih pendek
sumber
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-linuxUntuk menemukan ip eksternal, Anda dapat menggunakan layanan berbasis web eksternal, atau menggunakan metode berbasis sistem. Yang lebih mudah adalah dengan menggunakan layanan eksternal, juga
ifconfig
solusi berbasis akan bekerja di sistem Anda hanya jika Anda tidak ketinggalan aNAT
. 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
wget
tersedia secara default di Ubuntu, kita dapat menggunakannya.Untuk menemukan ip Anda, gunakan-
Kesopanan :
Anda juga dapat menggunakan
lynx
(browser) ataucurl
menggantikannyawget
dengan sedikit variasi pada perintah di atas, untuk menemukan ip eksternal Anda.Menggunakan
curl
untuk menemukan ip:Untuk penggunaan output yang diformat lebih baik:
Metode yang lebih cepat (bisa dibilang tercepat) menggunakan
dig
denganOpenDNS
sebagai resolver:Disalin dari: https://unix.stackexchange.com/a/81699/14497
Menemukan IP eksternal tanpa mengandalkan layanan eksternal
Ketikkan yang berikut di terminal Anda:
Dalam contoh di atas, ganti
<interface_name>
dengan nama antarmuka Anda yang sebenarnya, misalnya:eth0
,eth1
,pp0
, dll ...Contoh penggunaan:
Ketik yang berikut di terminal Anda (ini mendapatkan nama dan alamat ip dari setiap antarmuka jaringan di sistem Anda):
Contoh penggunaan:
NB: Output bersifat indikatif dan tidak nyata.
Courtesy: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
MEMPERBARUI
LANG=c
telah ditambahkan keifconfig
penggunaan berbasis, sehingga selalu memberikan output bahasa Inggris, terlepas dari pengaturan lokal.sumber
sudo apt-get install wget
-w
opsi curl alih-alih gema :)curl -w '\n' ident.me
Favorit saya selalu:
sederhana, mudah diketik.
Anda harus menginstal curl terlebih dahulu;)
Jika ifconfig.me sedang down coba icanhazip.com dan atau ipecho.net
atau
sumber
ifconfig.me
tampaknya sedikit lebih lambat daripadaipecho.net
.curl
tetapi memilikiwget
:wget -U curl -qO- ifconfig.me
icanhazip.com adalah favorit saya.
Anda dapat meminta IPv4 secara eksplisit:
Jika Anda belum memilikinya,
curl
Anda dapat menggunakannyawget
:sumber
Saya menemukan semuanya menjengkelkan dan lambat, jadi saya menulis sendiri. Sederhana dan cepat.
API-nya ada di http://api.ident.me/
Contoh:
sumber
time curl http://checkip.amazonaws.com
->0.91s
vs.241s
untukident.me
Mari kita doakan saja aws tidak turun;)Anda bisa menggunakan permintaan DNS alih-alih permintaan HTTP untuk mengetahui IP publik Anda:
Ini menggunakan
resolver1.opendns.com
server dns untuk menyelesaikanmyip.opendns.com
nama host ajaib ke alamat ip Anda .sumber
curl icanhazip.com
. Rata-rata untukcurl
versi: 174ms. Rata-rata untuk versi khusus DNS: 9ms. ~ 19x lebih cepat. Lihat juga: unix.stackexchange.com/a/81699/8383curl
itu lebih lambat dari itudig
. Bahkan jika mereka ditulis ulang untuk menjadi sama mungkin,curl
masih akan lebih lambat; menggunakan HTTP ( termasuk DNS) dandig
hanya menggunakan DNS.Amazon AWS
Output sampel:
Saya suka itu karena:
sumber
Yang saya gunakan adalah:
Ya, Anda dapat memiliki ip :-)
sumber
curl icanhazip.com
kadangwget
- kadang adalah satu-satunya yang tersedia, tetapi kadang-kadang tidakwget
tersedia juga dancurl
merupakan satu-satunya pilihan Anda (seperti OS / X). Either waycurl icanhazip.com
hampir semudahcurl ifconfig.me
tetapi jauh lebih lucu ;-)Ketikkan persis ini, tekan di Entermana ditunjukkan:
telnet ipecho.net 80
EnterGET /plain HTTP/1.1
EnterHOST: ipecho.net
EnterBROWSER: web-kit
EnterEnter
Ini secara manual mengirimkan permintaan HTTP, yang akan mengembalikan IP Anda di bagian bawah
HTTP/1.1 200 OK reply
Contoh output:
sumber
Satu lagi yang cepat (mungkin yang tercepat, relatif)
sumber
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
stunclient
menginstal (apt-get install stuntman-client
pada debian / ubuntu) Anda cukup melakukan:di mana
A.B.C.D
alamat IP mesin Anda di internet lokal danW.X.Y.Z
server alamat IP seperti situs web melihat dari luar (dan yang Anda cari). Menggunakansed
Anda dapat mengurangi output di atas hanya alamat IP: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
netcat
dan diproses setelah menggunakandd
,hexdump
dansed
seperti itu: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
sumber
Saya memiliki layanan bodoh untuk ini dengan telnet. Sesuatu seperti ini:
Jangan ragu untuk menggunakannya.
sumber
Anda dapat membaca halaman web dengan hanya menggunakan bash, tanpa
curl
,wget
:sumber
checkip.amazonaws.com
adalah yang tercepat bagi sayaBagi 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:
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.
sumber
router = subprocess.check_output(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2]
.Ini akan mendapatkan IP lokal:
atau untuk output yang lebih pendek:
juga
dan mungkin:
Ini harus mendapatkan IP eksternal
NB Jika Anda tidak keberatan untuk menginstal
curl
, ini juga:sumber
ifconfig | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*addr: *([^ ]+).*/\1,\2/p}'
akan mencetak antarmuka lokal dan IP V4 yang sesuaiifconfig | sed -nre '/^[^ ]+/{N;N;s/^([^ ]+).*addr: *([^ ]+).*addr: *([^ ]+).*/\1,\2,\3/p}'
- IP v4 dan v6.Banyak router rumah dapat ditanyakan oleh UPnP:
Kemudian, ambil alamat ip dari jawabannya.
sumber
Jika Anda menggunakan DD-WRT maka ini berfungsi untuk saya:
atau
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).
sumber
Jika Anda telah menginstal lynx dalam tipe Ubuntu
sumber
curl bot.whatismyipaddress.com
bekerja juga.gunakan
ip
!kemudian cari adaptor yang relevan (tidak
lo
, dan biasanyaeth0
), dan cari alamat ip di dekatinet
.sumber
Mungkin saya sedikit terlambat, tetapi inxi dapat melakukannya dengan cukup mudah.
Pasang
inxi
Kemudian jalankan perintah berikut
Contoh dengan informasi saya diblokir menggunakan
z
opsi untuk menyalin dan menempel ke situs-situs seperti ini:Di mana dikatakan
<filter>
adalah tempat WAN IP, IPv4, alamat MAC dll akan munculsumber
Cukup keluarkan traceroute untuk situs web atau layanan apa pun ..
Baris 2 sepertinya selalu menjadi alamat IP publik saya setelah melewati gateway router saya.
Jadi, buat perintah bash.
Dan hasilnya ...
Saya tidak berpikir mengandalkan skrip PHP dan jenisnya adalah praktik yang baik.
sumber
Perintah tanpa dependensi kecuali 8.8.8.8 menjadi DNS Google:
sumber