Vraag Opdracht voor het bepalen van mijn publieke IP?


Als ik contact opneem met google, Ik kan mijn openbare IP zien. Staat er iets op de opdrachtregel van Ubuntu die me hetzelfde antwoord zal geven?


526
2018-01-16 11:50


oorsprong


"met dynamische IP", "SSH met gebruik van een ander systeem over het internet", "de opdracht die de huidige PUBLIC IP zal weergeven". Zie je het probleem kip / ei hier? Hoe zou u in staat zijn om opdrachten op een externe server uit te voeren zonder het adres te weten? U bent wellicht meer geïnteresseerd in services als no-ip.com / DynDNS.org. - gertvdijk
men kan SSH niet zonder het publieke IP te weten mijn vriend ... dynDNS kost veel en no-ip tough werkt maar de situatie staat dat niet toe ... hoe dan ook, de vraag is al beantwoord .. bedankt voor uw suggestie - Z9iT
PS duckduckgo.com/?q=ip (geen opdrachtregel, maar ook geen grote broer G) - Campa
Misschien zou dit een afzonderlijke vraag moeten zijn, maar ik zou graag een waarschuwing zien wanneer mijn openbare IP-adres verandert. Voor nu gebruik ik de volgende antwoorden in een crontab met notify-send. - PJ Brunet


antwoorden:


Als je niet achter een router zit, kun je het achterhalen met behulp van ifconfig.

Als u zich achter een router bevindt, weet uw computer niet van het openbare IP-adres, aangezien de router een vertaling van het netwerkadres uitvoert. U kunt een website vragen wat uw openbare IP-adres gebruikt curl of wget en extraheer de informatie die je nodig hebt:

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

of korter

curl ipinfo.io/ip

748
2018-01-16 11:56



ty - meteen nadat ik gepost had, realiseerde ik me dat ik niet eerst naar een antwoord googelde: het ziet ernaar uit dat dit zal werken curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  Andere mogelijkheden worden hier vermeld: go2linux.org/what-is-my-public-ip-address-with-linux - kfmfe04
zeker - u kunt het aan uw antwoord toevoegen - kfmfe04
Om te verduidelijken: dat was een hack, en een erg lelijke, dus ik heb een bewerking gedaan om het eenvoudiger te maken en iets dat mensen zich kunnen herinneren. - jrg♦
Net zoals Giovanni P zei. Het OP zou de geaccepteerde anwser moeten veranderen. - loostro
krullen -s ipinfo.io/ip - chao


Voor het vinden van het externe IP-adres kunt u externe webgebaseerde services gebruiken of systeemgebaseerde methoden gebruiken. Hoe eenvoudiger het is om de externe service te gebruiken, ook de ifconfig gebaseerde oplossingen werken alleen in uw systeem als u niet achter een NAT. de twee methoden zijn hieronder in detail besproken.

Externe IP vinden met behulp van externe services

De eenvoudigste manier is om een ​​externe service te gebruiken via een commandoregel of een downloadtool. Sinds wget is standaard beschikbaar in Ubuntu, we kunnen dat gebruiken.
Om je ip te vinden, gebruik-

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

hoffelijkheid:

Je zou ook kunnen gebruiken lynx(browser) of curl in plaats van wget met kleine variaties op het bovenstaande commando, om je externe ip te vinden.

Gebruik makend van curl om de ip te vinden:

$ curl ipecho.net/plain

Gebruik voor een beter geformatteerde uitvoer:

$ curl ipecho.net/plain ; echo

Een snellere (misschien wel de snelste) methode die gebruikt dig met OpenDNS als resolver:

De andere antwoorden hier gaan allemaal via HTTP naar een externe server. Enkele van   ze vereisen ontleding van de uitvoer of vertrouwen op de User-Agent-header   om de server te laten reageren in platte tekst. Ze veranderen ook behoorlijk   vaak (naar beneden gaan, hun naam wijzigen, advertenties plaatsen, kan veranderen   uitvoerformaat etc.).

  1. Het DNS-reactieprotocol is gestandaardiseerd (het formaat blijft compatibel).
  2. Historisch gezien hebben DNS-services (OpenDNS, Google Public DNS, ...) de neiging om veel langer te overleven en zijn ze stabieler, schaalbaar en over het algemeen   na dan welke nieuwe hippe whatismyip.com HTTP-service het vandaag heet is.
  3. (voor die nerds die zich bekommeren om micro-optimalisatie), zou deze methode inherent sneller moeten zijn (of het nu slechts enkele microseconden zijn).

Graven gebruiken met OpenDNS als resolver:

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

111.222.333.444

Gekopieerd van:  https://unix.stackexchange.com/a/81699/14497

Externe IP zoeken zonder afhankelijk te zijn van externe services

  • Als u de naam van uw netwerkinterface kent

Typ het volgende in uw terminal:

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

Vervang in het bovenstaande <interface_name> met de naam van uw huidige interface, bijvoorbeeld: eth0, eth1, pp0, enz...

Voorbeeld gebruik:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
  • Als u de naam van uw netwerkinterface niet weet

Typ het volgende in uw terminal (dit krijgt de naam en het ip-adres van elke netwerkinterface in uw systeem):

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

Voorbeeld gebruik:

$ 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.1
ppp0: 111.222.333.444

NB: Uitgangen zijn indicatief en niet echt.

Courtesy:  http://www.if-not-true-then-false.com/2010/linux-get-ip-address/

BIJWERKEN 

  1. LANG=c is toegevoegd aan ifconfig gebaseerd gebruik, zodat het altijd de Engelse uitvoer geeft, ongeacht de instelling van de lokale instelling.

364
2018-06-01 12:10



@ Z9iT, Sure .. Het zou in elke linux-distributie moeten werken, mits je wget geïnstalleerd hebt. Zoals gezegd, als je al curl of lynx hebt, gebruik dat dan in plaats daarvan. Je zou root-toestemming nodig hebben om het zo te gebruiken sudo apt-get install wget - saji89
De commando's met ifconfig werken alleen als je niet achter een NAT zit. - lukassteiner
gebruik gewoon -w krullen in plaats van echo :) curl -w '\n' ident.me - drAlberT
Dit voorstel met behulp van graven is best aardig unix.stackexchange.com/questions/22615/... - binaryanomaly
@saji ifconfig indien verouderd, gebruik alstublieft iproute2 ; ^). Het bevel zou zijn ip -o -4 a s eth0 | awk '{sub(/\/.*/, "", $4);print $4}'. - bufh


Mijn favoriet is altijd geweest:

curl ifconfig.me

eenvoudig, gemakkelijk te typen.

U moet eerst krullen installeren;)

Als ifconfig.me down is, probeer dan icanhazip.com en of ipecho.net

curl icanhazip.com

of

curl ipecho.net

103
2018-06-01 12:41



@ Z9iT, ik heb dit nu net gecontroleerd. Ja, het zou de externe IP in uw terminal uitvoeren. - saji89
De responstijd van ifconfig.me lijkt vrij een beetje langzamer dan ipecho.net. - Drew Noakes
Als je het niet hebt curl maar heb wget: wget -U curl -qO- ifconfig.me - Stéphane Chazelas
ifconfig.me lijkt niet te reageren :( - Asfand Qazi
@AsfandYarQazi - hier werken. Je kunt een van de alternatieven proberen, icanhazip.com - Panther


icanhazip.com is mijn favoriet.

curl icanhazip.com

U kunt IPv4 expliciet aanvragen:

curl ipv4.icanhazip.com

Als je het niet hebt curl je kunt gebruiken wget in plaats daarvan:

wget -qO- icanhazip.com

55
2018-06-01 17:23



proberen ipv4.icanhazip.com - yprez
IPv4: curl ipv4.icanhazip.com     IPv6: curl ipv6.icanhazip.com - Peter
Busybox heeft geen krul, gebruik dit in plaats daarvan: wget -qO- http://icanhazip.com - Hengjie
hier is een bash-only commando: exec 3<>/dev/tcp/icanhazip.com/80 && echo -e 'GET / HTTP/1.0\n' >&3 && cat <&3 - jfs
ipv6.icanhazip.com lijkt niet meer te werken. - Hibou57


Ik heb alles als vervelend en traag ervaren, dus ik heb er zelf een geschreven. Het is eenvoudig en snel.

De API is ingeschakeld http://api.ident.me/

Voorbeelden:

curl ident.me
curl v4.ident.me
curl v6.ident.me

44
2018-01-03 15:49



Woah, dat was het werkelijk snel! - waldyrious
ik vind de icanhazip.com-oplossing sneller en het bevat een nieuwe regel in de uitvoer. - Tyler Collier
Ja, het was inderdaad sneller de laatste tijd. Ik heb alleen mijn oplossing aangepast. - Pierre Carrier
Kudos! 2 jaar en je handhaaft het nog steeds. Goed gedaan. "IDENTify ME", is wat me te binnen schiet als ik ip check nodig heb :) - Mohnish
@PierreCarrier v6.ident.me werkt niet - SebMa


U zou een DNS-verzoek in plaats van een HTTP-aanvraag kunnen gebruiken om uw openbare IP-adres te achterhalen:

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

Het gebruikt resolver1.opendns.com dns-server om het magische op te lossen myip.opendns.com hostnaam voor jouw IP adres.


37
2018-02-27 15:07



Dit is werkelijk snel. Ik heb een warming-up uitgevoerd en vervolgens 10 executies, elk hiervan en curl icanhazip.com. Gemiddelde voor de curl versie: 174ms. Gemiddelde voor de DNS-versie: 9ms. ~ 19x sneller. Zie ook: unix.stackexchange.com/a/81699/8383 - Adam Monsen
@AdamMonsen Bedankt voor de link. Het punt van het gebruik van DNS (zoals het antwoord dat u hebt gekoppeld, zegt) is dat het antwoord standaard is (en waarschijnlijk niet zal veranderen) en dat de service (OpenDNS) mogelijk langer blijft bestaan ​​dan de meeste van zijn http-alternatieven. De tijd die nodig is om het verzoek te maken, kan worden overschaduwd door de opstarttijd van het commando. - jfs
Yep. Ik zou niet verbaasd zijn als curl zelf is langzamer dan dig. Zelfs als ze zo herschreven worden dat ze zo vergelijkbaar mogelijk zijn, curl zou nog langzamer zijn; het gebruikt HTTP (inclusief DNS) en dig gebruikt alleen DNS. - Adam Monsen


Degene die ik gebruik is:

wget -O - -q icanhazip.com

Ja, je kunt ip hebben :-)


18
2018-01-16 14:20



ik geef de voorkeur aan curl icanhazip.com soms wget is de enige die beschikbaar is, maar soms ook niet wget is ook beschikbaar en curl is uw enige optie (zoals OS / X). Hoe dan ook curl icanhazip.com is bijna net zo eenvoudig als curl ifconfig.me maar veel grappiger ;-) - TryTryAgain


Amazon AWS

curl http://checkip.amazonaws.com

Voorbeelduitvoer:

123.123.123.123

Ik vind het leuk omdat:

  • het retourneert alleen de plaintext IP, niets anders
  • het is van een bekende aanbieder die waarschijnlijk niet snel offline zal gaan

16
2017-12-21 22:06





Typ dit exact in, druk op invoeren waar aangegeven:

telnet ipecho.net 80invoeren
GET /plain HTTP/1.1invoeren
HOST: ipecho.net  invoeren
BROWSER: web-kitinvoeren
invoeren

Dit verzendt handmatig een HTTP-aanvraag, die uw IP-adres onder aan a zal retourneren HTTP/1.1 200 OK reply

Voorbeelduitvoer:

$ 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

12
2017-07-02 06:38



Mooi, dit werkte goed, geen krul hoeven installeren was een voordeel voor mij: één voering: printf "GET / plain HTTP / 1.1 \ nHOST: ipecho.net \ nBROWSER: web-kit \ n \ n" | nc ipecho.net 80 - Ozone


Nog een snelle (misschien wel de snelste, relatief)

curl ipecho.net/plain

9
2017-12-31 20:49





Voor deze, STUN is uitgevonden. Als klant kunt u een verzoek verzenden naar een STUN-server die voor het publiek beschikbaar is en deze het IP-adres geven dat wordt weergegeven. Soort van het lage niveau whatismyip.com omdat het geen HTTP en geen slim ontworpen DNS-servers gebruikt, maar het razendsnelle STUN-protocol.

Gebruik makend van stunclient

Als je hebt stunclient geïnstalleerd (apt-get install stuntman-client op debian / ubuntu) kun je gewoon doen:

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

waar A.B.C.D is het IP-adres van uw machine op het lokale net en W.X.Y.Z zijn de IP-adresservers zoals websites van buitenaf (en degene die u zoekt). Gebruik makend van sed u kunt de bovenstaande uitvoer beperken tot alleen een IP-adres:

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

Uw vraag was echter hoe u deze kunt vinden met behulp van de opdrachtregel, waardoor een STUN-client mogelijk niet wordt gebruikt. Dus ik vraag me af ...

Gebruik makend van bash

Een STUN-verzoek kan met de hand worden gemaakt en naar een externe STUN-server worden verzonden netcat en worden nabewerkt met behulp van dd, hexdump en sed zoals zo:

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

De echo definieert een binair STUN-verzoek (0x0001 geeft bindend verzoek aan) met lengte 8 (0x0008) met cookie 0xc00cee en een aantal geplakte spullen van wireshark. Alleen de vier bytes die het externe IP-adres vertegenwoordigen, worden uit het antwoord gehaald, schoongemaakt en afgedrukt.

Werken, maar niet aanbevolen voor productie gebruik :-)

Postscriptum Veel STUN-servers zijn beschikbaar omdat het een kerntechnologie is voor SIP en WebRTC. Het gebruik van een van Mozilla moet privacyvriendelijk zijn, maar je kunt ook een ander gebruiken: STUN-serverlijst


8
2017-10-09 17:21



+1 voor de geekiest en eigenlijk meest apropos-technologie. De http-query werkt, en dat is wat ik mijn hele leven heb gebruikt, maar ik vind het leuk dat er eigenlijk een beetje over nagedacht is. Ik wist dit niet. Bedankt! - Mike S