Доступ к локальному вебсерверу из Интернета через динамический DNS

Задумал я показать-таки Интернету свой вебсервер. Не забавы для, скорее пользы ради — захотелось показывать клиентам процесс разработки их сайтов, так сказать, в реалтайме. Что уже было готово — стоит настроенный 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 — на страницу логина в роутер.

0

Добавить комментарий