Eğer kontrol edersem Google Halka açık IP adresimi görebiliyorum. Ubuntu komut satırında bana aynı cevabı verecek bir şey var mı?
Bir yönlendiricinin arkasında değilseniz, bunu kullanarak öğrenebilirsiniz ifconfig
.
Bir yönlendiricinin arkasındaysanız, yönlendirici bir ağ adresi çevirisi yaptığından bilgisayarınız genel IP adresini bilmeyecektir. Bazı web sitelerine genel IP adresinizin ne kullandığını sorabilirsiniz curl
veya wget
ve ihtiyacınız olan bilgileri ondan çıkarın:
curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
veya daha kısa
curl https://ipinfo.io/ip
Harici ıp'yi bulmak için harici web tabanlı hizmetleri kullanabilir veya sistem tabanlı yöntemleri kullanabilirsiniz. Kolay bir dış hizmet kullanımı için de ifconfig
tabanlı çözümler, yalnızca bir çözümün arkasında değilseniz sisteminizde çalışır. NAT
. bu iki yöntem aşağıda ayrıntılı olarak tartışılmıştır.
Harici servisleri kullanarak harici IP bulma
En kolay yol, bir komut satırı tarayıcısı veya indirme aracı aracılığıyla harici bir servis kullanmaktır. Dan beri wget
ubuntu'da varsayılan olarak kullanılabilir, bunu kullanabiliriz.
IP adresinizi bulmak için-
$ wget -qO- https://ipecho.net/plain ; echo
Nezaket:
- https://hawknotes.blogspot.in/2010/06/finding-your-external-ip-address.html
- https://ipecho.net/plain
Ayrıca kullanabilirsiniz lynx
(tarayıcı) ya da curl
yerine wget
yukarıdaki komutta küçük değişikliklerle, harici ıp'nizi bulmak için.
Kullanım curl
ıp adresini bulmak için:
$ curl https://ipecho.net/plain
Daha iyi biçimlendirilmiş bir çıktı kullanımı için:
$ curl https://ipecho.net/plain ; echo
Kullanarak daha hızlı (tartışmasız en hızlı) bir yöntem dig
ile OpenDNS
çözümleyici olarak:
Buradaki diğer cevapların hepsi HTTP üzerinden uzak bir sunucuya gidiyor. Bazıları çıktının ayrıştırılmasını gerektirir veya sunucunun düz metin olarak yanıt vermesini sağlamak için User-Agent başlığına güvenir. Ayrıca oldukça sık değişirler (aşağı inerler, adlarını değiştirirler, reklamlar yayınlarlar, çıktı biçimini değiştirebilirler vb.).).
- DNS yanıt protokolü standartlaştırılmıştır (biçim uyumlu kalacaktır).
- Tarihsel olarak DNS hizmetleri (OpenDNS, Google Genel DNS, ..) çok daha uzun süre hayatta kalma eğilimindedir ve yeni kalçalardan daha kararlı, ölçeklenebilir ve genellikle bakılır whatismyip.com HTTP servisi bugün sıcak.
- (mikro optimizasyona önem veren meraklılar için), bu yöntem doğal olarak daha hızlı olmalıdır (sadece birkaç mikro saniye olsun).
Dıg ile opendns'i çözümleyici olarak kullanma:
$ dig +short myip.opendns.com @resolver1.opendns.com111.222.333.444
Kopyalanan: https://unix.stackexchange.com/a/81699/14497
Harici hizmetlere güvenmeden harici IP bulma
- Ağ arabirimi adınızı biliyorsanız
Terminalinize aşağıdakileri yazın:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
Yukarıdakilerde, değiştirin <interface_name>
gerçek arayüzünüzün adıyla, örn.: eth0
, eth1
, pp0
vb...
Örnek Kullanım:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'111.222.333.444
- Ağ arabirimi adınızı bilmiyorsanız
Terminalinize aşağıdakileri yazın (bu, sisteminizdeki her ağ arabiriminin adını ve ıp adresini alır):
$ 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 }'
Örnek Kullanım:
$ 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.1ppp0: 111.222.333.444
N.B: Çıkış göstergesi değil, gerçek.
Nezaket: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
Güncelleme
-
LANG=c
eklendiifconfig
temel kullanımlar, böylece yerel ayardan bağımsız olarak her zaman ingilizce çıktı verir.
En sevdiğim her zaman olmuştur. :
curl ifconfig.me
basit, yazması kolay.
Önce curl yüklemeniz gerekecek;)
Eğer ifconfig.me aşağı deneyin mi icanhazip.com ve veya ipecho.net
curl icanhazip.com
veya
curl ipecho.net
icanhazip.com benim favorim.
curl icanhazip.com
Ipv4'ü açıkça isteyebilirsiniz:
curl ipv4.icanhazip.com
Eğer yoksa curl
kullanabilirsiniz wget
yerine:
wget -qO- icanhazip.com
Her şeyi sinir bozucu ve yavaş buldum, ben de kendiminkini yazdım. Basit ve hızlı.
API'sı açık http://api.ident.me/
Örnekler:
curl ident.mecurl v4.ident.mecurl v6.ident.me
Teknik tasarım: dns'de, ident.me hem A hem de AAAA kayıtlarına sahip, v4.ident.me sadece bir A kaydı var ve v6.ident.me sadece bir AAAA kaydı var. Bu Ip'lerdeki 443 ve 80 numaralı bağlantı noktaları nginx tarafından sunulur ve SSL tarafından sağlanan sertifikaları kullanır letsencrypt.org certbot aracılığıyla ve aşağıdaki yapılandırmayla (alıntı):
server { […] server_name .ident.me; location / { default_type text/plain; return 200 $remote_addr; add_header Access-Control-Allow-Origin "*"; add_header Cache-Control "no-cache, no-store, must-revalidate"; }}
Genel ıp'nizi bulmak için HTTP isteği yerine bir DNS isteği kullanabilirsiniz:
$ dig +short myip.opendns.com @resolver1.opendns.com
Kullanır resolver1.opendns.com
büyülü sorunu çözmek için dns sunucusu myip.opendns.com
adı senin ıp adresi.
Amazon AWS
curl https://checkip.amazonaws.com
Örnek çıktı:
123.123.123.123
Ayrıca tarayıcı üzerinde çalışır: http://checkip.amazonaws.com
Hoşuma gitti çünkü:
- yanıt gövdesinde yalnızca düz metin ıp'sini döndürür, başka hiçbir şey
- bu, yakın zamanda çevrimdışı olma olasılığı düşük olan iyi bilinen bir sağlayıcıdan geliyor
Benim kullandığım :
wget -O - -q icanhazip.com
Evet, ıp'niz olabilir :-)
Tam olarak bunu yazın, tuşuna basın Enter belirtildiği yerde:
telnet ipecho.net 80
EnterGET /plain HTTP/1.1
EnterHOST: ipecho.net
EnterBROWSER: web-kit
Enter
Enter
Bu, ıp'nizi bir sayfanın altına döndürecek bir HTTP isteğini manuel olarak gönderir. HTTP/1.1 200 OK reply
Örnek çıktı:
$ telnet ipecho.net 80Trying 146.255.36.1...Connected to ipecho.net.Escape character is '^]'.GET /plain HTTP/1.1HOST: ipecho.netBROWSER: web-kitHTTP/1.1 200 OKDate: Tue, 02 Jul 2013 07:11:42 GMTServer: ApacheExpires: Mon, 26 Jul 1997 05:00:00 GMTCache-Control: no-cachePragma: no-cacheVary: Accept-EncodingTransfer-Encoding: chunkedContent-Type: text/htmlf111.222.333.4440
Bunun için, ŞAŞIRTMAK icat edildi. Bir istemci olarak, herkese açık bir STUN sunucusuna bir istek gönderebilir ve gördüğü IP adresini geri vermesini sağlayabilirsiniz. Bir çeşit düşük seviye whatismyip.com hiçbir HTTP ve akıllıca hazırlanmış DNS sunucusu kullanmadığı için, ancak göz kamaştırıcı derecede hızlı SERSEMLETİCİ protokol.
Kullanım stunclient
Eğer varsa stunclient
yüklem (apt-get install stuntman-client
debian / ubuntu'da) basitçe yapabilirsiniz:
$stunclient stun.services.mozilla.comBinding test: successLocal address: A.B.C.D:42541Mapped address: W.X.Y.Z:42541
nerede A.B.C.D
makinenizin yerel ağdaki IP adresi ve W.X.Y.Z
bu, web siteleri gibi sunucuların dışarıdan gördüğü IP adresidir (ve aradığınız). Kullanım sed
yukarıdaki çıktıyı yalnızca bir IP adresine düşürebilirsiniz:
stunclient stun.services.mozilla.com | sed -n -e "s/^Mapped address: \(.*\):.*$/\1/p"
Ancak, sorunuz komut satırını kullanarak nasıl bulunacağıydı; bu, bir SERSEMLETİCİ istemci kullanmayı hariç tutabilir. Çok merak ediyorum...
Kullanım bash
ŞOK bir istek, el yapımı, dış ŞOK bir sunucuya gönderilebilir kullanarak netcat
ve post-processed kullanarak dd
, hexdump
ve sed
öyle gibi:
$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/'
Yankı, 0xc00cee çerezi ve wireshark'tan yapıştırılan bazı şeyler ile 8 (0x0008) uzunluğa sahip bir ikili SERSEMLETME isteğini (0x0001 Bağlama İsteğini gösterir) tanımlar. Yanıttan yalnızca dış IP'yi temsil eden dört bayt alınır, temizlenir ve yazdırılır.
Çalışma, ancak üretim kullanımı için tavsiye edilmez :-)
P.S. SIP ve WebRTC için temel bir teknoloji olduğu için birçok STUN sunucusu mevcuttur. Mozilla'dan birini kullanmak gizlilik açısından güvenli olmalı, ancak başka birini de kullanabilirsiniz: SERSEMLETİCİ sunucu listesi
“dinamik IP’ye sahip olmak”, “İnternet üzerinden başka bir sistem kullanarak SSH”, “mevcut GENEL IP’yi gösterecek komut”. Tavuk / yumurta sorununu görüyor musun? Adresini bilmeden uzak bir sunucuda komutları nasıl çalıştırabilirdiniz? Aşağıdaki gibi hizmetlerle daha fazla ilgilenebilirsiniz no-ip.com / DynDNS.org .
Belki bu ayrı bir soru olmalı, ancak genel IP adresim değiştiğinde bir uyarı görmek istiyorum. Şimdilik, aşağıdaki cevapları bir crontab’da 'bildir-gönder` ile kullanıyorum.
arkadaşım genel IP’yi bilmeden SSH olamaz… dynDNS çok pahalıya mal oluyor ve no-ıp zor çalışıyor ancak durum buna izin vermiyor… her neyse, soru zaten cevaplandı… öneriniz için teşekkürler
aşağıdaki harika çözümler. Centos kullanımı için: 'ifconfig eth1 | sed -nre '/ ^[^ ]+/ {N;s /^([^ ]+).*ınet ([^ ]+)./\2 /p}" eth1’in ilgilenilen ağ aygıtı olduğu durumlarda, tüm bağdaştırıcıların tüm ıp’lerini göstermek için ‘et1’ dizesini atlayabilirsiniz. \ 2
yerine, her bağdaştırıcının adlarını göstermek için \ 1 \ 2
yazabilirsiniz.
Cevapların hiçbiri doğru yaklaşımı göstermiyor. Bir cevap göndermek için yeterli itibara sahip olmadığım için, harici hizmetlere güvenmeden nasıl elde edileceğine dair bir yorum göndereceğim. Sadece $ hostname --ıp-address
terminalinde çalıştırın