Als ik het controleer met google, kan ik mijn publieke IP zien. Is er iets op de Ubuntu opdrachtregel dat mij hetzelfde antwoord zal opleveren?
Als u niet achter een router zit, kunt u dit te weten komen met ifconfig
.
Als je achter een router zit, dan weet je computer niets van het publieke IP adres omdat de router een netwerk adres vertaling doet. Je zou een website kunnen vragen wat je publieke IP adres is met curl
of wget
en daar de informatie uithalen die je nodig hebt:
curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
of korter
curl https://ipinfo.io/ip
Voor het vinden van het externe ip, kunt u of externe web-gebaseerde diensten gebruiken, of systeem-gebaseerde methodes gebruiken. Het is makkelijker om de externe service te gebruiken, ook de ifconfig
gebaseerde oplossingen zullen alleen werken in uw systeem als u niet achter een NAT
zit. De twee methodes zijn hieronder in detail besproken.
De makkelijkste manier is om een externe service te gebruiken via een commandline browser of downloadtool. Aangezien wget
standaard beschikbaar is in Ubuntu, kunnen we dat gebruiken.
Om je ip te vinden, gebruik-
$ wget -qO- https://ipecho.net/plain ; echo
Courtesy:
Je zou ook lynx
(browser) of curl
kunnen gebruiken in plaats van wget
met kleine variaties op het bovenstaande commando, om je externe ip te vinden.
Gebruik curl
om het ip te vinden:
$ curl https://ipecho.net/plain
Voor een beter geformatteerde output gebruik:
$ curl https://ipecho.net/plain ; echo
dig
met OpenDNS
als resolver:De andere antwoorden hier gaan allemaal over HTTP naar een remote server. Sommige van vereisen parsing van de output, of vertrouwen op de User-Agent header om de server te laten antwoorden in platte tekst. Ze veranderen ook nogal vaak (gaan naar beneden, veranderen hun naam, zetten advertenties, kunnen veranderen output formaat enz.).
- Het DNS-antwoordprotocol is gestandaardiseerd (het formaat blijft compatibel).
- Historisch DNS-diensten (OpenDNS, Google Public DNS, ..) hebben de neiging om veel langer overleven en zijn stabieler, schaalbaarder en over het algemeen keek dan welke nieuwe hippe whatismyip.com HTTP service is hot vandaag.
- (voor de geeks die geven om micro-optimalisatie), deze methode moet inherent sneller zijn (zij het slechts met een paar micro seconden).
Het gebruik van dig met OpenDNS als resolver:
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
Opgehaald van: https://unix.stackexchange.com/a/81699/14497
Type het volgende in je terminal:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
Vervang in het bovenstaande <interface_name>
door de naam van uw eigenlijke interface, b.v. eth0
, eth1
, pp0
, enz...
Exemplarisch gebruik:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
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 }'
Voorbeeldgebruik:
$ 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
N.B: De outputs zijn indicatief en niet reëel.
Courtesy: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
UPDATE
LANG=c
is toegevoegd aan ifconfig
gebaseerd gebruik, zodat het altijd de engelse uitvoer geeft, ongeacht de locale instelling.