Doporučuji získat jej přímo ze serveru DNS.
Většina ostatních odpovědí níže zahrnuje přechod přes HTTP na vzdálený server. Některé z nich vyžadovaly analýzu výstupu nebo se spoléhaly na hlavičku User-Agent, aby server odpověděl v prostém textu. Ty se mění poměrně často (sestupte dolů, změňte jejich jméno, zobrazujte reklamy, mohou změnit výstupní formát atd.).
- Protokol odpovědi DNS je standardizován (formát zůstane kompatibilní).
- V minulosti mají služby DNS (Akamai, Google Public DNS, OpenDNS, ..) tendenci přežívat mnohem déle a jsou stabilnější, škálovatelnější a obecně více se o ně pečuje, než jakákoliv nová hip whatismyip dot-com HTTP služba dnes.
- Tato metoda je ze své podstaty rychlejší (byť jen o několik milisekund!).
Pomocí dig
s OpenDNS resolverem:
$ dig @resolver4.opendns.com myip.opendns.com +short
Možná alias ve vašem bashrc
takže je snadno zapamatovatelné
# https://unix.stackexchange.com/a/81699/37512
alias wanip='dig @resolver4.opendns.com myip.opendns.com +short'
alias wanip4='dig @resolver4.opendns.com myip.opendns.com +short -4'
alias wanip6='dig @resolver1.ipv6-sandbox.opendns.com AAAA myip.opendns.com +short -6'
Odpoví obyčejnou IP adresou:
$ wanip # wanip4, or wanip6
80.100.192.168 # or, 2606:4700:4700::1111
Syntaxe
(Zkráceno z https://ss64.com/bash/dig.html) :
usage: dig [@global-dnsserver] [q-type] <hostname> <d-opt> [q-opt]
q-type one of (A, ANY, AAAA, TXT, MX, ...). Default: A.
d-opt ...
+[no]short (Display nothing except short form of answer)
...
q-opt one of:
-4 (use IPv4 query transport only)
-6 (use IPv6 query transport only)
...
ANY
Typ dotazu vrátí záznam AAAA nebo A. Chcete-li preferovat připojení IPv4 nebo IPv6 konkrétně, použijte -4
nebo -6
odpovídající možnosti.
Chcete-li, aby odpověď byla adresa IPv4, nahraďte ANY za A
; pro IPv6 jej nahraďte AAAA
. Všimněte si, že může vrátit pouze adresu použitou pro připojení. Například při připojení přes IPv6 nemůže vrátit adresu A.
Alternativní servery
Tuto službu nabízejí různí poskytovatelé DNS, včetně OpenDNS, Akamai a Google Public DNS:
# OpenDNS (since 2009)
$ dig @resolver3.opendns.com myip.opendns.com +short
$ dig @resolver4.opendns.com myip.opendns.com +short
80.100.192.168
# OpenDNS IPv6
$ dig @resolver1.ipv6-sandbox.opendns.com AAAA myip.opendns.com +short -6
2606:4700:4700::1111
# Akamai (since 2009)
$ dig @ns1-1.akamaitech.net ANY whoami.akamai.net +short
80.100.192.168
# Akamai approximate
# NOTE: This returns only an approximate IP from your block,
# but has the benefit of working with private DNS proxies.
$ dig +short TXT whoami.ds.akahelp.net
"ip" "80.100.192.160"
# Google (since 2010)
# Supports IPv6 + IPv4, use -4 or -6 to force one.
$ dig @ns1.google.com TXT o-o.myaddr.l.google.com +short
"80.100.192.168"
Příklad aliasu, který konkrétně požaduje adresu IPv4:
# https://unix.stackexchange.com/a/81699/37512
alias wanip4='dig @resolver4.opendns.com myip.opendns.com +short -4'
$ wanip4
80.100.192.168
A pro vaši adresu IPv6:
# https://unix.stackexchange.com/a/81699/37512
alias wanip6='dig @ns1.google.com TXT o-o.myaddr.l.google.com +short -6'
$ wanip6
"2606:4700:4700::1111"
Odstraňování problémů
Pokud příkaz z nějakého důvodu nefunguje, může být problém se sítí. Nejprve vyzkoušejte jednu z výše uvedených alternativ.
Pokud máte podezření na jiný problém (s poskytovatelem upstream, nástrojem příkazového řádku nebo něčím jiným), spusťte příkaz bez +short
možnost odhalit podrobnosti dotazu DNS. Například:
$ dig @resolver4.opendns.com myip.opendns.com
;; Got answer: ->>HEADER<<- opcode: QUERY, status: NOERROR
;; QUESTION SECTION:
;myip.opendns.com. IN A
;; ANSWER SECTION:
myip.opendns.com. 0 IN A 80.100.192.168
;; Query time: 4 msec
POZNÁMKA:Toto je o externích IP adresa (ta, kterou vidí servery na internetu, když se k nim připojíte) – chcete-li interní IP adresa (ta, kterou váš počítač používá pro připojení, která se může lišit) viz tato odpověď .
TL;DR – Nejrychlejší metody v roce 2015
Nejrychlejší metoda využívající DNS:
dig +short myip.opendns.com @resolver4.opendns.com
nebo pomocí externalip:
externalip dns
Nejrychlejší pomocí HTTP:
curl -s http://whatismyip.akamai.com/
nebo pomocí externalip:
externalip http
Nejrychlejší pomocí HTTPS s platným certifikátem:
curl -s https://4.ifcfg.me/
nebo pomocí externalip:
externalip https
Pomocí telnetu:
S nc
příkaz:
nc 4.ifcfg.me 23 | grep IPv4 | cut -d' ' -f4
nebo pomocí externalip:
externalip telnet
S telnet
příkaz:
telnet 4.ifcfg.me 2>&1 | grep IPv4 | cut -d' ' -f4
Pomocí FTP:
echo close | ftp 4.ifcfg.me | awk '{print $4; exit}'
nebo pomocí externalip:
externalip ftp
Vše výše uvedené lze spustit pomocí mého externího skriptu jako:
externalip dns
externalip http
externalip https
externalip telnet
externalip ftp
Teď dlouhý příběh...
Existuje mnoho možností různých serverů poskytujících externí IP, zejména prostřednictvím HTTP, zveřejněných zde nebo jinde.
Udělal jsem benchmark, abych zjistil, zda je některý z nich lepší než ostatní, a výsledky mě překvapily. Např. jeden z nejrozšířenějších doporučovaných ifconfig.me byl pro mě téměř vždy nejpomalejší a odpověď někdy zabrala mnoho sekund. Mnohé nefungují přes HTTPS nebo fungují, ale mají neplatné certifikáty. Některé mají velmi nekonzistentní dobu odezvy.
Srovnávací hodnoty
HTTP a HTTPS
Toto je zdroj mého skriptu externalip-benchmark, který jsem použil:
- https://raw.githubusercontent.com/rsp/scripts/master/externalip-benchmark
Můžete jej spustit sami, abyste viděli, které služby zde uvedené stojí za to používat:
wget https://raw.githubusercontent.com/rsp/scripts/master/externalip-benchmark
chmod a+x externalip-benchmark
./externalip-benchmark
Moje výsledky, které jsem dostal 3. 4. 2015 z Varšavy – adresy byly změněny, aby chránily nevinné:
Nejlepší doby odezvy http:
0.086s http://ip.tyk.nu/ - answer='172.31.133.7'
0.089s http://whatismyip.akamai.com/ - answer='172.31.133.7'
0.091s http://tnx.nl/ip - answer='172.31.133.7'
0.117s http://ifcfg.me/ - answer='172.31.133.7'
0.156s http://l2.io/ip - answer='172.31.133.7'
0.317s http://ip.appspot.com/ - answer='172.31.133.7'
0.336s http://ident.me/ - answer='172.31.133.7'
0.338s http://ipof.in/txt - answer='172.31.133.7'
0.347s http://icanhazip.com/ - answer='172.31.133.7'
0.496s http://curlmyip.com/ - answer='172.31.133.7'
0.527s http://wgetip.com/ - answer='172.31.133.7'
0.548s http://curlmyip.com/ - answer='172.31.133.7'
0.665s http://bot.whatismyipaddress.com/ - answer='172.31.133.7'
0.665s http://eth0.me/ - answer='172.31.133.7'
1.041s http://ifconfig.me/ - answer='172.31.133.7'
1.049s http://corz.org/ip - answer='172.31.133.7'
1.598s http://ipecho.net/plain - answer='172.31.133.7'
Nejlepší časy odezvy https:
0.028s https://curlmyip.com/ - answer=''
0.028s https://curlmyip.com/ - answer=''
0.029s https://l2.io/ip - answer=''
0.029s https://tnx.nl/ip - answer=''
0.072s https://whatismyip.akamai.com/ - answer=''
0.113s https://ipecho.net/plain - answer=''
0.117s https://ident.me/ - answer=''
0.207s https://ip.tyk.nu/ - answer='172.31.133.7'
0.214s https://ipof.in/txt - answer='172.31.133.7'
0.259s https://ifcfg.me/ - answer='172.31.133.7'
0.289s https://corz.org/ip - answer=''
0.436s https://ip.appspot.com/ - answer='172.31.133.7'
0.448s https://bot.whatismyipaddress.com/ - answer=''
0.454s https://eth0.me/ - answer=''
0.673s https://icanhazip.com/ - answer='172.31.133.7'
5.255s https://ifconfig.me/ - answer=''
10.000s https://wgetip.com/ - answer=''
(Poznámka:Některé rychlé odpovědi s prázdným obsahem – ty jsou neplatné.)
Nejlepší průměrné doby pingu:
10.210 //whatismyip.akamai.com/
36.820 //tnx.nl/ip
37.169 //ip.tyk.nu/
39.412 //ipof.in/txt
40.967 //ident.me/
41.257 //ipecho.net/plain
43.918 //ifcfg.me/
45.720 //l2.io/ip
64.749 //ip.appspot.com/
123.412 //corz.org/ip
134.245 //wgetip.com/
157.997 //icanhazip.com/
161.613 //curlmyip.com/
162.100 //curlmyip.com/
268.734 //ifconfig.me/
999999 //bot.whatismyipaddress.com/
999999 //eth0.me/
Zde jsou výsledky, které jsem získal 2015-04-03 z Amsterdamu:
Nejlepší doby odezvy http:
0.021s http://ipecho.net/plain - answer='172.31.13.37'
0.027s http://tnx.nl/ip - answer='172.31.13.37'
0.035s http://whatismyip.akamai.com/ - answer='172.31.13.37'
0.039s http://ifcfg.me/ - answer='172.31.13.37'
0.045s http://l2.io/ip - answer='172.31.13.37'
0.142s http://ident.me/ - answer='172.31.13.37'
0.144s http://ipof.in/txt - answer='172.31.13.37'
0.150s http://ip.appspot.com/ - answer='172.31.13.37'
0.150s http://ip.tyk.nu/ - answer='172.31.13.37'
0.170s http://icanhazip.com/ - answer='172.31.13.37'
0.190s http://eth0.me/ - answer='172.31.13.37'
0.191s http://wgetip.com/ - answer='172.31.13.37'
0.301s http://curlmyip.com/ - answer='172.31.13.37'
0.330s http://bot.whatismyipaddress.com/ - answer='172.31.13.37'
0.343s http://curlmyip.com/ - answer='172.31.13.37'
0.485s http://corz.org/ip - answer='172.31.13.37'
3.549s http://ifconfig.me/ - answer='172.31.13.37'
Nejlepší časy odezvy https:
0.004s https://curlmyip.com/ - answer=''
0.012s https://curlmyip.com/ - answer=''
0.012s https://tnx.nl/ip - answer=''
0.016s https://ipecho.net/plain - answer=''
0.071s https://whatismyip.akamai.com/ - answer=''
0.096s https://ifcfg.me/ - answer='172.31.13.37'
0.097s https://ident.me/ - answer=''
0.187s https://corz.org/ip - answer=''
0.187s https://ip.appspot.com/ - answer='172.31.13.37'
0.189s https://ip.tyk.nu/ - answer='172.31.13.37'
0.195s https://eth0.me/ - answer=''
0.253s https://l2.io/ip - answer=''
0.300s https://ipof.in/txt - answer='172.31.13.37'
0.324s https://bot.whatismyipaddress.com/ - answer=''
0.512s https://icanhazip.com/ - answer='172.31.13.37'
1.272s https://ifconfig.me/ - answer=''
10.002s https://wgetip.com/ - answer=''
Nejlepší průměrné doby pingu:
1.020 //ipecho.net/plain
1.087 //whatismyip.akamai.com/
5.011 //ip.appspot.com/
6.942 //ident.me/
7.017 //ipof.in/txt
8.209 //tnx.nl/ip
11.343 //ip.tyk.nu/
12.647 //ifcfg.me/
13.828 //l2.io/ip
81.642 //icanhazip.com/
85.447 //wgetip.com/
91.473 //corz.org/ip
102.569 //curlmyip.com/
102.627 //curlmyip.com/
247.052 //ifconfig.me/
999999 //bot.whatismyipaddress.com/
999999 //eth0.me/
(999999 pingů znamená 100% ztrátu paketů.)
DNS
Pro srovnání uvádíme časy, které zabírají jiné metody – testováno 16. 6. 2015 ve Varšavě a Amsterdamu.
Použití:
time dig +short myip.opendns.com @resolver1.opendns.com
obvykle trvá (skutečný čas nástěnných hodin) přibližně:
- 0,035 s od Varšavy
- 0,015 s od Amsterdamu
Ve skutečnosti jsou čtyři resolvery, které lze použít tímto způsobem:
- resolver1.opendns.com
- resolver2.opendns.com
- resolver3.opendns.com
- resolver4.opendns.com
Všechny poskytují stejnou dobu odezvy ve Varšavě a Amsterdamu, ale v jiných lokalitách tomu tak být nemusí.
Použití 208.67.222.222 – IP adresy resolver1.opendns.com namísto názvu domény je rychlejší:
- 0,023 s z Varšavy
- 0,009 s z Amsterdamu
ale nemusí fungovat v budoucnu, pokud se IP někdy změní (ačkoli to může být nepravděpodobné pro dobře známý DNS resolver - možná bych měl použít IP ve svém externalip skriptu - prosím komentujte).
Telnet
Telnet s nc
nebo telnet
příkaz (viz výše) obvykle trvá:
- 0,103 s z Varšavy
- 0,035 s od Amsterdamu
(Mezi nc
není žádný znatelný rozdíl a telnet
příkazy.)
FTP
- 0,104 s z Varšavy
- 0,036 s od Amsterdamu
Názvy domén
Všechny metody budou rychlejší (zejména při prvním spuštění), kdy se místo doménových jmen daných služeb budou používat IP adresy (kromě HTTP, které může používat hostitelské virtuální servery a nepracuje s holou IP - netestováno), ale přestane fungovat, když služby změní IP adresu, takže to může být rychlejší, ale méně odolné do budoucna.
Komentáře
Pokud vidíte nějaké zajímavé výsledky z vaší lokality nebo si myslíte, že by měli být doporučeni někteří jiní hostitelé místo těch, které jsem vybral, napište komentář. Pokud nějaká důležitá služba chybí, napište komentář nebo zveřejněte problém na GitHubu. Rád bych tento příspěvek aktualizoval o aktuální výběr nejvýkonnějších služeb.
curl -s http://whatismijnip.nl |cut -d " " -f 5
Místo nahrazeno holandským fungujícím webem.