Яку команду на основі nix можна використовувати для пошуку зовнішнього IP-адреси?


Відповіді:



8
копати + короткий myip.opendns.com

Це працює лише в тому випадку, якщо ви використовуєте OpenDNS як свій dns-сервер.

Якщо ви цього не зробите, один із них має працювати:

копати + короткий myip.opendns.com @ 208.67.222.222
копати + короткий myip.opendns.com @ 208.67.220.220
копати + короткий myip.opendns.com @ 208.67.222.222 @ 208.67.220.220

1
Не працює на моїх MacOS 10.5, Ubuntu 8.04 або Ubuntu 9.04.
Дрю Стівенс

Цікаво, що це робиться на моєму Ubuntu 8.10.
Бред Гілберт

Можливо, тому, що я використовую відкривачі.
Бред Гілберт

+1 для використання DNS для пошуку IP-адреси (замість http). Ви також можете вказати сервер dns, використовуючи його ім'я, наприклад, @resolver1.opendns.com(для читабельності)
jfs



2

Для цього потрібно використовувати сервери OpenDNS ... Ви можете запросити певний DNS-сервер у такому копанні:

копати + короткий myip.opendns.com @ 208.67.222.222

2

Ви можете використовувати curl, щоб отримати сторінку з чогось подібного до whatismyip, а потім дістати фрагменти. Я використовував whatismyipaddress.com у цьому прикладі ... очевидно, що поля відрізнятимуться від різних сервісів.

curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }'

1

я просто запускаю traceroute кудись в Інтернеті і шукаю стрибок з нашої локальної мережі.

можливо, є кращий спосіб?




0

Ви можете використовувати команду ifconfig, щоб перелічити всі інтерфейси та пов’язані з ними IP-адреси.

Отже, якщо ви знаєте, що ваш інтернет-інтерфейс - ppp0, ви можете запустити

$ ifconfig ppp0
ppp0 Link encap: Протокол "точка-точка"
          inet addr: XXXX.X PtP: YYYY Маска: 255.255.255.255
          Вгору POINTOPOINT RUNNING NOARP MULTICAST MTU: 1444 Показник: 1
          Пакети RX: 198986 помилок: 0 випали: 0 перевитрати: 0 кадр: 0
          TX-пакети: 122929 помилок: 0 випало: 0 перевитрат: 0 оператор: 0
          зіткнення: 0 txqueuelen: 3
          RX байти: 134195571 (127,9 МіБ) TX байти: 17101701 (16,3 МіБ)

XXXX буде вашою IP-адресою. РРРР - IP-адреса наступного переходу.

Ви можете потім обробити вихід ifconfig за допомогою grep / awk / sed / cut / perl / що завгодно, щоб витягнути лише IP.

Іншою альтернативою, якщо у вас встановлені інструменти iproute, є використання команди ip. напр

$ ip список добавок ppp0
21842: ppp0: mtu 1444 qdisc htb state UNKNOWN qlen 3
    посилання / ppp
    inet XXXX peer YYYY / 32 global global ppp0

це, мабуть, легше читати і, звичайно, простіше розбирати:

$ ip список додавачів ppp0 | awk '/ inet / {print $ 2}'
XXXX

- Є ймовірність, що будь-який IP в ifconfig не буде відповідати реальному IP-адресу в Інтернеті (у випадку biNAT) - У FreeBSD відсутній пакет iproute2, тому команда ip не застосовується
SaveTheRbtz

правда, я не використовую NAT, тому мені ніколи не приходило в голову .... мені просто здалося "неправильним" використовувати зовнішній сервіс для інформації, про яку можна запитати власну систему. навіть з NAT я все одно вважаю за краще розібратися, як запитувати роутер на NAT (можливо, за допомогою SNMP-запиту), ніж покладатися на зовнішню службу, яка може бути, а може бути і недоступною, коли мені це потрібно.
cas

@Craig, твій підхід прекрасний. Однак, це не зовнішній IP, якщо ви не зможете досягти цього значення ззовні. Для цього вам потрібно покластися на зовнішній пункт. Ідея полягає у тому, щоб знайти надійний (принаймні більше, ніж ваш периметр) зовнішній пункт для запиту. OpenDNS - хороший момент.
nik

@nik: єдиний вірогідний випадок, коли IP вашого маршрутизатора не є зовнішнім IP-адресою, коли ви знаходитесь за декількома шарами NAT ... у цьому випадку правильним рішенням є перехід на сервіс ASAP, який не пошкодив мозок. . Крім того, проблема з отриманням URL-адреси, щоб дізнатися ваш IP-адресу, полягає в тому, що він повідомляє вам лише IP-хост, який насправді отримує його - що може бути проксі-сервером, який знімає через заголовки.
cas
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.