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