Вероятно, я не первый, кто это сделал, но мне пришлось использовать службу динамического DNS NO-IP, чтобы я мог легко настраивать устройства и компьютеры для доступа к ресурсам моей локальной сети, когда меня нет. Для тех, кто менее знаком с NO-IP, это бесплатная служба динамического DNS. Большинство домашних и небольших офисных подключений к Интернету имеют динамический IP-адрес, что означает, что IP-адреса меняются почти каждый раз, когда устанавливается соединение с маршрутизатором. Обычно для работы доменного имени требуется статический IP-адрес. Динамический DNS позволяет доменному имени (например, subdomain.example.com) использовать динамический IP-адрес путем обновления NO-IP новым IP-адресом при изменении IP-адреса. Затем NO-IP связывает этот IP-адрес с именем домена, чтобы службы можно было настроить для домена, а не для меняющегося IP-адреса. Это упрощает настройку.
Многие маршрутизаторы имеют встроенный клиент NO-IP, но мой маршрутизатор не поддерживает NO-IP, и по какой-то причине я никогда не мог получить клиент, рекомендованный NO-IP для работы хоста Linux. Я загрузил исходный код и скомпилировал его, следуя инструкциям, и он, похоже, работал, но мой IP-адрес так и не обновился. Не было вывода ни на консоль, ни в файл журнала для диагностики проблемы, которую я смог найти, поэтому я решил написать свою собственную, что на самом деле было не так уж сложно сделать с помощью сценария bash и нескольких простых утилит. на моем компьютере с Linux. Вот мое практическое руководство и документация по настройке. Я использую сервер Ubuntu, поэтому использую apt и nano, но это должно работать на любом устройстве, основанном на POSIX, например Mac OS X, BSD, любой версии Linux — даже на Raspberry Pi.
Скрипт можно запускать как отдельный экземпляр с параметрами командной строки, как демон, с помощью crontabs (утилита для запуска программ по расписанию) или как сервис Linux.
У этого сценария есть одна зависимость — wget. Обычно он устанавливается по умолчанию в большинстве дистрибутивов Linux и BSD, но в противном случае для его установки используйте менеджер пакетов.
sudo apt-get install wget
-или-
sudo yum install wget
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
Параметры:
-u, --username
Имя пользователя для входа на no-ip.com.
-p, --password
Пароль для входа на no-ip.com.
-h, --hostname
Доменное имя для обновления.
-d, --detectip
Указывает сценарию определить ваш внешний IP-адрес. Это имеет приоритет над -i.
-i, --ip
Автоматически устанавливает IP-адрес для обновления. Если не указаны ни -d, ни -i, no-ip будет использовать обнаруженный IP-адрес.
-n, --interval
При запуске сценария в качестве демона/службы (см. раздел «Установка») no-ip будет обновляться каждые n минут.
-l, --logfile
Устанавливает путь к файлу журнала. Этот файл должен быть доступен для записи.
-c, --config
Устанавливает путь к файлу конфигурации. Этот файл должен быть доступен для чтения. Параметры файла конфигурации имеют приоритет над параметрами командной строки.
no-ip.sh
Запускает скрипт с настройками из конфигурационного файла в расположении по умолчанию /etc/no-ip/no-ip.conf.
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
Выполняет однократное обновление, обнаруживает UP и регистрирует результаты
no-ip.sh -c=/home/username/no-ip.conf
Запустите скрипт с настройками в конфиге.
no-ip.sh /dev/null 2>&1 &
Запускает скрипт как демон с настройками из файла конфигурации в расположении по умолчанию /etc/no-ip/no-ip.conf.
Файл конфигурации использует простой синтаксис для определения параметров. Любой параметр командной строки (кроме --config) также можно указать в файле конфигурации. К параметрам файла конфигурации применяются те же правила, что и к параметрам строки команды (т. е. «detectip» переопределяет «ip», если оба указаны).
Пример:
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
Перед установкой скрипта загрузите и распакуйте файлы на свой локальный компьютер. В инструкциях предполагается, что вы находитесь в папке no-ip-master.
cd ~
wget https://github.com/theonemule/no-ip/archive/master.zip
unzip master.zip
cd no-ip-master
Способ 1: кронтабс
Crontabs позволяет вам указать расписание для запуска сценария, а также он будет запускать сценарий от имени пользователя, для которого настроен crontab. Убедитесь, что у пользователя есть разрешения на выполнение сценария, права на чтение файла конфигурации и права на запись в файл журнала. Crontabs будет запускать сценарий по расписанию, поэтому нет необходимости указывать интервал.
Вот как запустить скрипт от имени пользователя root.
1.) Создайте папку в и т. д.
sudo mkdir /etc/no-ip
2.) Создайте файл конфигурации.
sudo touch /etc/no-ip/no-ip.conf
3.) Установите параметры в вашем любимом редакторе. Я использую нано. Подробности см. в разделе «Файл конфигурации» выше.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
detectip=true
4.) Скопируйте no-ip.sh в /usr/sbin.
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) Сделайте скрипт исполняемым.
sudo chmod +x /usr/sbin/no-ip.sh
6.) Войдите в систему как root.
sudo -i
7.) Отредактируйте crontab root-пользователя.
crontab -e
8.) Добавьте запись внизу. */10 указывает crontab запускать скрипт каждый раз, когда текущее время делится на 10 или каждые 10 минут, и сохранять crontab.
*/10 * * * * /usr/sbin/no-ip.sh
Способ 2: Служба Linux (написана для дистрибутивов на основе Debian. Для других дистрибутивов это будет отличаться)
Убедитесь, что root имеет права на выполнение сценария, права на чтение файла конфигурации и права на запись в файл журнала.
1.) Создайте папку в /etc.
sudo mkdir /etc/no-ip
2.) Создайте файл конфигурации.
sudo touch /etc/no-ip/no-ip.conf
3.) Установите параметры в вашем любимом редакторе. Я использую нано. Подробности см. в разделе «Файл конфигурации» выше.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
4.) Скопируйте no-ip.sh в /usr/sbin.
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) Сделайте скрипт исполняемым.
sudo chmod +x /usr/sbin/no-ip.sh
6.) Скопируйте no-ip-service в init.d.
sudo cp no-ip-service /etc/init.d/no-ip-service
7.) Создайте исполняемый файл no-ip-service.
sudo chmod +x /etc/init.d/no-ip-service
8.) Запустите службу
sudo service no-ip-service start
9.) Добавьте службу для запуска при загрузке.
update-rc.d no-ip-service defaults