Может ли Ubuntu запросить у модема или маршрутизатора IP-адрес, указанный его провайдером, и зарегистрировать его?
Я подключен к Интернету через модем ADSL, мой интернет-провайдер дает мне IP-адрес, Ubuntu записывает этот IP-адрес где-нибудь?
Как я могу настроить Ubuntu для регистрации IP-адреса?
2 ответа
Или вы можете сделать это самостоятельно, используя curl
для доступа к ряду онлайн-сервисов, которые отвечают вашим публичным IP-адресом.
Некоторые из услуг:
Пример:
curl icanhazip.com
будет выводить на терминал
curl icanhazip.com > my_public_ip.txt
создаст или переместит текстовый файл с именем my_public_ip.txt
с IP.
curl icanhazip.com >> my_public_ip.txt
будет добавлять общедоступный IP-адрес при каждом запуске команды.
Вы можете создать небольшой скрипт для запуска проверки и даже добавить его в качестве задания cron для запуска, скажем, каждый раз, когда машина перезагружается или через определенные промежутки времени.
Самая простая версия может быть:
#!/usr/bin/env bash
curl icanhazip.com >> my_public_ip.txt
Регистрация адреса вашего ПК
Если ваш модем является чисто модемом и ваш компьютер подключается к вашему провайдеру напрямую, то полученный IP-адрес будет записан в системный журнал. /var/log/syslog
, Если вы хотите, чтобы эту информацию было легче извлечь, вы можете войти в отдельный файл.
Если ваш провайдер предоставляет соединение PPP, то сценарии в /etc/ppp/ip-up.d
выполняются каждый раз при подключении (или /etc/ppp/ipv6-up.d
если у вас есть подключение IPv6). Добавьте скрипт с именем /etc/ppp/ip-up.d/zzz_log_ip_address
:
#!/bin/sh
echo "$PPP_LOCAL $(TZ=UTC date '+%Y-%m-%d %H-%M-%S')" >>/var/log/ip-addresses
Если ваш провайдер предоставляет соединение Ethernet, то сценарии в /etc/network/if-up.d
выполняются каждый раз, когда вы подключаетесь. Добавьте скрипт с именем /etc/network/if-up.d/zzz_log_ip_address
:
#!/bin/sh
if [ "$IFACE" = "lo" ]; then exit; fi # skip loopback interface
address=$(ip addr show eth1 | awk '$1 == "inet" {sub("/.*", "", $2); print $2}')
echo "$address $(TZ=UTC date '+%Y-%m-%d %H-%M-%S')" >>/var/log/ip-addresses
Получение вашего интернет-адреса
Адрес вашего ПК в локальной сети может не совпадать с адресом, с которым вы подключаетесь к Интернету из-за NAT. NAT позволяет многим машинам в сети устанавливать исходящие соединения с одного IP-адреса. Многие ADSL-модемы фактически являются маршрутизаторами и устройствами NAT, а не модемом. Если ваш модем предлагает Wi-Fi, это почти наверняка устройство NAT. Если ваш модем позволяет подключаться нескольким компьютерам (при этом один из компьютеров не настроен для совместного использования подключений), это устройство NAT.
Если ваш компьютер находится за NAT, то единственный способ узнать его адрес в Интернете - это запросить удаленный компьютер. Есть много общедоступных сайтов, которые предоставляют эту информацию. Вы можете получить эту информацию в любое время, но вы не будете знать, когда она изменится. Большинство интернет-провайдеров время от времени изменяют ваш IP-адрес, поскольку это облегчает балансировку нагрузки в их оборудовании. Это обычно происходит один раз в день или раз в несколько дней.
Если вы хотите регулярно регистрировать свой IP-адрес, вы можете выполнить работу cron. Обратите внимание, что если ваш адрес меняется несколько раз между запусками задания, у вас нет возможности узнать. В вашем crontab:
0 * * * * $HOME/bin/log-ip-address
Сценарий ~/bin/log-ip-address
:
#!/bin/sh
log_file=~/.ip-addresses.log
address=$(wget -q -O - http://ipecho.net/plain)
previous=$(awk 'END {print $1}' <"$log_file") 2>/dev/null
if [ "$address" != "$previous" ]; then
echo "$address $(TZ=UTC date '+%Y-%m-%d %H-%M-%S')" >>"$log_file"
fi
В зависимости от модели вашего маршрутизатора, он может регистрировать IP-адреса, которые он получает, и может быть способ заставить его отправить эту информацию на ваш ПК. Это очень зависит от модели маршрутизатора, я не могу дать общий совет.