Можно ли настроить систему, чтобы сайты, расположенные на локальном компьютере, были доступны всем пользователям локальной сети, к которой я подключен, или же даже из Интернета?..
Проекты, заведенные в Денвере, по умолчанию не доступны из
локальной сети. Это достигается благодаря тому, что все виртуальные хосты
имеют IP-адрес 127.0.0.1
, всегда обозначающий "текущая
локальная машина".
Тем не менее, все же существует возможность назначить тому или иному виртуальному хосту "внешний" IP-адрес, доступный из вашей локальной сети или даже Интернета (если компьютер имеет постоянный IP-адрес в Интернете).
Для начала следует узнать, какой IP-адрес назначен вам в локальной сети или Интернете. Проще всего это сделать, открыв Командную строку Windows и набрав там:
ipconfig
Вы увидите что-то типа следующего:
Настройка протокола IP для Windows WiFi - Ethernet адаптер: DNS-суффикс этого подключения . . : IP-адрес . . . . . . . . . . . . : 192.168.0.49 Маска подсети . . . . . . . . . . : 255.255.255.0 Основной шлюз . . . . . . . . . . : 192.168.0.1
В данном случае внешний IP-адрес машины в локальной сети —
192.168.0.49
. В списке могут быть перечислены сразу несколько
сетевых интерфейсов (если ваш компьютер оборудован несколькими сетевыми
картами или беспроводными устройствами). В этом случае вам нужно
определить, какой из интерфейсов является внешним, доступным из локальной
сети. (IP-адреса, начинающиеся с 192.168
или 10
,
зарезервированы только для доступа из локальной сети, но не из Интернета.
Т.е. они являются "приватными".)
В большинстве Windows-систем встроенный (либо установленный вами вручную) межсетевой экран или антивирус блокируют подключения с внешних машин к текущей. Это сделано по соображениям безопасности. Конечно, в случае, если вы открываете сайт наружу, эту блокировку следует отключить, в противном случае сайт никто не увидит.
Наша цель — разрешить Windows подключения к порту 80 (протокол HTTP)
вашего IP-адреса 192.168.0.49
, на котором будет "висеть"
Apache. Приведем инструкции, как это сделать в Windows XP:
Если вы устанавливали свой собственный брандмауэр или антивирус, то, конечно, вам придется обратиться к их документации.
Предположим, ваш IP-адрес равен 192.168.0.49
, как в
примере выше. Самый простой способ заставить Денвер открывать по адресу
http://192.168.0.49
определенный сайт — это расположить
документы сайта в директории:
/home/192.168.0.49/www
Да, имя директории содержит точки! Не забудьте также перезапустить Денвер.
Более того: если ваш провайдер выдал вам не только IP-адрес, но также и
связанное с ним доменное имя, то сайт будет сразу же доступен по этому
доменному имени. В случае статического IP-адреса домен выдается почти
всегда, вам лишь нужно узнать его у провайдера. Например, если ваше
доменное имя равно abcd.ints.ru
(провайдер Корвет-Телеком
НЭКСТ), то сайт будет доступен по адресу http://abcd.ints.ru
.
Если у вас уже имеется виртуальный хост в Денвере и вы не хотите
переименовывать его директорию документов, то вы можете назначить сайту
свой собственный IP-адрес и сделать его доступным снаружи. Предположим,
что ваш хост хранится в директории /home/mysupersite/www
.
Чтобы назначить ему IP-адрес 192.168.0.49
, необходимо создать
файл /home/mysupersite/.htaccess
и добавить в него
строчки:
## Файл /home/mysupersite/.htaccess ## Укажите здесь ваш внешний IP-адрес, а не 192.168.0.49! # dnwr_ip 192.168.0.49
/home/custom/.htaccess
.
Перезапустите Денвер. Проверьте, что по адресу
http://192.168.0.49
(вместо 192.168.0.49
,
конечно, нужно подставить ваш собственный IP-адрес) открывается ваш сайт
/home/mysupersite/www
.
Напомним еще раз, что Денвер — это не законченный и надежный Web-сервер, это — всего лишь инструмент, позволяющий отлаживать (тестировать) сайты, «не выходя из дома». Любая попытка использовать его в других целях может быть небезопасна.
Вообще, настроить можно все, что угодно, другое дело — нужно
ли это. Помните, что открытый для окружающего мира Web-сервер представляет
потенциальную уязвимость в защите вашей машины. Например, злоумышленник
может проникнуть через не до конца отлаженный скрипт. Т.к. Денвер
запускается с правами Администратора (то есть, с максимальными правами в
системе), то любой скрипт, даже самый маленький, может делать все, что ему
заблагорассудится. Давайте предположим, что вы написали вроде бы
безобидный скрипт test.pl
, который делает следующее:
#!/usr/bin/perl -w use CGI::WebIn; use CGI::WebOut; Header("Content-type: text/plain"); open(F, $IN) or die "Could not open\n"; while(<F>) { print }
Программа, казалось бы, просто печатает содержимое файла, указанного в
параметре fname
. Например,
http://localhost/cgi/test.pl?fname=test.pl
напечатает
исходный код программы. Однако нетрудно заметить, что вызов
open
в таком виде небезопасен. Например, зайдя по адресу
/cgi/test.pl?fname=|dеl+/s/q+c:\windows
, в программе будет
выполнено:
open(F, "|dеl /s/q c:\\windows") or ...
Это приведет к немедленному уничтожению всей директории Windows!
Возможно, вы скажете, что localhost
— на то и
localhost
, чтобы работать лишь с текущей машины. Если вы
открыли доступ наружу по инструкции, приведенной выше, то все именно так.
Тем не менее, в случае неправильной настройки Apache можно проникнуть на
localhost
и извне (если сервер открыт). Это делается очень
просто:
C:/> telnet server.ru 80 GET /cgi/test.pl?fname=|dеl+/s/q+c:\windows HTTP/1.1 Host: localhost здесь нужно просто нажать Enter
Вывод: если у вас нет значительного опыта в администрировании серверов, установка Web-сервера, доступного извне, может быть опасной. Это особенно относится к счастливым обладателям выделенных каналов в Интернет. Одно неверное движение, и однажды утром вы проснетесь с только что отформатированным жестким диском (в лучшем случае).