Genel IP adresimi belirleme komutu?

525

google ile kontrol edersem herkese açık IP’mi görebilirim. Ubuntu komut satırında bana aynı cevabı verecek bir şey var mı?

    
sordu kfmfe04 16.01.2012 12:50

22 cevap

747

Bir yönlendiricinin arkasında değilseniz, ifconfig değerini kullanarak bulabilirsiniz.

Bir yönlendiricinin arkasındaysanız, yönlendiricinin ağ adresi çevirisi yapması nedeniyle bilgisayarınız genel IP adresini bilmeyecektir. Bazı web sitelerine, genel IP adresinizin curl veya wget değerini kullandığını ve ondan ihtiyaç duyduğunuz bilgileri almasını isteyebilirsiniz:

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

veya daha kısa

curl ipinfo.io/ip
    
verilen cevap Michael K 16.01.2012 12:56
363

Harici ipi bulmak için, harici web tabanlı hizmetleri kullanabilir veya sistem tabanlı yöntemler kullanabilirsiniz. Harici servisi kullanmak daha kolay, ifconfig tabanlı çözümler de sisteminizde ancak NAT 'nin arkasında değilseniz çalışır. iki yöntem aşağıda ayrıntılı olarak ele alınmıştır.

Harici hizmetleri kullanarak harici IP bulma

En kolay yol, bir komut satırı tarayıcısı veya indirme aracıyla harici bir servis kullanmaktır. Ubuntu'da wget varsayılan olarak bulunduğundan, bunu kullanabiliriz.
İpinizi bulmak için kullanın-

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

Nezaket :

Ayrıca, harici ipinizi bulmak için yukarıdaki kodla lynx yerine curl (tarayıcı) veya wget değerini de kullanabilirsiniz.

ipi bulmak için curl değerini kullanma:

$ curl ipecho.net/plain

Daha iyi bir formatlanmış çıktı kullanımı için:

$ curl ipecho.net/plain ; echo

Çözümleyici olarak dig ile OpenDNS kullanan daha hızlı (muhtemelen en hızlı) yöntem:

  

Diğer cevapların tümü HTTP üzerinden uzak bir sunucuya geçiyor. Bazı   Çıktının ayrıştırılmasını gerektirirler veya Kullanıcı-Aracı başlığına güvenirler   sunucunun düz metinde yanıt vermesini sağlamak. Onlar da oldukça değişiyorlar   sık sık (aşağı inin, adını değiştirin, reklamları koyun, değişebilir   çıktı biçimi vb.)

     
  1. DNS yanıt protokolü standartlaştırılmıştır (biçim uyumlu kalır).
  2.   
  3. Geçmişte DNS hizmetleri (OpenDNS, Google Genel DNS, ..) daha uzun süre ayakta kalmaya ve daha kararlı, ölçeklenebilir ve genel olarak bakmaya eğilimlidir.   whatismyip.com HTTP servisi ne olursa olsun yeni bir kalça ne olursa olsun.   
  4. (mikro optimizasyona önem veren bu meraklılar için), bu yöntem doğal olarak daha hızlı olmalıdır (sadece birkaç saniye içinde olabilir).
  5.   

Çözümleyici olarak OpenDNS ile kazmayı kullanma:

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

111.222.333.444

Kopyalandı: İşte

Harici hizmetlere güvenmeksizin harici IP bulma

  • Ağ arayüz adınızı biliyorsanız

Terminalinize aşağıdakileri yazın:

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

Yukarıdaki örnekte, <interface_name> değerini gerçek arayüzünüzün adıyla değiştirin, örn .: eth0 , eth1 , pp0 , etc ...

Örnek Kullanım:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print }' | awk '{print }'
111.222.333.444
  • Ağ arayüz adınızı bilmiyorsanız

Terminalinize aşağıdakileri yazın (bu, sisteminizdeki her ağ arabiriminin adını ve ip adresini alır):

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if (  == "inet" ) { print  } else if (  == "Link" ) { printf "%s:" , } }' |awk -F: '{ print  ": "  }'

Örnek Kullanım:

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if (  == "inet" ) { print  } else if (  == "Link" ) { printf "%s:" , } }' |awk -F: '{ print  ": "  }'
lo: 127.0.0.1
ppp0: 111.222.333.444

N.B: Çıktılar belirleyicidir ve gerçek değildir.

İzni: İşte

GÜNCELLEME

  1. LANG=c , ifconfig temelli kullanımlara eklenmiştir; böylece, yerel ayardan bağımsız olarak her zaman ingilizce çıktı verir.
verilen cevap saji89 01.06.2012 14:10
103

Favoriim her zaman oldu:

curl ifconfig.me

basit, yazılması kolay.

Önce curl yüklemeniz gerekir;)

ifconfig.me aşağıdaysa icanhazip.com ve ipecho.net 'i deneyin

curl icanhazip.com

veya

curl ipecho.net
    
verilen cevap Panther 01.06.2012 14:41
55

icanhazip.com , favorim.

curl icanhazip.com

IPv4’ü açıkça talep edebilirsiniz:

curl ipv4.icanhazip.com

curl değeriniz yoksa bunun yerine wget kullanabilirsiniz:

wget -qO- icanhazip.com
    
verilen cevap yprez 01.06.2012 19:23
44

Her şeyi sinir bozucu ve yavaş buldum, kendim yazdım. Bu basit ve hızlı.

API'sı İşte ’de

Örnekler:

curl ident.me
curl v4.ident.me
curl v6.ident.me
    
verilen cevap Pierre Carrier 03.01.2013 16:49
37

Genel IP'nizi öğrenmek için HTTP isteği yerine bir DNS isteği kullanabilirsiniz:

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

% resolver1.opendns.com ana bilgisayar adını çözmek için myip.opendns.com dns sunucusunu sizin ip adresinize kullanır.

    
verilen cevap jfs 27.02.2014 16:07
18

Kullandığım:

wget -O - -q icanhazip.com

Evet, ip'nize sahip olabilirsiniz: -)

    
verilen cevap jflaflamme 16.01.2012 15:20
16

Amazon AWS

curl http://checkip.amazonaws.com

Örnek çıktı:

123.123.123.123

Bunu beğendim çünkü:

  • sadece düz metin IP'yi döndürür, başka bir şey yok
  • , yakın zamanda çevrimdışı olmayacak iyi bilinen bir sağlayıcıdan geliyor
12

Bunu tam olarak yazın, belirtilen yerlerde Enter tuşuna basın:

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

Bu, el ile IP adresinizi HTTP/1.1 200 OK reply

altına döndürecek bir HTTP isteğini manuel olarak gönderir.

Örnek çıktı:

$ 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
    
verilen cevap Liam 02.07.2013 08:38
9

Başka bir hızlı (en hızlı, nispeten iyi olabilir)

curl ipecho.net/plain
    
verilen cevap Mohnish 31.12.2013 21:49
8

Bunun için STUN icat edildi. Bir müşteri olarak, halka açık bir STUN sunucusuna istek gönderebilir ve gördüğü IP adresini geri verebilirsiniz. Düşük düzeyde whatismyip.com'un hiçbir HTTP ve akıllıca hazırlanmış DNS sunucusu kullanmadığı, ancak şaşırtıcı derecede hızlı STUN protokolü olduğu için.

stunclient değerini kullanma

stunclient yüklüyse (debian / ubuntu'da apt-get install stuntman-client ) aşağıdakileri yapabilirsiniz:

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

A.B.C.D , makinenizin yerel ağdaki IP adresi ve W.X.Y.Z ise, web siteleri gibi dışarıdan (ve aradığınız şey) görünen IP adresi sunucularıdır. % Co_de% değerini kullanarak yukarıdaki çıkışı yalnızca bir IP adresine indirgeyebilirsiniz:

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

Ancak, sorunuzu, bir STUN istemcisi kullanmanın dışında kalabilecek komut satırını kullanarak nasıl bulacağınız sorulmuştur. Yani merak ediyorum ...

sed değerini kullanma

STUN isteği elle işlenebilir, bash kullanılarak harici bir STUN sunucusuna gönderilebilir ve netcat , dd ve hexdump kullanılarak post-işlenebilir:

$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ı, bir ikili STUN isteğini (0x0001, Bağlama İsteği'ni belirtir) tanımlama bilgisi 0xc00cee ile 8 (0x0008) uzunluğuna ve wireshark'dan yapıştırılmış bazı öğelere sahiptir. Harici IP'yi temsil eden sadece dört bayt cevaptan alınır, temizlenir ve yazdırılır.

Çalışmak, ancak üretimde kullanılması önerilmez: -)

P.S.. Birçok STUN sunucusu, SIP ve WebRTC için temel bir teknoloji olduğundan kullanılabilir. Mozilla'dan birini kullanmak gizlilik açısından güvenli olmalı ancak başka birini de kullanabilirsiniz: STUN sunucu listesi

    
verilen cevap Victor Klos 09.10.2015 19:21
7

Telnetle bunun için aptalca bir hizmetim var. Bunun gibi bir şey:

telnet myip.gelma.net

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

Bunu kullanmaktan çekinmeyin.

    
verilen cevap Gelma 13.03.2014 13:37
4

Bir web sayfasını yalnızca curl , wget :

olmadan bash'ı kullanarak okuyabilirsiniz.

$ 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
    
verilen cevap jfs 18.09.2014 12:47
2

ipogre.com ile cURL kullan (IPv4 ve IPv6 desteklenir).

IPv4

curl ipv4.ipogre.com

IPv6

curl ipv6.ipogre.com

İşte

    
verilen cevap Jacob 31.12.2013 06:07
2

Yönlendiricilerimize giriş yapabilmemiz için, yönlendiriciye 'WAN IP adresi'nin ne olduğunu sormak için bir komut dosyası kullanarak harici IP adresini belirlemenin en etkili yoludur. Örneğin aşağıdaki python betiği, Medialink MWN-WAPR300N yönlendiricim için harici IP'yi yazdırır:

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)

Bunun çok güvenli olmadığını unutmayın (düz metin kimlik bilgileri ve çoğu yönlendiricide oturum açma gibi) ve kesinlikle taşınabilir değildir (her yönlendirici için değiştirilmesi gerekir). Ancak, fiziksel olarak güvenli bir ev ağında çok hızlı ve mükemmel bir çözümdür.

Komut dosyasını başka bir yönlendirici için özelleştirmek için, hangi HTTP isteklerinin yapılacağını belirlemek için firefox'taki tamperdata eklentisini kullanmanızı öneririz.

    
verilen cevap KarlC 27.03.2014 04:08
2

Bunlar yerel IP'leri alacak:

ifconfig

veya daha kısa çıktılar için:

ifconfig | grep inet

de

ip addr show

ve muhtemelen:

hostname -I

Bu harici IP'yi almalı

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

N.B. curl yüklemeyi düşünmüyorsanız, bu da:

curl http://smart-ip.net/myip
    
verilen cevap Wilf 27.06.2014 18:08
1

Lynx'i Ubuntu türüne yüklediyseniz

lynx bot.whatismyipaddress.com
    
verilen cevap Binny 09.01.2013 13:35
1

Birçok ev yönlendiricisi UPnP tarafından sorgulanabilir:

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

Ardından ip adresini cevaptan grep.

grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'
    
verilen cevap jms 18.09.2016 22:45
0

DD-WRT kullanıyorsanız, bu benim için çalışır:

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

veya

curl -s -u your_ddwrt_username:your_ddwrt_password http://192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print }'
  • 192.168.1.1'in DD-WRT yönlendiricisinin Ağ Geçidi / Yönlendirici LAN IP Adresi olduğu yerde.

  • -s bileşeni sessiz anlamına gelir (yani, curl ilerleme bilgisini göstermez).

  • Oh, yukaridakileri "DD-WRT v24-sp2 (01/04/15) std" ile kullandığımı belirtmeliyim.
  • .
verilen cevap CMP 14.04.2017 18:14
-2

Herhangi bir web sitesi veya hizmet için bir traceroute yayınlamanız yeterlidir.

sudo traceroute -I google.com

Satır 2 her zaman benim yönlendirici ağ geçidimi geçtikten sonra genel IP adresim gibi görünüyor.

[email protected] ~ $ 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**

Yani, bir bash komutu yap.

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

Ve çıktı ...

(199.21.149.1)

PHP betiklerine güvenmeyi düşünmüyorum ve iyi bir uygulama.

    
verilen cevap woahguy 24.07.2015 18:34
-2

8.8.8.8 dışında bir bağımlılığı olmayan bir komut, bir GOogle DNS:

echo $(ip route get 8.8.8.8 | awk '{print $NF; exit}')
    
verilen cevap Rolf 19.08.2015 09:57
-2

ip kullanın!

ip addr show

sonra ilgili bağdaştırıcıyı arayın ( lo ve genellikle eth0 değil) ve ip adresini inet yakınında bulun.

    
verilen cevap Eliran Malka 16.08.2016 01:06

Etiketlerdeki diğer soruları oku