Si votre connexion est NAT, est-il possible de voir votre adresse IP externe sans faire de demande Web sortante?
Tout système d'exploitation (Windows, Linux, etc.) est très bien.
Si votre connexion est NAT, est-il possible de voir votre adresse IP externe sans faire de demande Web sortante?
Tout système d'exploitation (Windows, Linux, etc.) est très bien.
Réponses:
Si votre ordinateur est derrière NAT, il vous est possible de voir l'adresse IP externe de votre routeur, mais vous avez besoin d'un accès administratif au routeur.
Le routeur connaît votre adresse IP externe, donc en accédant à sa page de configuration, vous pouvez trouver cette adresse IP. De cette façon, aucun outil spécialisé n'est requis, à l'exception d'un navigateur Web.
Autres protocoles nécessitant un outil pour obtenir les informations:
Comme testé par l'utilisateur @dirkt, toutes les méthodes ne fonctionnent qu'avec IPv4 (sauf éventuellement pour PCP).
WANIPConn1/GetExternalIPAddress
, et il vient juste de renvoyer la bonne adresse.
Il existe plusieurs façons de fonctionner avec certains NAT, mais rien n'est garanti pour fonctionner partout.
Je pense que uPnP, NAT-PMP et PCP (Universal Plug And Play, NAT Port Mapping Protocol et Port Control Protocol) ont tous des moyens de demander à une passerelle NAT conforme quelle est l'adresse publique, mais tous les NAT ne prennent pas en charge ces protocoles. La prise en charge est plus courante dans les routeurs de passerelle domestique que dans les solutions NAT d'entreprise ou de classe opérateur.
Lorsque vous vous retrouvez derrière un NAT, le seul moyen sûr de voir dans quelle adresse IP publique il traduit votre trafic est d'envoyer du trafic sortant à un hôte public qui rendra compte, d'une manière que le NAT ne traduira pas, ce que l'adresse de votre trafic semble provenir. L'utilisation d'un service Web est un moyen, mais vous pouvez également le faire en, par exemple, SSHing dans une instance de serveur cloud et voir d'où vient sshd
votre session SSH.
Vous pouvez utiliser une requête DNS qui, je crois, ne rentrerait pas dans la catégorie des "requêtes web":
nslookup myip.opendns.com resolver1.opendns.com
dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns
. J'ai trouvé la commande ici: groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/…
nsslookup
commande échoue pour moi. Je reçois Server: resolver1.opendns.com
Address: 2620:119:35::35#53
** server can't find myip.opendns.com: NXDOMAIN
dig
car ce n'est pas sous Windows. Bon point myaddr
pour Google cependant, je n'en étais pas conscient! Je suppose que l' nslookup
équivalent de Windows seraitnslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
nslookup
version IP à utiliser pour le transport, mais la façon dont OpenDNS le fait signifie que vous devez le faire. Sans cela, vous devrez prédire quelle version IP nslookup
utilisera pour le transport et demander A ou AAAA en conséquence. Si vous êtes coincé avec nslookup
vous pouvez utiliser un autre fournisseur tel que Google. Cependant, vous obtenez toujours une seule version de protocole dans la réponse et vous ne pouvez pas choisir laquelle.
nslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
et ça marche en effet. Mais si j'ai à la fois IPv4 et IPv6, cela ne me permettra pas de choisir lequel d'entre eux je pourrai voir. Très probablement, il me montrera l'adresse IPv6, et très probablement je l'utilise parce que je veux connaître l'adresse IPv4 d'un NAT. Pour contourner cela, il faudrait utiliser un service qui a un nom uniquement IPv4 et un nom uniquement IPv6, qui résoudrait également le problème de NAT64.
Je voudrais ajouter un point aux réponses déjà existantes.
Cela dépend également de la complexité du réseau. Il est possible que votre ordinateur se trouve dans un réseau qui a plusieurs adresses IP externes et que le routeur quelque part sur la ligne envoie le trafic vers Internet en fonction de certains critères: par exemple, l'adresse IP de destination ou l'heure (peut être un canal de liaison montante est moins cher la nuit ou pour d'autres raisons).
Donc, pour être complète, une notion d '"adresse IP externe" peut nécessiter la définition d'un point de destination auquel votre adresse est externe.
Dans l'exemple ci Router #2
- dessous, le NAT pourrait être exécuté et envoyer du trafic vers l'une ou l'autre des liaisons montantes et l'hôte de réception pourrait voir une adresse IP externe différente pour le Host
.
Ou il se peut qu'une certaine destination (par exemple host1.example.com
) passe toujours par le Uplink A
, et que l'hôte passe host2.example.com
toujours par Uplink B
. Ainsi, vos adresses IP externes comme on le voit par ces hôtes seront différentes, à condition que Uplink A
et Uplink B
sont différents fournisseurs de services Internet.
Uplink A Uplink B
------------- -------------
| |
| |
| 192.168.1.1 192.168.50.50 |
| ----------- |
|---------------|Router #2|---------------|
-----------
| 192.168.100.1
|
| 192.168.100.2
-----------
|Router #1|
-----------
| 192.168.200.1
|
| 192.168.200.2
-----------
| Host |
-----------
Ainsi, l'envoi de trafic permettra d'obtenir des résultats plus fiables.
Vous pouvez utiliser DNS plutôt que HTTP. Par exemple, vous pouvez utiliser:
dig +short TXT o-o.myaddr.l.google.com
Cela affichera l'adresse unicast du serveur DNS que vous utilisez, et s'il prend en charge EDNS, il affichera également votre adresse IP, bien que éventuellement tronquée.
Pour obtenir votre adresse IP complète, vous pouvez contourner votre serveur DNS local et envoyer la demande ci-dessus directement à ns {1,2,3,4} .google.com
dig +short TXT o-o.myaddr.l.google.com @ns3.google.com
Si vous souhaitez voir votre adresse IP dans une version de protocole spécifique, vous pouvez utiliser -6
et -4
:
dig -6 +short TXT o-o.myaddr.l.google.com @ns3.google.com
dig -4 +short TXT o-o.myaddr.l.google.com @ns3.google.com
Vous pouvez également utiliser OpenDNS si vous le souhaitez. OpenDNS n'utilise pas d'enregistrements TXT pour cela, mais plutôt des enregistrements A et AAAA, vous devez donc spécifier la version de protocole que vous recherchez:
dig -6 +short AAAA myip.opendns.com @resolver2.opendns.com
dig -4 +short A myip.opendns.com @resolver2.opendns.com
Notez que si votre trafic passe par la traduction de protocole, vous pouvez obtenir des résultats différents, voire aucun. Test à partir d'une machine derrière NAT64 J'ai pu voir mon adresse IPv6 avec les commandes ci-dessus mais pas l'adresse IPv4 du NAT64.
Cette réponse est basée sur ces sources 1 2 3 et sur mes propres recherches.
Le Web fait généralement référence à HTTP, si c'est le sens de votre question, alors par exemple, vous pouvez utiliser STUN ( article Wikipedia ) qui signifie "Session Traversal Utilities for NAT".
Maintenant, comme cela a été mis en évidence dans un commentaire, vous pouvez avoir plusieurs adresses IP externes. De plus, comme les connexions sans fil sont de plus en plus courantes (chose 4G), il n'est pas impossible que l'adresse IP signalée par votre routeur ne soit pas publique. J'ai même rencontré ce scénario sur les connexions en fibre optique dans certains pays, où le FAI donnerait au routeur local une IP privée, qui serait traduit 1: 1 en IP publique plus tard en quittant leur réseau.
Donc, si votre question est "puis-je trouver mon IP publique sans envoyer de paquets hors de mon réseau", vous POURRIEZ dans votre contexte, mais il n'y a pas de solution à 100%.