Может ли 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-адреса, которые он получает, и может быть способ заставить его отправить эту информацию на ваш ПК. Это очень зависит от модели маршрутизатора, я не могу дать общий совет.

Другие вопросы по тегам