Задумал я показать-таки Интернету свой вебсервер. Не забавы для, скорее пользы ради — захотелось показывать клиентам процесс разработки их сайтов, так сказать, в реалтайме. Что уже было готово — стоит настроенный Apache2, Интернет я получаю из ADSL модема, в котором PPPoE поднимается с роутера D-Link DIR-320, с прошивкой Олега (который становится Asus WL-500g). Апач настроен так, что принимает соединения со всех интерфейсов. IP-адрес получаю динамический от Ростелекома.Можно, конечно, настроить проброс без лишних телодвижений, но не будешь же каждый раз давать клиенту новый айпишник, правильно? Потому мы пойдем путем джедайским. Ага.
Перво-наперво настроим наш роутер.
Тут следует заметить, что если нажимать при настройке Apply — нужно будет в телнетомзайти на роутер и сделать ему:
nvram commit reboot
Чтобы так не изгаляться — нажимаем Finish и Save & Reboot. Так сказать, малая кровь… Так вот, открываем вебморду роутера и идем NAT Setting -> Virtual Server Чтобы роутер перенаправлял нас на интерфейс с Апачем — надо его об этом попросить: ставим Enable Virtual Server? в Yes заполняем поля (можно в списке Enable Virtual Server? выбрать HTTPи заполнить недостающие поля)
- Port Range80 [это какой порт будет слушать роутер из Интернета]
- Local IP192.168.0.123 [IP-адрес интерфейса, который слушает Apache]
- Local Port80 [этот слушает Apache (как правило, 80)]
- ProtocolTCP [HTTP — это TCP]
- Protocol No. [я оставил пустым]
- DescriptionАбракадабра [описание правила, можно писать что угодно]
и нажимаем кнопку Add Сохраняем и движемся дальше. Переходим в Internet Firewall -> Basic Config и там
- включаем Firewall (Enable Firewall? — Yes);
- включаем защиту от DoS атак (Enable DoS protection? — Yes);
- я еще включил логирование (Logged packets type:Both);
- переключаем вход в админку роутера на другой порт Enable Web Access from WAN? — Yes (в поле Port of Web Access from WAN вводим номер порта. Проявите фантазию)
- включаем защиту от подбора пароля к SSH (Enable Brute Force Protection for SSH Server: — Yes)
- включаем защиту от подбора пароля к FTP (Enable Brute Force Protection for FTP Server: — Yes)
- Hitcount: — сколько раз можно ввести пароль неправильно
- Period, seconds: — на сколько секунд забанить если достиг вышеуказанного количества неправильных попыток
Сохраняем. Перезагружаем роутер и заходим на него примерно так: http://xxx.xxx.xxx.xxx:PORT Например, провайдер дал нам адрес 78.78.78.78 и в поле Port of Web Access from WAN мы оставили 8080, то получится так: http://78.78.78.78:8080 Роутер должен спросить логин и пароль на админку. Если этого не произошло, значит смотрим логи (Status & Log -> System Log) и думаем. Попробуйте, кстати, зайти на роутер с другого компьютера не из вашей сети. Если зайти по адресу http://78.78.78.78 — мы получим ответ нашего Апача («It works!» или какой там у вас сайт лежит в /srv/www/htdocs).
Так. Роутер настроен, мы можем залогиниться в него из Интернета, указав порт, а если ввести IP — заходим на Апач, вроде все пучком. Теперь надо прикрутить к этому добру возможность заходить по URL.
Настраиваем DynDNS
Постольку поскольку IP у нас динамический, то придется воспользоваться динамическим DNS. Как это работает: регистрируемся в сервисе DynDNS, нам дают доменное имя третьего уровня (сами выбираем), устанавливаем клиент, который через определенный промежуток времени сообщает сервису, что у нас сменился адрес, тот это дело учитывает и вносит изменения в свой список кого куда перенаправлять. Вкратце так.
Теперь о самой регистрации. Я расскажу про no-ip.com, ибо он мне просто первый попался, у которого есть бесплатный тариф 🙂
Для тех, у кого с буржуйскими наречиями еще хуже, чем у меня — постараюсь разжевать подробнее.
Идем на http://www.no-ip.com/ Жмем зеленую кнопку Sign Up Now
Регистрация особо ничем не отличается от любой другой, поля Username, Password, Email, думаю, объяснять не надо Есть фишка в поле Hostname. Бесплатно можно получить домен в зоне .no-ip.org Но мы же сюда не за пафосом пришли, правда?
Вводим хост (пусть будет mytestdemoserver). Чтобы узнать, разрешат ли нам его зарегистрировать — смотрим значок галочки (если да) или крестика (если нет) над полем выбора домена второго уровня. Если попытаться выбрать другие (Enhanced) имена — в конце формы регистрации есть кнопка «Sign Up» — она окажется недоступной, на нее нельзя будет нажать. Это верный признак того, что халявы не видать, придутся выбрать бесплатный (Free) домен.
Таблица внизу гласит о следующем (что нам дадут):
Сколько доменов мы можем подключить: 1
Сколько хостов можно подключить: 3
После нажатия на «Sign Up» откроется страница с надписью что-то типа «Молодец! Дуй на почту, пляши! Письмо!».
Нам придет короткое письмо с единственной ссылкой для активации аккаунта. Переходим по ссылке и в открывшейся странице сразу снимаем обе галки снизу (зачем нам их письма раз-два в месяц, если мы все равно не понимаем) и жмем на круглый рыжий крест сверху.
Логинимся. Теперь мы в личном кабинете.
Надписи под картинками сулят нам следующее:
- Manage Domains — Управление доменами
- Add Domain — Добавить домен
- Refer Friend — Пригласить друзей
- Add a Host — Добавить хост
- Manage Hosts — Управление хостами
В принципе, нам здесь больше ничего не надо. Кроме… Ижем по ссылке http://www.no-ip.com/downloads.php и качаем клиента (большая рыжая кнопка «Download Now«). Для убунтоидов есть специальный мануал тут. Не потому, что они какие-то другие, а потому что для них есть все в репозитории и ставится через apt-get. Остальные — качаем архив. Можно сделать так (все под рутом):
cd /usr/local/src wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz tar xzf noip-duc-linux.tar.gz cd noip-2.1.9-1 make make install
Если видим «make not found» or «missing gcc» — устанавливаем make и/или gcc. В любом случае, будут следующие вопросы:
- Enter your username or email address (Введите имя пользователя или электромыло с которым регистрировались)
- Enter your password (Пароль ессна, с которым регистрировались)
- Leave 30 as the default for update interval (Оставьте как есть если надо интервал обновления по умолчанию. Я поставил 10 — это как часто (минуты) будет отправляться свежий айпишник серверу)
- Enter in a host name that exists in your account (do not leave this blank) (введите здесь имя хоста в аккаунте, не оставляйте это поле пустым)
- Enter your network device name (example: eth0) (укажите сетевую карту, с которой и на которую будут ломиться запросы, например, eth0)
- Do you wish to update all hosts (Будьте осторожны в этом пункте, тут спрашивают «Хотите ли вы обновлять ВСЕ хосты?» и если ответить неправильно — это может оказать влияние на имена хостов в учетной записи, которые указаны в других местах)
Теперь, когда будущие надписи стали понятны, можно приступить к конфигурированию этого добра (клиента). из-под рута пишем:
/usr/local/bin/noip2 -C
отвечаем на вопросы и запускаем демон:
/usr/local/bin/noip2
Теперь если ввести в браузере (с любого компьютера) http://mytestdemoserver.no-ip.org — мы попадем на страницу из папки /srv/www/htdocs
А если http://mytestdemoserver.no-ip.org:8080 — на страницу логина в роутер.