Příkaz pro určení mé veřejné IP?

528

Pokud se podívám na google , vidím veřejnou IP adresu. Existuje něco na příkazovém řádku Ubuntu, které mi poskytne stejnou odpověď?

    
dané kfmfe04 16.01.2012 12:50

22 odpovědi

756

Pokud nejste za směrovačem, zjistíte jej pomocíifconfig.

Pokud jste za směrovačem, váš počítač nebude vědět o veřejné IP adrese, protože směrovač provádí překlad síťových adres. Mohli byste se zeptat na některé webové stránky, co používá vaši veřejná IP adresacurl nebowget a extrahujte informace, které od ní potřebujete:

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

nebo kratší

curl ipinfo.io/ip
    
odpověděl Michael K 16.01.2012 12:56
366

Při hledání externího protokolu IP můžete použít externí webové služby nebo použít systémové metody. Snadnější je použít externí službu, řešeníifconfig bude pracovat ve vašem systému pouze pokud nejste zaNAT. tyto dvě metody byly podrobně popsány níže.

Hledání externí IP pomocí externích služeb

Nejjednodušší je použít externí službu přes prohlížeč příkazového řádku nebo nástroj pro stahování. Protožewget je ve výchozím nastavení dostupný v Ubuntu, můžeme to použít Chcete-li najít svůj ip, použijte

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

Zdvořilost :

Můžete použít takélynx (prohlížeč) nebocurl namístowget s menšími změnami výše uvedeného příkazu, abyste našli externí ip.

Použijtecurl k nalezení adresy ip:

$ curl ipecho.net/plain

Pro lepší formátování výstupu:

$ curl ipecho.net/plain ; echo

Rychlejší (pravděpodobně nejrychlejší) metoda používajícídig sOpenDNS jako resolver:

  

Ostatní odpovědi zde přecházejí přes HTTP na vzdálený server. Některý z   vyžadují analýzu výstupu nebo spoléhají na záhlaví User-Agent   aby server reagoval v prostém textu. Také se mění   často (jít dolů, změnit své jméno, rozbalit reklamy, může se změnit   výstupní formát atd.).

     
  1. Protokol DNS odpovědi je standardizován (formát zůstane kompatibilní).
  2.   
  3. Historicky služby DNS (OpenDNS, Google Public DNS, ..) mají tendenci přežívat mnohem déle, jsou stabilnější, škálovatelné a obecně vypadají   po kterékoliv nové hip whatismyip.com HTTP služba je horká dnes.
  4.   
  5. (u těch geeků, kteří pečují o mikrooptimalizace), by tato metoda měla být neodmyslitelně rychlejší (ať už jen o několik sekund).
  6.   

Použití kopírování s OpenDNS jako resolver:

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

111.222.333.444

Zkopírováno z: Odkaz

Hledání externí IP bez spoléhání se na externí služby

  • Pokud znáte název síťového rozhraní

Do terminálu zadejte následující:

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

Ve výše uvedeném textu nahraďte<interface_name> názvem vašeho skutečného rozhraní, např .:eth0,eth1,pp0, atd ...

Příklad použití:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print }' | awk '{print }'
111.222.333.444
  • Pokud neznáte název vašeho síťového rozhraní

Do terminálu zadejte následující (získává se název a adresa IP každého síťového rozhraní ve vašem systému):

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

Příklad použití:

$ 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: Výstupy jsou orientační a nejsou skutečné.

Zdvořilost: Odkaz

UPDATE

  1. LANG=c bylo přidáno doifconfig založené na použití, takže vždy dává anglický výstup, bez ohledu na nastavení národního prostředí.
odpověděl saji89 01.06.2012 14:10
104

Moje oblíbené byly vždy:

curl ifconfig.me

jednoduché, snadné psát.

Nejprve musíte nainstalovat zvlnění;)

Pokud je ifconfig.me dolů, zkuste icanhazip.com a / nebo ipecho.net

curl icanhazip.com

nebo

curl ipecho.net
    
odpověděl Panther 01.06.2012 14:41
55

icanhazip.com je můj oblíbený.

curl icanhazip.com

Můžete výslovně požadovat protokol IPv4:

curl ipv4.icanhazip.com

Pokud nemátecurl, můžete místo toho použítwget:

wget -qO- icanhazip.com
    
odpověděl yprez 01.06.2012 19:23
44

Našel jsem vše, co bylo nepříjemné a pomalé, takže jsem napsal vlastní. Je to jednoduché a rychlé.

Jeho rozhraní API je v Odkazu

Příklady:

curl ident.me
curl v4.ident.me
curl v6.ident.me
    
odpověděl Pierre Carrier 03.01.2013 16:49
37

Chcete-li vyhledat veřejnou adresu IP, můžete použít žádost DNS namísto požadavku HTTP:

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

Použijeresolver1.opendns.com dns server k vyřešení magickéhomyip.opendns.com hostname na adresu vaší ip.

    
odpověděl jfs 27.02.2014 16:07
18

Jeden, který používám, je:

wget -O - -q icanhazip.com

Ano, můžete mít ip: -)

    
odpověděl jflaflamme 16.01.2012 15:20
17

Amazon AWS

curl http://checkip.amazonaws.com

Vzorový výstup:

123.123.123.123

Líbí se mi, protože:

  • vrací pouze prostý text, nic jiného
  • to je od známého poskytovatele, který je nepravděpodobné, že bude v blízké době čekat offline
odpověděl Ciro Santilli 新疆改造中心 六四事件 法轮功 21.12.2015 23:06
12

Zadejte toto přesně stiskem Enter , kde je uvedeno:

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

Ručně předkládá žádost HTTP, která vrátí vaši adresu IP do spodní částiHTTP/1.1 200 OK reply

Příklad výstup:

$ 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
    
odpověděl Liam 02.07.2013 08:38
9

Jiný rychlý (pravděpodobně nejrychlejší, relativně)

curl ipecho.net/plain
    
odpověděl Mohnish 31.12.2013 21:49
8

Pro tento účel byl vynalezen STUN . Jako klient můžete odeslat požadavek na veřejně dostupný server STUN a nechat jej vrátit IP adresu, kterou vidí. Třída nízké úrovně whatismyip.com, protože nepoužívá žádný HTTP a žádné inteligentně vytvořené servery DNS, ale poměrně rychlý protokol STUN.

Použitístunclient

Pokud máte nainstalovánstunclient (apt-get install stuntman-client na debian / ubuntu), můžete jednoduše udělat:

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

kdeA.B.C.D je IP adresa vašeho počítače v lokální síti aW.X.Y.Z jsou servery IP adres, jako jsou webové stránky viditelné zvnějšku (a ta, kterou hledáte). Pomocísed můžete snížit výstup výše pouze na adresu IP:

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

Vaše otázka však byla, jak ji najít pomocí příkazového řádku, který by mohl vyloučit používání klienta STUN. Takže se divím ...

Použitíbash

Požadavek STUN může být ručně zpracován, odeslán na externí server STUN pomocínetcat a následně zpracován pomocídd,hexdump ased tak jako:

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

Echo definuje binární žádost STUN (0x0001 označuje požadavek na vazbu), která má délku 8 (0x0008) s cookie 0xc00cee a některé vložené věci z wireshark. Pouze čtyři bajty reprezentující externí IP jsou převzaty z odpovědi, vyčištěny a vytištěny.

Práce, ale nedoporučuje se pro výrobu: -)

P.S. Mnoho serverů STUN je k dispozici, protože je jádrová technologie pro SIP a WebRTC. Použití jednoho z Mozilly by mělo být bezpečné pro soukromí, ale můžete použít i jiný: Seznam serverů STUN

    
odpověděl Victor Klos 09.10.2015 19:21
7

Mám pro to hloupé služby telnet. Něco takového:

telnet myip.gelma.net

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

Nebojte se ho používat.

    
odpověděl Gelma 13.03.2014 13:37
4

Webovou stránku můžete číst pouze pomocí bash, bezcurl,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
    
odpověděl jfs 18.09.2014 12:47
2

Použijte cURL s ipogre.com (jsou podporovány protokoly IPv4 a IPv6).

IPv4

curl ipv4.ipogre.com

IPv6

curl ipv6.ipogre.com

Odkaz

    
odpověděl Jacob 31.12.2013 06:07
2

Pro ty z nás, kteří mají přihlašovací přístup k našim směrovačům, pomocí skriptu, který si od routeru vyžádá, co je jeho adresa WAN IP, je nejúčinnější způsob, jak určit vnější adresu IP. Například následující skript pythonu vytiskne externí IP adresy pro můj router Medialink MWN-WAPR300N:

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)

Všimněte si, že toto není příliš bezpečné (jak je tomu v případě pověření plaintext a přihlašování do většiny směrovačů) a určitě není přenosné (musí být změněno pro každý směrovač). Je to však velmi rychlé a dokonale rozumné řešení na fyzicky zabezpečené domácí síti.

Chcete-li přizpůsobit skript pro jiný směrovač, doporučuji použít add-on tamperdata ve firefoxu, abyste zjistili, co HTTP požaduje.

    
odpověděl KarlC 27.03.2014 04:08
2

Získáte místní IP adresy:

ifconfig

nebo pro kratší výstup:

ifconfig | grep inet

také

ip addr show

a pravděpodobně:

hostname -I

Toto by mělo získat externí IP

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

N.B. Pokud se vám nelíbí instalacecurl, tak také:

curl http://smart-ip.net/myip
    
odpověděl Wilf 27.06.2014 18:08
1

Pokud jste nainstalovali lynx do typu Ubuntu

lynx bot.whatismyipaddress.com
    
odpověděl Binny 09.01.2013 13:35
1

UPnP může dotazovat mnoho směrovačů domů:

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

Zkopírujte adresu IP z odpovědi.

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

Pokud používáte DD-WRT , funguje to pro mě:

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

nebo

curl -s -u your_ddwrt_username:your_ddwrt_password http://192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print }'
  • Kde je 192.168.1.1 LAN IP adresa brány / směrovače směrovače DD-WRT.

  • Komponenta -s znamená tichý (tj. nezobrazuje informace o průběhu kroužení)

  • Oh, měl bych se zmínit o tom, že používám "DD-WRT v24-sp2 (01/04/15) std" .
odpověděl CMP 14.04.2017 18:14
-1

použijteip!

ip addr show

pak vyhledejte příslušný adaptér (nelo a obvykleeth0) a vyhledejte adresu IP v blízkostiinet.

    
odpověděl Eliran Malka 16.08.2016 01:06
-2

Jednoduše vygenerujte traceroute pro libovolnou webovou stránku nebo službu.

sudo traceroute -I google.com

Řádek 2 se mi vždy zdá být mou veřejnou adresou IP poté, co překročí bránu směrovače.

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**

Takže proveďte příkaz bash.

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

A výstup ...

(199.21.149.1)

Nemyslím si, že spoléhám na PHP skripty a třída je dobrá praxe.

    
odpověděl woahguy 24.07.2015 18:34
-2

Příkaz bez závislostí, s výjimkou 8.8.8.8, který je GOogle DNS:

echo $(ip route get 8.8.8.8 | awk '{print $NF; exit}')
    
odpověděl Rolf 19.08.2015 09:57