Есть ли способ получить мой публичный (WAN) IP-адрес в командной строке? Я нахожусь за маршрутизатором (сеть LAN) с динамическим IP-адресом, назначенным моим провайдером.
Я видел решения, использующие внешний веб-сервис (например, ifconfig.me
), но я хочу знать, смогу ли я сделать это без внешнего сервиса.
command-line
internet
ip
dynamic-ip
user61954
источник
источник
Ответы:
Если предположить , что система имеет 2 локальных сетей устройств,
eth0
аeth1
иeth0
подключен к локальной сети, скажем , IP - адреса 192.168.1.X и вашеeth1
устройство подключено к провайдеру (WAN) , который вы собираетесь хотите использовать следующуюifconfig
команду , чтобы получить IP - адрес для сторона WAN.ПРИМЕЧАНИЕ. Первые 2 способа предполагают, что вы запускаете их на компьютере с двумя сетевыми устройствами и одно из них подключено к вашему провайдеру (кабельный модем и / или модем DSL). В этом случае устройство Ethernet (eth1) будет настроено с вашим IP-адресом в Интернете (WAN IP).
1-й путь
Вы также можете использовать
ip
команду.2-й способ
Если вам нужно выяснить это из системы, которая находится только в локальной сети, вы можете установить ssh-ключ без пароля и добавить его к учетной записи на вашем компьютере локальной сети, чтобы он мог получить удаленный доступ к системе с помощью доступа к глобальной сети, например, так.
3-й способ
Если вы не можете подключиться по ssh к коробке с доступом к WAN и используете домашний маршрутизатор / коммутатор, такой как Linksys или Netgear. Вы можете получить IP-адрес с этого устройства через страницу состояния HTTP. Я делал это и раньше, что-то похожее на то, что описано в этом посте на форуме whatismyip.com .
ПРИМЕЧАНИЕ. Этот подход в значительной степени зависит от того, какой у вас маршрутизатор / коммутатор, будь то бренд Linksys, Netgear и т. Д. У каждого будет своя уникальная страница с IP-адресом WAN.
4-й способ
Отправка запроса на внешний интернет-сайт, который сообщит ваш IP-адрес в глобальной сети.
ПРИМЕЧАНИЕ. Мне известно, что в первоначальном вопросе упоминалось, что они искали альтернативы этому подходу, но я привожу его здесь, чтобы этот ответ охватывал все основы.
Дополнительная информация доступна здесь: HOWTO: Проверьте ваш внешний IP-адрес из командной строки
источник
eth*
устройств не будет иметь WAN IP. Если его маршрутизатор не поддерживает ssh, у него есть доступ, и если он настроен, это не сработает. Не понижение голоса, но любой, кто пытается это сделать, знает об этом.Если в вашей системе установлен curl (большинство делает), вы можете использовать
источник
Когда вы находитесь за NAT-маршрутизатором с UPNP, вы можете использовать miniupnpc для определения ненадежного IP-адреса:
Вы можете использовать его в скрипте, например, для cron, например:
источник
Скорее всего, маршрутизатор должен предоставить способ получения внешнего IP-адреса, если внешняя служба не может или не может использоваться (как уже указывалось в некоторых других ответах). Для внешних сервисов в большинстве других ответов используется веб-сервис. Этот ответ в Unix SE предлагает вместо этого использовать DNS.
Например, используя
dig
с OpenDNS в качестве распознавателя:источник
curl ident.me
как мы полагаемся ОСАМИ конкретной услуги (вmyip.opendns,com
этом специальном обсаженных Theat DNS - сервере)Получите информацию с вашего роутера через ssh или curl.
Я использую curl, чтобы спросить у dyndns мой публичный ip, но такая команда не подходит для вас, верно?
curl http://checkip.dyndns.org 2> /dev/null| perl -pe 's,.*Address: (\d+\.\d+\.\d+\.\d+).*,$1,'
источник
К сожалению, нет способа обнаружить такие механизмы, как NAT, которые не связаны с удаленным сервисом. NAT по своей природе полностью прозрачен для пользователя, кроме сломанных сервисов, и нет стандартного протокола для обнаружения NAT.
Но что касается внешних служб, я должен предложить быстрый и простой, который я написал, identif.me, который вы можете использовать как для IPv4, так и для IPv6; для простейшей формы, которую вы можете использовать,
curl ident.me
а полный API документирован на http://api.ident.me/источник
Если ваш маршрутизатор поддерживает NAT PMP (Port Mapping Protocol), вы можете получить ваш публичный IP-адрес с помощью natpmp.
Есть интерфейс командной строки для библиотеки linux natpmp под названием natpmpc. В Ubuntu он находится в пакете natpmp-utils . Похоже, мой маршрутизатор не поддерживает natpmp, поэтому я не уверен, что утилита natpmpc вернет ваш общедоступный IP-адрес.
источник
Команда linux, которую вы ищете,
ifconfig
предполагает, что вы напрямую подключены к Интернету.Если нет и доступ осуществляется через прокси или специальную маршрутизацию, самый простой способ (как указывают другие) - войти в систему / получить доступ к другому хосту и проверить его оттуда.
Кроме того, вы можете обсудить этот вопрос с вашим дружественным администратором систем соседства.
источник
ifconfig
не рекомендуется.ifconfig
последнюю дату выпуска. Теперь посмотрите наìproute2
последний выпуск. Что касается источника, см. Lartc.org/howto/lartc.iproute2.html#LARTC.IPROUTE2.WHYСед, что если вам нужно
источник
curl icanhazip.com