Предполагая, что ваша система имеет 2 Ethernet-устройства, eth0
и eth1
и eth0
подключены к вашей локальной сети, скажем IPs 192.168.1.X и ваше устройство eth1
подключено к вашему провайдеру (WAN), вы захотите использовать следующую команду ifconfig
чтобы получить свой IP для стороны WAN.
ПРИМЕЧАНИЕ. Первые 2 способа предполагают, что вы запускаете их на компьютере с двумя сетевыми устройствами и одно из них подключено к вашему провайдеру (кабельный модем и / или модем 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 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-й способ
Если вы не можете подключиться по ssh к блоку с доступом к глобальной сети и используете домашний маршрутизатор / коммутатор, например блок 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 и т.д. У каждого будет своя уникальная страница с IP-адресом WAN.
4-й способ
Отправка запроса на внешний интернет-сайт, который сообщит ваш IP-адрес в глобальной сети.
ПРИМЕЧАНИЕ. Мне известно, что в первоначальном вопросе упоминалось, что они искали альтернативы этому подходу, но я привожу его здесь, чтобы этот ответ охватывал все основы.
+---------------+
+-------------+ +--------+ +------+ 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
Дополнительная информация доступна здесь: HOWTO: Проверьте ваш внешний IP-адрес из командной строки