Для пошуку зовнішнього ip можна використовувати зовнішні веб-сервіси або використовувати системні методи. Простішим є використання зовнішньої служби, а також ifconfig
засновані рішення працюватимуть у вашій системі лише у тому випадку, якщо ви не відстаєте від NAT
. ці два методи були детально розглянуті нижче.
Пошук зовнішнього ІР за допомогою зовнішніх служб
Найпростіший спосіб - це використання зовнішньої служби через браузер командного рядка або інструмент завантаження. Оскільки wget
в Ubuntu доступно за замовчуванням, ми можемо використовувати це.
Щоб знайти свій ip, використовуйте-
$ wget -qO- https://ipecho.net/plain ; echo
Люб'язно :
Ви також можете використовувати lynx
(браузер) або curl
замість wget
незначних варіацій вищевказаної команди знайти свій зовнішній ip.
Використання curl
для пошуку ip:
$ curl https://ipecho.net/plain
Для кращого форматування виводу використовуйте:
$ curl https://ipecho.net/plain ; echo
Більш швидкий (імовірно, найшвидший) метод, що використовує dig
в OpenDNS
якості резолютора:
Інші відповіді тут переходять через HTTP на віддалений сервер. Деякі з них потребують розбору результатів або покладаються на заголовок User-Agent, щоб сервер відповідав звичайним текстом. Вони також доволі часто змінюються (спускаються, змінюють назву, розміщують рекламу, можуть змінювати формат виводу тощо).
- Протокол відповіді DNS стандартизований (формат залишатиметься сумісним).
- Історично DNS-сервіси (OpenDNS, Google Public DNS, ..), як правило, виживають набагато довше і є більш стабільними, масштабованими та зазвичай доглядають, ніж будь-який новий сервіс HTTP HTTP whatismyip.com сьогодні гарячий.
- (для тих вун, які піклуються про мікрооптимізацію) цей метод повинен бути по суті швидшим (будь то лише декілька мікросекунд).
Використання копання з OpenDNS як роздільної здатності:
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
Скопійовано з: https://unix.stackexchange.com/a/81699/14497
Пошук зовнішнього IP-адреси, не покладаючись на зовнішні сервіси
- Якщо ви знаєте ім'я свого мережевого інтерфейсу
Введіть у свій термінал наступне:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
У наведеному вище, замініть <interface_name>
на ім'я вашого фактичного інтерфейсу, наприклад: eth0
, eth1
, pp0
, і т.д. ...
Приклад використання:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
- Якщо ви не знаєте ім'я свого мережевого інтерфейсу
Введіть у свій термінал наступне (це отримує ім’я та ip адресу кожного мережевого інтерфейсу у вашій системі):
$ 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 }'
Приклад використання:
$ 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
Примітка: Результати є орієнтовними та не реальними.
Люб’язно: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
ОНОВЛЕННЯ
LANG=c
було додано до ifconfig
базових звичаїв, так що він завжди дає вихід з англійської мови, незалежно від налаштування мови.