Назад | Перейти на главную страницу

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

Похоже на http://whatismyip.com уважать. Очевидно, потребуется запросить компьютер. Просто интересно, есть ли у кого-нибудь умный способ сделать это?

curl http://myip.dnsomatic.com
dig +short myip.opendns.com

Это работает, только если вы используете OpenDNS в качестве DNS-сервера.

Если это не так, один из них должен работать:

dig +short myip.opendns.com @208.67.222.222
dig +short myip.opendns.com @208.67.220.220
dig +short myip.opendns.com @208.67.222.222 @208.67.220.220

СТУН правильное решение.

% stun -v stun.ekiga.net
...
MappedAddress = 88.189.152.187:18009

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

curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }'
lynx -dump http://www.pcmesh.com/ip-check.cgi | awk '/REMOTE_ADDR/{print $2}'

Чтобы использовать это, нужно использовать серверы OpenDNS ... Вы можете запросить определенный DNS-сервер с помощью команды:

dig +short myip.opendns.com @208.67.222.222

Я просто запускаю трассировку куда-нибудь в Интернете и ищу переход из нашей локальной сети.

может есть способ получше?

самый простой способ: curl ifconfig.me

вы можете использовать команду ifconfig для вывода списка всех интерфейсов и связанных с ними IP-адресов.

Итак, если вы знаете, что ваш интернет-интерфейс - ppp0, вы можете запустить

$ ifconfig ppp0
ppp0      Link encap:Point-to-Point Protocol
          inet addr:X.X.XX.X  P-t-P:Y.Y.Y.Y  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1444  Metric:1
          RX packets:198986 errors:0 dropped:0 overruns:0 frame:0
          TX packets:122929 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:134195571 (127.9 MiB)  TX bytes:17101701 (16.3 MiB)

X.X.X.X будет вашим IP-адресом. Y.Y.Y.Y - это IP-адрес следующего перехода.

затем вы можете постобработать вывод ifconfig с помощью grep / awk / sed / cut / perl / something, чтобы извлечь только IP.

другой альтернативой, если у вас установлены инструменты iproute, является использование команды ip. например

$ ip addr list ppp0
21842: ppp0:  mtu 1444 qdisc htb state UNKNOWN qlen 3
    link/ppp
    inet X.X.X.X peer Y.Y.Y.Y/32 scope global ppp0

это, вероятно, легче читать и, конечно, легче разбирать:

$ ip addr list ppp0 | awk '/inet/ {print $2}'
X.X.X.X