telegamochka ([info]telegamochka) wrote,

Как сделать подключенный к Стриму домашний комп веб-сервером

Иногда у человека появляются странные желания - находясь вдали от дома, приглядывать за жилищем через глазок веб-камеры, работать в метро на тихо урчащем далеко-далеко домашнем компьютере или просто сэкономить на хостинге. Эти и другие ненормальные идеи легко претворить в жизнь, сделав домашний компьютер настоящим веб-сервером, к которому можно подключиться через интернет.

Сразу оговорюсь - я не стану затрагивать вопросов установки программ вроде Apache или вопросы безопасности (сделав компьютер доступным извне, мы увеличиваем число грозящих ему опасностей).

Мои исходные данные: компьютер под управлением Fedora 7, подключенный к нему через Ethernet ADSL-модем/роутер ASUS AAM 6020 BI и подключение к интернету через Стрим. Но, думаю, приведенная ниже информация может быть полезной и пользователям других операционных систем, модемов и провайдеров.

1. ВЫВОД КОМПЬЮТЕРА ЧЕРЕЗ ФАЙРВОЛ В "ОТКРЫТЫЙ ИНЕТ"

Зайдем в настройки роутера: Advanced -> LAN Clients и добавим домашний компьютер,введя его локальный IP, произвольное Hostname и MAC-адрес его сетевой карточки.

2. ПЕРЕАДРЕСАЦИЯ ПОРТОВ

Перейдем во вкладку Advanced -> Port Forwarding. Если бы я была подключена через какого-либо другого провайдера, то для вывода компьютера "в большой интернет" я могла бы выбрать категорию Servers и добавить (Add >) из списка готовых правил правило Web Server. Но в Стриме порт 80, использующийся протоколом HTTP, закрыт. Поэтому придется организовать обращение к серверу через другой, не перекрытый порт - например, 8880. Проверить, какие порты у вас открыты, а какие закрыты, можно на http://www.dyndns.com/support/tools/openport.html (этот сайт нам еще пригодится). Выберем категорию User и создадим новое правило: New. Назовем его, к примеру, HTTP8880 и пропишем следующие значения:
Protocol: TCP
Port Start: 8880
Port End: 8880
Port Map: 80

То есть обращения к портам, находящимся в диапазоне Port Start - Port End (в нашем случае это единственный порт 8880) будут перенаправляться на 80-й порт.

Порт 22, использующийся в для SSH-доступа в Стриме не перекрыт. К сожалению, готового правила для SSH-доступа на роутере не оказалось, поэтому если необходим SSH-доступ, создадим еще одно правило. Назовем его SSH и пропишем во всех трех окошках порт 22.

Для FTP-доступа также придется создать правило. Как и в случае с HTTP, 21-й порт перекрыт, поэтому создадим еще одно правило: FTP8881
Protocol: TCP
Port Start: 8881
Port End: 8881
Port Map: 21


Создав новые правила, добавим их: Add -> и сохраним изменения: Tools -> System Commands -> Save All.

3. ИМЯ ДЛЯ СЕРВЕРА

Теперь, после перенастройки портов, из интернета можно получить доступ к веб- и фтп-серверам, крутящимся на домашнем компе. Правда, придется указывать порт и внешний IP домашнего компа. Чтобы вместо IP указывать "человеческое" доменное имя (например, vasya.dyndns.org), воспользуемся бесплатным сервисом www.dyndns.com. Кстати, выяснить свой внешний IP можно опять же с помощью этого сайта: на checkip.dyndns.com. Зайдем на www.dyndns.com и заведем новый эккаунт. Теперь надо настроить эккаунт, перейдя на этом сайте по My Services -> Host Services и прописав в IP Address Ваш внешний IP. Узнать его можно как с помощью указанной выше ссылки checkip.dyndns.com, так и зайдя в меню роутера Status -> Connection Status.

Отныне к HTTP-серверу компьютера можно обращаться по vasya.dyndns.org:8880, а к FTP-серверу - по vasya.dyndns.org:8881. Вроде бы все хорошо, но есть еще одна проблема.

4. БОРЬБА С КОВАРНЫМ СТРИМОМ, ПОСТОЯННО МЕНЯЮЩИМ IP

Как правило, раз в сутки динамические IP клиентов Стрима принудительно меняются. DynDns позволяет привязать вечно меняющийся IP домашнего компа к доменному имени. Некоторые роутеры умеют работать с сервисом DynDns, и в них можно настроить автоматическое обновление dyndns-эккаунта при изменении вашего внешнего IP. Мой роутер таким трюкам оказался не обучен. Если роутер не может - пусть это делает компьютер. Скачаем с http://www.dyndns.com/support/clients/ одну из утилит. Для Линукса я выбрала inadyn. Будучи запущенной, эта утилита при смене внешнего IP будет обновлять его в Вашем dyndns-эккаунте. Есть там аналогичные утилиты и для других операционных систем. Но вернемся к inadyn. Скачав и распаковав архив с дистрибутивом утилиты, я открыла распаковавшийся файл readme.html и настроила утилиту в соответствии с приведенными в нем инструкциями:
- создала файл /etc/inadyn.conf, в который прописала 6 строк:
log_file /var/log/inadyn.log
username мой_логин_в_dyndns.com
password мой_пароль_в_dyndns.com
background
update_period 60000
alias vasya.dyndns.org

Далее скопируем утилиту inadyn в каталог /opt и под root'ом запустим:
# /opt/inadyn
И все! Проверить, что inadyb "сидит" в памяти можно командой
# ps -efH | grep inadyn

Чтобы не запускать все это великолепие каждый раз вручную, допишем в конец файла /etc/rc.local строку:
/opt/inadyn

5. URL БЕЗ ":8880"

Если веб-сервер нужен для персонального использования, описанных выше телодвижений вполне хватит. Но для публичного веб-сервера необходимость обращаться к vasya.dyndns.org:8880 вместо vasya.dyndns.org - не самый удобный вариант. Можно, например, где-нибудь захоститься по бесплатному или самому дешевому тарифу и разместить на хостинге страничку, которая будет переводить посетителя на vasya.dyndns.org:8880. Но можно воспользоваться еще одной услугой DynDns: My Services - > Add New Hostname. Создадим еще одно доменное имя, например, vasya.homelinux.org, но в качестве Service Type: вместо Host with IP address укажем WebHop Redirect и в появившемся поле Redirect URL пропишем http://vasya.dyndns.org:8880/. Сохраним изменения кнопкой Save Changes. Теперь при заходе на vasya.homelinux.org браузер будет автоматически переадресовываться на http://vasya.dyndns.org:8880/. Спасибо [info]self_perfection за совет по использованию WebHop Redirect :)
Tags: linux, Справочник

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    Your IP address will be recorded 

  • 43 comments

[info]fl64

January 18 2008, 21:28:24 UTC 4 years ago

как хорошо что qwerty этим не болеет :)

[info]telegamochka

January 18 2008, 23:36:07 UTC 4 years ago

Наверное, хорошо :) Но больше к Стриму у меня претензий нет - если первые 2 месяца моего подключения была пара сбоев, то сейчас - тьфу-тьфу-тьфу!- все работет довольно стабильно :)

Anonymous

January 19 2008, 09:38:54 UTC 4 years ago

Отлично!

Спасибо, Вам за подробное описание и труды!
Пойду опробую.
Еще раз Спасибо.

[info]telegamochka

January 19 2008, 09:48:49 UTC 4 years ago

Re: Отлично!

Не за что :) На самом деле я такие самодельные инструкции делаю в основном для себя - потому, что если во второй раз придется сделать то же самое, просто не буду помнить с чего начать. Если Вы Аноним из одного из предыдущих постингов, была бы благодарна хотя бы за небольшую информацию по аналогичным телодвижениям под Виндами :)

[info]darth_vasya

January 19 2008, 17:57:00 UTC 4 years ago

:)



http://lims007.livejournal.com/168029.html

[info]zzfi

January 19 2008, 23:40:48 UTC 4 years ago

А у себя на suse нашел ddclient, ну и не мудрствуя запустил его. И домен нашел к нему приличный: .homelinux.net

параметры похожи:

daemon=300 # check every 300 seconds
syslog=yes # log update msgs to syslog
mail-failure=root # mail failed update msgs to root
pid=/var/run/ddclient.pid # record PID in file.
ssl=yes # use ssl-support. Works with
# ssl-library
use=if, if=dsl0
login=:)
password=:)
wildcard=yes

protocol=dyndns2
server=members.dyndns.org
мойкомп.homelinux.net

Но я по большей части домой захожу по ssh

[info]telegamochka

January 22 2008, 06:32:18 UTC 4 years ago

Я тоже захожу по ssh, но так как я работаю с домашним компом со смартфона, приходится пользоваться FTP для загрузки на комп отредактированных исходников (мобильная PuTTY не умеет обмениваться файлами с сервером). По HTTP - скачиваю и устанавливаю откомпилированное приложение на телефон. Да и если ставить дома веб-камеры, HTTP тоже пригодится :) Кстати, как определить, будет ли web-камера работать под линуксом без танцев с бубном?

[info]zzfi

January 22 2008, 08:52:51 UTC 4 years ago

Тогда уж лучше настроить subversion - он ходит через HTTP/HTTPS.
Как говориться, заодно и контроль версий. Да и старый добрый cvs работает поверх ssh.

[info]telegamochka

January 22 2008, 09:51:03 UTC 4 years ago

На линукс-сервере, допустим, я его настрою. Но как с ним работать со смартфона? Через браузер? Совершенно не представляю, как в этом случае можно загружать исходники со смарта на сервер - кроме как копируя их в текстовом поле ввода браузера. А как быть с бинарными файлами? Да и если удастся загрузить файл на сервер "штатным компьютерным способом" (заодно проверю, поддерживают ли это хоть какие-то браузеры, Опера, кажется, поддерживала) - пропадает одно из удобств: придется вручную следить за обновлениями файлов и скидывать их по одному... Или я что-то не понимаю, и есть более красивое решение? Вариант - написать на том же Питоне клиентскую утилиту для subversion...

[info]zzfi

January 22 2008, 12:26:42 UTC 4 years ago

Лучший вариант - утилита-клиент для svn, вполне может уже существовать.
Есть также web-interface-ы для svn, в нем ты файл upload-шь (не через тесктовые поля!!!). Вполне может быть можно сразу пачку. По крайне мере, для svn это характерно.

[info]zzfi

January 22 2008, 12:35:52 UTC 4 years ago

Вот например: http://pcwin.com/Internet/Phone_Guardian/index.htm

Ну и тут глянь, может что подойдет: http://svnkit.com/

[info]telegamochka

January 22 2008, 12:49:05 UTC 4 years ago

Вообще-то, Phone Guardian - это сторожевая программа, аналогичная Security Genius, которым я пользуюсь. Можно было бы попробовать разобраться с протоколом работы SVN и сделать клиент для мобильного.

[info]zzfi

January 22 2008, 14:29:04 UTC 4 years ago

Да, это я ошибся. На страничке было слово svn :)
Там в списке есть Syncro SVN Client, он как я понял java, может его удасться запустить?

[info]telegamochka

January 22 2008, 14:42:35 UTC 4 years ago

"Большая Ява" J2EE/J2SE и ее мобильная версия J2ME - две большие и категорически несовместимые разницы. Так что Standalone Java да еще и GUI - точно не подойдет :)

[info]zzfi

January 22 2008, 14:47:29 UTC 4 years ago

Да, я знаю, так было, но вроде теперь уже ставят вместо J2ME - J2SE, сан убил уже J2ME - сказал что современных ресурсов телефона хватает на J2SE. Может и заработает. Разве что пересобрать классы

[info]zzfi

4 years ago

[info]zzfi

January 22 2008, 14:33:02 UTC 4 years ago

С протоколом разбираться не надо!!! Уже есть:

Subversion - Python, Perl, Java, and Ruby bindings to Subversion API analogous to the core C API

[info]zzfi

January 22 2008, 14:34:05 UTC 4 years ago

А в чём ты трудишься на малютке? может там есть плагин для svn или cvs??

[info]zzfi

4 years ago

[info]zzfi

4 years ago

[info]zzfi

4 years ago

[info]zzfi

4 years ago

[info]zzfi

4 years ago

[info]zzfi

4 years ago

[info]zzfi

4 years ago

[info]telegamochka

January 22 2008, 14:43:57 UTC 4 years ago

"Большой" и "мобильный" питоны также, мягко говоря, не совсем совместимы. Но адаптировать питоньи исходники, видимо, реально.

[info]telegamochka

January 22 2008, 06:53:33 UTC 4 years ago

Кстати, какой полный адрес к ddclient?

[info]zzfi

January 22 2008, 08:48:40 UTC 4 years ago

В смысле? /usr/sbin/ddclient ???

[info]telegamochka

January 22 2008, 09:45:41 UTC 4 years ago

Да, я именно об этом спрашивала :) У меня его, кажется, нет, нашла только /sbin/dhclient - но, видимо, это совсем не то... Приду домой - посмотрю, есть ли такой зверь в Менеджере Пакетов.

[info]zzfi

January 22 2008, 10:34:25 UTC 4 years ago

да, dhclient это dhcp client
А у тебя suse?

[info]telegamochka

January 22 2008, 10:49:47 UTC 4 years ago

Да - в смысле "да, это он самый" или "да, это совсем не то"? У меня не SUSE, у меня Fedora 7 :)

[info]zzfi

January 22 2008, 11:10:39 UTC 4 years ago

В смысле - совсем другое.
У тебя тоже должен быть ddclient под рукой:

http://fr2.rpmfind.net//linux/RPM/fedora/7/i386/ddclient-3.7.1-1.fc7.noarch.html

[info]telegamochka

January 22 2008, 11:22:55 UTC 4 years ago

Спасибо :)
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…