Genel IP adresimi belirleme komutu mu?

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:

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.).).

  1. DNS yanıt protokolü standartlaştırılmıştır (biçim uyumlu kalacaktır).
  2. 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.
  3. (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

  1. LANG=c eklendi ifconfig 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 80Enter
GET /plain HTTP/1.1Enter
HOST: ipecho.net Enter
BROWSER: web-kitEnter
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 .

PS ip at DuckDuckGo (komut satırı yok, ama big brother G de yok)

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