Если ваше соединение NAT'Ed, можно ли увидеть ваш внешний IP-адрес, не делая исходящий веб-запрос?
любой ОС (Windows, Linux, и т. д.- в порядке.
Если ваше соединение NAT'Ed, можно ли увидеть ваш внешний IP-адрес, не делая исходящий веб-запрос?
любой ОС (Windows, Linux, и т. д.- в порядке.
Если ваш компьютер находится за NAT, вы можете увидеть внешний IP-адрес маршрутизатора, но вам нужен административный доступ к маршрутизатору.
маршрутизатор знает ваш внешний IP-адрес, поэтому получает доступ к его конфигурации страница вы можете найти этот IP-адрес. Этот путь не требует никакого специализированного инструмента за исключением браузера.
другие протоколы, которые требуют инструмента для получения информация:
как проверено пользователем @dirkt, все методы работают только с IPv4 (за исключением, возможно, PCP).
есть несколько способов, которые работают с некоторыми нац, но ничего, что гарантированно работает везде.
Я считаю, что uPnP, NAT-PMP и PCP (Universal Plug And Play, протокол сопоставления портов NAT и протокол управления портами) имеют способы задать совместимый шлюз NAT, что такое общий адрес, но не все Nat поддерживают эти протоколы. Поддержка более распространена в маршрутизаторах домашнего шлюза, чем в корпоративных или операторских решениях NAT.
когда вы окажетесь за NAT, единственный верный способ увидеть, какой публичный IP-адрес он переводит ваш трафик, - это отправить некоторый исходящий трафик на какой-то публичный хост, который сообщит, таким образом, NAT не будет переводить, с какого адреса ваш трафик появился. Использование веб-службы-это один из способов, но вы также можете сделать это, скажем, SSHing в экземпляр облачного сервера и увидеть, где sshd
говорит, что ваш сеанс SSH приходит из.
Я хотел бы добавить один пункт к уже существующим ответам.
это также зависит от сложности сети. Вполне возможно, что ваш компьютер находится в сети, которая имеет несколько внешних IP-адресов и маршрутизатор где - то вверх по линии отправляет трафик в Интернет на основе некоторых критериев: например, IP-адрес назначения, или время суток (может быть один канал связи дешевле ночью или по другим причинам).
так, для полноты понятия "внешний IP-адрес" может потребовать определения точки назначения, к которой ваш адрес является внешним.
в примере ниже Router #2
смогло выполнить NAT и послать движение к любым Uplink и получая хозяин смог увидеть различный внешний IP-адрес для Host
.
или может быть определенного назначения (например,host1.example.com
) всегда маршруты через Uplink A
, и хозяин host2.example.com
всегда маршруты через Uplink B
. Итак, ваши внешние IP-адреса эти хозяева будут разными, при условии, что Uplink A
и Uplink B
разные провайдеры.
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 |
-----------
таким образом, отправка трафика позволит получить более надежные результаты.
вы можете использовать запрос DNS, который, я считаю, не подпадает под категорию "веб-запрос":
nslookup myip.opendns.com resolver1.opendns.com
вы можете использовать DNS, а не HTTP. Например, вы можете использовать:
dig +short TXT o-o.myaddr.l.google.com
это покажет одноадресный адрес DNS-сервера, который вы используете, и если он поддерживает EDNS, он также покажет ваш IP-адрес, хотя, возможно, усечен.
чтобы получить полный IP-адрес, вы можете обойти локальный DNS-сервер и отправить вышеуказанный запрос непосредственно ns{1,2,3,4}.google.com
dig +short TXT o-o.myaddr.l.google.com @ns3.google.com
если вы хотите видеть ваш IP-адрес в определенной версии протокола, вы можете использовать -6
и -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
вы также можете использовать OpenDNS, если хотите. OpenDNS не использует для этого записи TXT, а скорее записи A и AAAA, поэтому вам нужно указать, какую версию протокола вы ищете:
dig -6 +short AAAA myip.opendns.com @resolver2.opendns.com
dig -4 +short A myip.opendns.com @resolver2.opendns.com
обратите внимание, что если ваш трафик идет через перевод протокола вы можете получить разные результаты или вообще. Тестирование с машины за NAT64 я смог увидеть свой IPv6-адрес с помощью вышеуказанных команд, но не IPv4-адрес NAT64.
этот ответ основан на этих источниках 1 2 3 и немного исследования.
Web обычно относится к HTTP, если это смысл вашего вопроса, то, например, вы можете использовать STUN (Статья В Википедии), что означает "утилиты обхода сессии для NAT".
теперь, когда это было выделено в комментарии, у вас может быть несколько внешних IP-адресов. Кроме того, поскольку беспроводные соединения становятся все более распространенными (вещь 4G), не исключено, что IP-адрес, о котором сообщает ваш маршрутизатор, не будет общедоступным. Я даже встречал тот сценарий дальше волоконно-оптические соединения в некоторых странах, где интернет-провайдер даст локальному маршрутизатору частный IP, который получит 1: 1, переведенный на публичный IP позже, когда покинет свою сеть.
поэтому, если ваш вопрос "Могу ли я найти свой публичный IP, не отправляя пакеты из моей сети", вы можете в своем контексте, но нет 100% - ного решения.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]