воскресенье, 30 октября 2011 г.

Как развернуть сайт на динамическом IP

Исходные данные:
- ADSL Модем Zyxel P660RU2EE в режиме роутера
- IP-адрес выдаётся динамически интернет-провайдером. При этом он доступен из интернета, т.е. является настоящим участником пула мировых IP-адресов, а не чем-либо типа 192.168.x.x, обычно выдаваемым компьютерам в локальных сетях.

Хочется:
Развернуть вебсайт у себя дома

Предупреждение:
С точки зрения безопасности решение хостить сайт у себя дома таит в себе повышенную угрозу сетевой атаки (для отражения которой требуется хорошее знание административных возможностей ОС/веб-сервера/антивируса/файервола).

Предлагаемое решение:
1) DNS-имя, которое будет автоматически настраиваться под наш динамический IP-адрес
Для этого достаточно зарегистрироваться на службе http://dyndns.org
Форма добавления нового DNS имени достаточно проста
https://www.dyndns.com/account/services/hosts/add.html
Хотя они и спрашивают текущий IP-адрес, это всего лишь формальность.
Service type = Host with IP address
Выбираем желаемое имя, и подтверждаем регистрацию.

2) На модеме настраиваем использование службы DynDNS в автомат. режиме - таким образом как только он присоединится к интернету, он получит IP-адрес и вышлет его DynDNS службе, чтобы она связала адрес из шага1 с новым IP.

3) Разрешаем модему пускать Web traffic from Wan to Lan (по умолчанию запрещено):


4) Настраиваем переброс портов на маршрутизаторе. Дело в том что модем в режиме маршрутизатора (router) является самостоятельным IP-устройством (непрозрачным), а это значит что если мы хотим что либо передать извне на локальный компьютер, необходимо это явно настроить.
Будем считать что я хочу хостить свой вебсайт для этого тестового примера на порту 8444



5) Для того, у кого включено DHCP (я эту службу отключаю, так как в конфигурации 1 комп - 1 модем считаю её бессмысленной), необходимо явно задать жёсткую связь между MAC-адресом своей сетевой карты и IP-адресом компьютера, указанным на п.4:

6) Установка Web-сервера. Пусть для примера это будет IIS хотя для сути примера не важно. Важно только настроить, что сайт который мы будем хостить, будет доступен по порту 8444 (который выбран был на п.4)

7) Создание hello world страницы ) Справитесь?

8) Разрешение доступа к веб-сайту в фаерволле. Если у вас Windows7 и установлен именно фаерволл по умолчанию, это делается так:
Пуск -> Панель Управления -> Брандмауэр Windows -> Дополнительные параметры -> Правила для входящих подключений -> Создать правило -> Для порта -> TCP 8444

9) С этого момента если ваш веб-сервер с Hello World страничкой запущен, на других компьютерах вы можете увидеть его по адресу

<ваше имя сайта>.dyndns.org:8444/helloWorld.html

10) Но это ещё не всё! Хотелось бы иметь возможность открывать сайт локально по этому же адресу. Казалось бы, в чём сложность, вводим тот же URL и.... Подключение невозможно.

Решается эта проблема довольно просто - включением фичи "Обратная петля NAT" в модеме.

Сайт http://zyxel.ru/kb/1100  сообщает: "Обратная петля NAT позволяет пользователям сегмента LAN получить доступ к локальным серверам (доступным из Интернета) через внешний IP-адрес (WAN IP) или при использовании функции Dynamic DNS (DynDNS) через доменное имя."
Итак через командную строку управления модемом вводим: ip nat loopback on

и наконец-то браузер нас пускает на свой Сайт!

11) После перезагрузки модема обратная петля станет недоступной. Чтобы сделать её
настройкой по умолчанию, необходимо через sys edit autoexec.net прописать её в автозагрузку
модема