Web Server на динамическом IP-адресе
25.01.2005 | khomya

Многие из тех немногих, имеющих доступ к Internet, но не имеющих статического IP адреса, выделяемого провайдером, сталкивались с проблемой: как сделать общественный доступ к своему Web серверу. Каждый раз, когда вы выходите в Internet, вашему компьютеру назначается новый IP адрес, и нет никакой возможности донести его до общественности. Вашему вниманию предлагается простой выход из этой ситуации:

Регистрируемся где нибудь на бесплатном Web hosting’е, предоставляющем доступ по FTP к файлам странички. Таких в наше время немало, например: chat.ru, narod.ru, и т.д…

Пишем такой простенький скрипт:

#!/usr/bin/perl -w # путь к Perl должен соответствовать установленному на системе.

use Net::FTP;
use strict;

my $HOST = ‘ftp.chat.ru’; # здесь FTP адрес бесплатного хостинга (БХ)
my $USER = ‘user123′; # имя пользователя на БХ
my $PASS = ‘qwerty’; # пароль на БХ
my $INTERFACE = ‘ppp0′; # имя интерфейса через который вы подсоединяетесь к интернету
# (обычно это: ppp0)

if(@ARGV != 1 || $ARGV[0] ne «start» || $ARGV[0] ne «stop») {
die(«USAGE: $0 [stop|start] «);
}

my $IP = `/sbin/ifconfig $INTERFACE | grep inet` # обратите внимание на обратные кавычкм

if($IP =~ /^[^d]+(d+).(d+).(d+).(d+)/) {
$IP = «$1.$2.$3.$4″;
open(IP_FILE, «>/tmp/index.html») or die($!);
if($ARGV[0] eq «start») {
print IP_FILE

EOF1
}
else { # if($ARGV[0] eq «stop»)
print IP_FILE

Hi, currently this host is down. Please retry later.

EOF2
}
close(IP_FILE) or die($!);

my $ftp = Net::FTP->new($HOST, Debug => 0) or die($!);
$ftp->login($USER, $PASS) or die($!);
$ftp->put(«/tmp/index.html», «public_html/index.html»); # второй аргумент – путь к index.html
# на сервере
$ftp->quit();
unlink(«/tmp/index.html»);
}

Perl, а также модуль Net::FTP должны присутствовать на системе. Установить Net::FTP можно с помощью:

# perl -MCPAN -e shell

cpan> install Net::FTP

Кладем этот скрипт в /etc/init.d/sendip, делаем:
chmod 700 /etc/init.d/sendip
ln -s /etc/rc5.d/S98sendip /etc/init.d/sendip

Это – настройки для Linux, а для FreeBSD каталогом для загрузочных скриптов обычно является:
/usr/local/etc/rc.d

Обратите внимание: PPP соединение к моменту запуска этого скрипта должно быть уже установлено. Это, надеюсь, не проблема для имеющих ADSL …

Что происходит, когда мы включаем компьютер:

Открывается PPP соединение …. [OK]
Вызывается наш скрипт, с параметром «start». Файл index.html, с содержанием настроек переадресации на ваш IP, будет отослан на сервер. И тогда при обращении к http://user123.chat.ru вы будете перенаправлены на Web сервер вашего компютера.

Что происходит при выключении компьютера:

Вызывается наш скрипт, с параметром «stop». Тогда, на сервер отсылается index.html, содержащий уведомление о том, что ваш компьютер временно недоступен.

Вот и все, а если немного доработать, можно сделать redirect и на FTP.

Автор: Михаил Спектор

Просмотров новости: 3 501  <>


-->