Якщо припустити , що система має 2 локальних мереж пристроїв, eth0
а eth1
й eth0
підключений до локальної мережі, скажімо , IP - адреси 192.168.1.X і ваше eth1
пристрій підключено до провайдера (WAN) , який ви збираєтеся хочете використовувати наступну ifconfig
команду , щоб отримати IP - адреса для WAN сторона.
ПРИМІТКА. Перші два способи передбачають, що ви керуєте ними на комп’ютері, який має 2 пристрої Ethernet і один з них підключений до вашого провайдера (кабельний модем та / або DSL-модем). У цьому випадку пристрій Ethernet (eth1) буде налаштовано з вашою IP-адресою в Інтернеті (WAN IP).
1-й спосіб
+------------------------+
+--------+ WAN IP | Computer that wants | LAN IP
|Internet|--------------| to know WAN IP |------------
+--------+ 54.234.1.33 | +------+ +------+ | 192.168.1.1
+-| eth1 |------| eth0 |-+
+------+ +------+
% ifconfig eth1 | awk '/inet / { print $2 }' | sed -e s/addr://
54.234.1.33
Ви також можете використовувати ip
команду.
% ip addr show eth1 | awk '/inet/ {print $2}' | sed 's#/.*##'
54.234.1.33
2-й спосіб
Якщо вам потрібно це дізнатись із системи, яка сидить лише в локальній мережі, ви можете встановити ключ ssh без паролів і додати його до облікового запису на вашій локальній мережі, щоб він міг віддалено отримувати доступ до системи з таким WAN-доступом.
+----------------+
+--------+ WAN IP +-------------+ LAN IP | Computer that |
|Internet|----------------|remote-server|-----------------| wants to know |
+--------+ 54.234.1.33 +----+-----+----+ 192.168.1.x +----+ WAN IP |
|eth1| |eth0| |eth0|------------+
+----+ +----+ +----+
% ssh ruser1@remote-server "ifconfig eth1 | awk '/inet / { print \$2 }' | sed -e s/addr://"
54.234.1.33
3-й спосіб
Якщо ви не в змозі ввімкнути скриньку у вікно, у якому є доступ до WAN, і ви використовуєте домашній маршрутизатор / комутатор, наприклад, вікно Linksys або Netgear. Ви можете отримати IP-адресу з цього пристрою через сторінку статусу HTTP. Я це робив і в минулому, щось подібне до того, що описано в цій публікації на форумі whatismyip.com .
192.168.1.2
+----------------+
+--------+ WAN IP +-------------+ LAN IP | Computer that |
|Internet|----------------|router/switch|-----------------| wants to know |
+--------+ 54.234.1.33 +-------------+ 192.168.1.x +----+ WAN IP |
192.168.1.1 |eth0|------------+
+----+
# something like this....
% wget -q -O - http://<username>:<password>@192.168.1.1/Status_Router.asp | grep "ipaddress" | cut -d" " -f2
ПРИМІТКА. Цей підхід сильно залежить від того, який маршрутизатор / комутатор у вас є, будь то марка Linksys, Netgear тощо. У кожного буде своя унікальна сторінка з WAN IP на ній.
4-й спосіб
Надсилання запиту на зовнішній веб-сайт, який повідомить про вашу IP-адресу WAN.
ПРИМІТКА. Я знаю, що в первинному питанні було зазначено, що вони шукають альтернативи цьому підходу, але я вкладаю його сюди, щоб ця відповідь охоплювала всі підстави.
+---------------+
+-------------+ +--------+ +------+ LAN IP | Computer that |
|whatsmyip.com|---|Internet|---|router|---------------| wants to know |
+-------------+ +--------+ +------+ 192.168.1.x +----+ WAN IP |
you're 54.234.1.33 |eth0|-----------+
+----+
# 1st server
% wget -qO - ipv4bot.whatismyipaddress.com
54.234.1.33
# 2nd server
% curl 'https://api.ipify.org?format=json'
{"ip":"54.234.1.33"}
% curl 'https://api.ipify.org?format=txt'
54.234.1.33
# 3rd server
% curl -s checkip.dyndns.org | sed 's#.*Address: \(.*\)</b.*#\1#'
54.234.1.33
Додаткову інформацію можна отримати тут: ЯК: Перевірте зовнішню IP-адресу з командного рядка