Если ваше соединение использует NAT, возможно ли увидеть ваш внешний IP-адрес без отправки исходящего веб-запроса?
Любая ОС (Windows, Linux и т. Д.) В порядке.
networking
nat
ip-address
Аксель Персингер
источник
источник
Ответы:
Если ваш компьютер находится за NAT, вы можете увидеть внешний IP-адрес вашего маршрутизатора, но вам необходим административный доступ к маршрутизатору.
Маршрутизатор знает ваш внешний IP-адрес, поэтому, зайдя на его страницу конфигурации, вы можете найти этот IP-адрес. Этот способ не требует какого-либо специального инструмента, кроме веб-браузера.
Другие протоколы, для которых требуется инструмент для получения информации:
Как проверено пользователем @dirkt, все методы работают только с IPv4 (за исключением, возможно, PCP).
источник
WANIPConn1/GetExternalIPAddress
, и она только что успешно вернула правильный адрес.Есть несколько способов работы с некоторыми NAT, но нет ничего, что гарантированно работало бы везде.
Я полагаю, что у uPnP, NAT-PMP и PCP (Universal Plug and Play, протокол сопоставления портов NAT и протокол управления портами) есть способы задать совместимому шлюзу NAT, что такое публичный адрес, но не все NAT поддерживают эти протоколы. Поддержка чаще встречается в домашних шлюзовых маршрутизаторах, чем в корпоративных решениях или решениях NAT операторского уровня.
Когда вы оказываетесь за NAT, единственный верный способ узнать, на какой публичный IP-адрес он транслирует ваш трафик, - это отправить некоторый исходящий трафик на какой-то общедоступный хост, который будет отчитываться, таким образом, что NAT не будет транслировать, что адрес вашего трафика, казалось, пришел. Использование веб-службы является одним из способов, но вы также можете сделать это, скажем, посредством SSHing в экземпляр облачного сервера и узнать, откуда
sshd
поступает ваш SSH-сеанс.источник
Вы можете использовать DNS-запрос, который, я считаю, не подпадает под категорию «веб-запрос»:
источник
dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns
. Я нашел команду здесь: groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/…nsslookup
команда терпит неудачу для меня. Я получаюServer: resolver1.opendns.com
Address: 2620:119:35::35#53
** server can't find myip.opendns.com: NXDOMAIN
dig
так как это не на Windows. Хороший вопрос относительноmyaddr
Google, хотя, я не знал об этом! Я думаю, чтоnslookup
эквивалент Windows будетnslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
nslookup
какую версию IP использовать для транспорта, но то, как это делает OpenDNS, означает, что вы должны это сделать. Без этого вам придется предсказать, какая версия IPnslookup
будет использоваться для транспорта, и соответственно запросить A или AAAA. Если вы застряли с ним,nslookup
вы можете использовать другого поставщика, например, Google. Однако вы все равно получаете только одну версию протокола в ответе, и вы не можете выбрать какую.nslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
и это действительно работает. Но если у меня есть и IPv4, и IPv6, это не позволит мне выбрать, какой из них я смогу увидеть. Скорее всего, он покажет мне IPv6-адрес, и, скорее всего, я использую его, потому что я хочу знать IPv4-адрес NAT. Чтобы обойти это, нужно использовать службу, которая имеет имя только для IPv4 и имя только для IPv6, что также решает проблему NAT64.Я хотел бы добавить один момент к уже существующим ответам.
Это также зависит от сложности сети. Возможно, ваш компьютер находится в сети, имеющей несколько внешних IP-адресов, и маршрутизатор, находящийся где-то на линии, отправляет трафик в Интернет на основании некоторых критериев: например, IP-адрес назначения или время суток (может быть одним восходящим каналом дешевле ночью или по другим причинам).
Таким образом, чтобы завершить, понятие «внешний IP-адрес» может потребовать определения точки назначения, к которой ваш адрес является внешним.
В приведенном ниже примере
Router #2
может выполняться NAT и отправлять трафик на любые восходящие каналы, а принимающий узел может видеть другой внешний IP-адрес дляHost
.Или может случиться так, что определенный пункт назначения (например
host1.example.com
) всегда проходит черезUplink A
, а хостhost2.example.com
всегда проходит черезUplink B
. Таким образом, ваш внешний IP - адрес , как видно на этих узлах будет отличаться, при условии , чтоUplink A
иUplink B
различные интернеты - провайдеры.Таким образом, отправка трафика позволит получить более надежные результаты.
источник
Вы можете использовать DNS, а не HTTP. Например, вы можете использовать:
Это покажет адрес одноадресной рассылки DNS-сервера, который вы используете, и если он поддерживает EDNS, он также покажет ваш IP-адрес, хотя, возможно, и усеченный.
Чтобы получить свой полный IP-адрес, вы можете обойти свой локальный DNS-сервер и отправить вышеуказанный запрос напрямую на ns {1,2,3,4} .google.com.
Если вы хотите увидеть свой IP-адрес в определенной версии протокола, вы можете использовать
-6
и-4
:Вы также можете использовать OpenDNS, если хотите. OpenDNS использует для этого не записи TXT, а записи A и AAAA, поэтому вы должны указать, какую версию протокола вы ищете:
Обратите внимание, что если ваш трафик проходит через трансляцию протокола, вы можете получить разные результаты или вообще не получить их. Тестирование с машины за NAT64 Я смог увидеть свой IPv6-адрес с помощью приведенных выше команд, но не IPv4-адрес NAT64.
Этот ответ основан на этих источниках 1 2 3 и небольшом собственном исследовании.
источник
Веб обычно ссылается на HTTP, если в этом смысл вашего вопроса, то, например, вы можете использовать STUN ( статья в Википедии ), что означает «Утилиты обхода сеанса для NAT».
Теперь, как это было выделено в комментарии, у вас может быть несколько внешних IP-адресов. Также, поскольку беспроводные соединения становятся все более распространенными (вещь 4G), не исключено, что IP-адрес, сообщаемый вашим маршрутизатором, не будет общедоступным. Я даже встречал этот сценарий на оптоволоконных соединениях в некоторых странах, где интернет-провайдер предоставил бы локальному маршрутизатору частный IP-адрес, который впоследствии был бы преобразован 1: 1 в общедоступный IP-адрес при выходе из их сети.
Поэтому, если ваш вопрос «могу ли я найти свой общедоступный IP-адрес, не отправляя пакеты из моей сети», вы МОЖЕТЕ в своем контексте, но не существует 100% -ного решения.
источник