Якщо ваше з'єднання NAT'ed, чи можна бачити вашу зовнішню IP-адресу, не роблячи вихідний веб-запит?
Будь-яка ОС (Windows, Linux тощо) чудово.
Якщо ваше з'єднання NAT'ed, чи можна бачити вашу зовнішню IP-адресу, не роблячи вихідний веб-запит?
Будь-яка ОС (Windows, Linux тощо) чудово.
Відповіді:
Якщо ваш комп'ютер відстає від 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, який, на мою думку, не підпадає під категорію "веб-запит":
nslookup myip.opendns.com resolver1.opendns.com
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, вам потрібно. Без цього вам доведеться передбачити, яку версію IP nslookup
використовуватиме для транспорту, і запитувати відповідну 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
різні інтернети - провайдери.
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, а не 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, який пізніше, виходячи з їхньої мережі, буде переведений на публічний IP.
Отже, якщо ваше запитання "чи можу я знайти свій загальнодоступний IP-адресу, не надсилаючи пакети з моєї мережі", ви МОЖИТЕ у вашому контексті, але немає 100-відсоткового рішення.