воскресенье, 23 июня 2013 г.

Настройка NO-IP

ЕСЛИ ХОСТ НА КОТОРОМ БУДЕТ ЗАПУШЕНА УТИЛИТА НЕ ИМЕЕТ ПРЯМОГО ДОСТУПА К ИНТЕРНЕТУ, Т.Е. СИДИТ ЗА NAT'ом ИЛИ МАРШРУТИЗАТОРОМ, ЧИТАЕМ  (Если NOIP не правильно определяет адрес)
  1. Выкачиваете последнюю версию программы под Linux
  2. Разархивируете полученный файл в директорию /usr/local/src
# cp noip-duc-linux.tar.gz /usr/local/src
# cd /usr/local/src
# tar -zxf noip-duc-linux.tar.gz
# cd noip-2.1.9-1
# make
 
Если выскакивает:
make
gcc -Wall -g -Dlinux -DPREFIX=\"/usr/local\" noip2.c -o noip2 
make: gcc: Команда не найдена
make: *** [noip2] Ошибка 127
то необходимо установиться пакет gcc 
 
# cp redhat.noip.sh /etc/init.d/noip
# chmod 744 /etc/init.d/noip
# make install
При выполнении make install
  1. Выбираем какой интерфейс смотрит в инет
  2. Вводим email адрес, который использовали при регистрации
  3. Вводим пароль, который использовали при регистрации
  4. Период обновления оставляем по умолчанию.
  5. Отказываемся
Скрипт создает файл /usr/local/etc/no-ip2.conf. Если нет, то создаете файл с именем noip2 в директории etc/init.d/ и в него вставляете:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          noip2
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example my init script
# Description:       This file should be used to construct scripts to be placed in /etc/init.d
### END INIT INFO
IDPID=`ps -e | grep "noip2" | grep -v grep | awk '{print $1}'`
 
/etc/rc.d/init.d/noip2
case "$1" in
start)
echo "Starting noip2."
/usr/local/bin/noip2
;;
stop)
echo -n "Shutting down noip2."
killproc $IDPID
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0


сохраняем. Или можете скачать этот файл с нашего сервера.

Переходим в директорию etc/ открываем файл rc.local
перед словом exit 0 , вставляем /etc/init.d/noip2 start
должно получиться примерно так:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/etc/init.d/noip2 start
exit 0


Перезагружаем Linux , заходим в консоль, набираем ps -e или ps aux , ищем в списке noip2 , если есть, значит программа запустилась с автозагрузки и все сделано правильно, если нет в списке, то присвоим права для для файла /etc/init.d/noip2 командой chmod 777 /etc/init.d/noip2.


Если NOIP не правильно определяет адрес

Если мы прокинули порт на модеме, а noip определяет наш адрес как 192.168.1.2 (адрес интерфейса), то можно поступить так.
1. Исключаем noip из сервисов, например, с помощью drakxconf (Для Mandriva).
2. Устанавливаем билиотеку php-cli (может называться к примеру php5-cli), если она не установлена
$sudo urpmi php-cli
2. Создаем файл /etc/scripts/myip.php, который определяет наш IP адрес через сайт www.myip.ru и отправляет его на сайт NOIP.
#!/usr/bin/php
<?php 
$page = file_get_contents('http://www.myip.ru/get_ip.php?loc=http://www.myip.ru/'); 
//echo $page;
preg_match_all('|<TR><TD bgcolor=white align=center valign=middle>(.+)</TD></TR>|',$page,$result); 
$rez=$result[1][rand(0,0)];
//echo $rez;
exec ('/usr/local/bin/noip2 -i'.$rez); 
?>
3. Добавляем в crontab задание
# Отправка в noip IP адреса 
*/10 *  *  *  *   root    /etc/scripts/myip.php
И теперь каждые 10 минут скрипт будет определять Ваш внешний IP адрес и отправлять его на NOIP.

Комментариев нет:

Отправить комментарий