img src https habrastorage org webt vd mt b_ vdmtb_0k3m36aqudmosa kfzb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<img src="https://habrastorage.org/webt/vd/mt/b_/vdmtb_0k3m36aqudmosakfzb9o8.jpeg" />
"Подкроватный" хостинг — жаргонное название сервера, расположенного в обычной жилой квартире и подключенного к домашнему интернет-каналу. На таких серверах обычно размещался публичный FTP-сервер, домашняя страничка владельца и иногда даже целый хостинг для других проектов. Явление было распространено в ранние времена появления доступного домашнего интернета по выделенному каналу, когда аренда выделенного сервера в дата-центре была слишком дорогой, а виртуальные сервера еще не были распространены и достаточно удобны.
Чаще всего для "подкроватного" сервера выделялся старый компьютер, в который устанавливались все найденные жесткие диски. Он также мог выполнять роль домашнего роутера и файрвола. Такой сервер обязательно был дома у каждого уважающего себя сотрудника телекома.
С появлением доступных облачных сервисов домашние сервера стали менее популярны, и сегодня максимум, что можно встретить в жилых квартирах — это NAS для хранения фотоальбомов, фильмов и бекапов.
В статье рассматриваются курьезные случаи, связанные с домашними серверами, и проблемы, с которыми сталкиваются их администраторы. Посмотрим, как это явление выглядит в наши дни и выберем, что интересного можно захостить на своем подкроватном сервере сегодня.
<img width="400" align="center" src="https://habrastorage.org/webt/r2/vg/nq/r2vgnqutwwydpywax3cs0uixnc8.jpeg" />
<font color="9999999"><sup>Серверы домовой сети в г. Новая Каховка. Фото с сайт nag.ru</sup></font>
<cut />
<h2>Правильный IP-адрес</h2>
<img width="200" align="right" src="https://habrastorage.org/webt/dx/-r/mi/dx-rmifmpx6upilswgokdeb-ohs.png" />Главным требованием для домашнего сервера было наличие реального, то есть маршрутизируемого из интернета IP-адреса. Многие провайдеры не предоставляли такой услуги для физических лиц, и добывать его приходилось по особенной договоренности. Часто провайдер требовал заключить отдельный договор на предоставление выделенного IP. Иногда даже эта процедура предусматривала создание отдельного NIC Handle для владельца, в результате чего его ФИО и домашний адрес были доступны прямо с помощью команды Whois. Тут уж приходилось быть осторожным при спорах в интернете, так как шутка про "вычислить по IP" переставала быть шуткой. Кстати, не так давно был скандал <a href="https://medium.com/@itsorm/%D0%B1%D0%B5%D1%81%D1%81%D0%BC%D1%8B%D1%81%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D0%B8-%D0%B1%D0%B5%D1%81%D0%BF%D0%BE%D1%89%D0%B0%D0%B4%D0%BD%D1%8B%D0%B9-%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9-bigbounty-%D0%B8%D0%BB%D0%B8-%D0%BE%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BA-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC-%D0%B8%D0%B7-%D0%B4%D0%B2%D1%83%D1%85%D1%82%D1%8B%D1%81%D1%8F%D1%87%D0%BD%D1%8B%D1%85-d9e0e8a7601e">с провайдером Акадо</a>, который решил размещать в whois персональные данные всех своих клиентов.
<h3>Постоянный IP-адрес vs DynDNS</h3>
Хорошо, если удавалось получить постоянный IP-адрес — тогда можно было легко направить все доменные имена на него и забыть, но это удавалось не всегда. Многие крупные ADSL провайдеры федерального масштаба выдавали клиентам реальный IP-адрес только на время жизни сессии, то есть он мог измениться либо раз в сутки, либо в случае перезагрузки модема или обрыва связи. В таком случае приходили на помощь сервисы Dyn (dynamic) DNS. Самый популярный сервис <a href="https://dyn.com/dns/">Dyn.com</a>, долгое время бывший бесплатным, давал возможность получить поддомен в зоне <b>*.dyndns.org</b>, который мог быстро обновляться при смене IP-адреса. Специальный скрипт на стороне клиента постоянно стучался на сервер DynDNS, и, в случае если его исходящий адрес изменился, новый адрес сразу устанавливался в А-запись поддомена.
<h2>Закрытые порты и запрещенные протоколы</h2>
<img align="left" width="200" src="https://habrastorage.org/webt/hg/ri/s4/hgris42luajx_unmdukje137xny.png" /> Многие провайдеры, особенно крупные ADSL, были против того, чтобы пользователи хостили на свои адресах какие-либо публичные сервисы, поэтому запрещали входящие соединения на популярные порты вроде HTTP. Известны случаи, когда провайдеры блокировали порты игровых серверов, вроде Counter-Strike и Half-Life. Эта практика популярна до сих пор, из-за чего иногда вызывает проблемы. Например, почти все провайдеры блокируют порты RPC и NetBios Windows (135-139 и 445), чтобы предотвратить распространение вирусов, а также часто входящие порты для протокола Email SMTP, POP3, IMAP.
Провайдеры, предоставляющие кроме интернета услуги IP-телефонии любят блокировать порты протокола SIP, чтобы таким образом заставить клиентов использовать только их услуги телефонии.
<h2>PTR и отправка почты</h2>
Хостинг собственного почтового сервера это отдельная большая тема. Держать у себя под кроватью личный почтовый сервер, который полностью вам подконтролен — идея очень соблазнительная. Но реализация на практике оказывалась не всегда возможной. Большинство диапазонов IP-адресов домашних провайдеров находятся в перманентом блоке в спам-листах (<a href="https://www.spamhaus.org/pbl/">Policy Block List</a>), поэтому почтовые сервера просто отказываются принимать входящие соединения на SMTP с IP-адресов домашних провайдеров. В результате отправить письмо с такого сервера было практически невозможно.
Кроме этого для успешной отправки почты требовалось установить корректную PTR-запись на IP-адрес, то есть обратное преобразование IP-адреса в доменное имя. Подавляющее большинство провайдеров соглашалось на это только при особой договоренности или при заключении отдельного договора.
<h2>Ищем подкроватные сервера соседей</h2>
Используя PTR записи, можем посмотреть, кто из наших соседей по IP-адресам договорился об установке особой DNS-записи для своего IP. Для этого возьмем наш домашний IP-адрес, выполним для него команду <b>whois</b>, и получим диапазон адресов, которые провайдер выдает клиентам. Таких диапазонов может быть много, но для эксперимента проверим один.
В нашем случае это провайдер Онлайм (Ростелеком). Заходим на <a href="http://2ip.ru">2ip.ru</a> и получаем наше IP адрес:
<img src="https://habrastorage.org/webt/gq/xz/r1/gqxzr1hciokb_-iyrtiprgtvbow.png" />
<i>Кстати, Онлайм один из тех провайдеров, который выдает клиентам постоянный IP всегда, даже без подключенной услуги выделенного IP-адреса. При этом адрес может не изменяться месяцами.</i>
Отрезолвим весь диапазон адресов 95.84.192.0/18 (около 16 тысяч адресов) с помощью nmap. Опция <b>-sL</b> по сути не выполняет активного сканирования хостов, а только посылает DNS-запросы, так что в результатах мы увидим только строчки, содержащие домен привязанный к IP-адресу.
<source>
$ nmap -sL -vvv 95.84.192.0/18
......
Nmap scan report for broadband-95-84-195-131.ip.moscow.rt.ru (95.84.195.131)
Nmap scan report for broadband-95-84-195-132.ip.moscow.rt.ru (95.84.195.132)
Nmap scan report for broadband-95-84-195-133.ip.moscow.rt.ru (95.84.195.133)
Nmap scan report for broadband-95-84-195-134.ip.moscow.rt.ru (95.84.195.134)
Nmap scan report for broadband-95-84-195-135.ip.moscow.rt.ru (95.84.195.135)
Nmap scan report for mx2.merpassa.ru (95.84.195.136)
Nmap scan report for broadband-95-84-195-137.ip.moscow.rt.ru (95.84.195.137)
Nmap scan report for broadband-95-84-195-138.ip.moscow.rt.ru (95.84.195.138)
Nmap scan report for broadband-95-84-195-139.ip.moscow.rt.ru (95.84.195.139)
Nmap scan report for broadband-95-84-195-140.ip.moscow.rt.ru (95.84.195.140)
Nmap scan report for broadband-95-84-195-141.ip.moscow.rt.ru (95.84.195.141)
Nmap scan report for broadband-95-84-195-142.ip.moscow.rt.ru (95.84.195.142)
Nmap scan report for broadband-95-84-195-143.ip.moscow.rt.ru (95.84.195.143)
Nmap scan report for broadband-95-84-195-144.ip.moscow.rt.ru (95.84.195.144)
.....
</source>
Почти все адреса имеют стандартную PTR запись вида <b>broadband-адрес.ip.moscow.rt.ru</b> кроме пары штук, среди которых <b>mx2.merpassa.ru</b>. Судя по поддомену mx, это почтовый сервер (mail exchange). Попробуем проверить этот адрес в сервисе <a href="https://www.spamhaus.org/query/ip/95.84.195.136">SpamHaus</a>
<img width="500" src="https://habrastorage.org/webt/ix/yq/py/ixyqpy4ey5yoleavwpmdb10gxvc.png" />
Видно, что весь диапазон IP находится в перманентном блок-листе, и письма, отправленные с этого сервера, будут крайне редко доходить до адресата. Учитывайте это при выборе сервера для исходящей почты.
<blockquote>
Держать почтовый сервер в IP-диапазоне домашнего провайдера это всегда плохая идея. Такой сервер будет иметь проблемы с отправкой и получением почты. Имейте это в виду, если ваш системный администратор предлагает развернуть почтовый сервер прямо на офисном IP-адресе.
Используйте либо настоящий хостинг, либо email-сервис. Так вам придется реже звонить, чтобы уточнить дошли ли ваши письма.
</blockquote>
<h2>Хостинг на WiFi-роутере</h2>
С появлением одноплатных компьютеров вроде Raspberry Pi никого не удивишь сайтом, запущенным на устройстве размером с пачку сигарет, но еще до появления Raspberry Pi энтузиасты запускали домашние страницы прямо на WiFi роутере!
<img width="500" align="center" src="https://habrastorage.org/webt/_3/lr/5h/_3lr5h2njrazyahia_kzddtfd6a.png" />
<font color="9999999"><sup>Легендарный роутер WRT54G, с которого начался проект OpenWRT в 2004 году</sup></font>
Роутер Linksys WRT54G, с которого начался проект OpenWRT не имел USB портов, однако умельцы нашли в нем распаянные пины GPIO, которые можно было использовать как SPI. Так появился мод, добавляющий в устройство SD-карту. Это открывало огромную свободу для творчества. Можно было даже собрать целый PHP! Я лично помню, как почти не умея паять, припаивал SD-карту к этому роутеру. Позже уже в роутерах появятся USB-порты и можно будет просто вставить флешку.
<blockquote>Раньше в интернете было сразу несколько проектов, которые были целиком запущены на домашнем WiFi роутере, об этом будет приписка внизу. К сожалению, мне не удалось найти ни одного живого сайта. Возможно, вы знаете такие?
</blockquote>
<h2>Серверные шкафы из столиков IKEA</h2>
<img align="center" width="500" src="https://habrastorage.org/webt/_k/xl/hw/_kxlhwt7ivp4fkoh8ggctqhd3ik.png" />
Однажды кто-то обнаружил, что популярный журнальный столик из IKEA под названием Lack отлично подходит в качестве стойки для стандартных 19-дюймовых серверов. Из-за цены в $9 этот столик стал очень популярен для создания домашних дата-центров. Такой способ монтажа назвали <a href="https://wiki.eth0.nl/index.php/Lackrack">Lack Rack</a>.
<img align="center" width="500" src="https://habrastorage.org/webt/5g/mv/je/5gmvjeegsuignuewcc-aww9c1ni.png" />
<font color="9999999"><sup>Столик Икеа Лакк идеально подходит вместо серверного шкафа</sup></font>
Столики можно было устанавливать один на другой и строить настоящие сервервные шкафы. К сожалению, из-за хрупкого ЛДСП от тяжелых серверов столики разваливались. Для надежности их укрепляли металлическими уголками.
<img src="https://habrastorage.org/webt/lc/mk/_g/lcmk_gkyioq3tko96bx9ytaao9g.jpeg" />
<h2>Как школьники лишили меня интернета</h2>
У меня, как полагается, тоже был свой подкроватный сервер, на котором крутился простенький форум, посвященный околоигровой теме. Однажды недовольный баном агрессивный школьник подговорил своих товарищей, и те вместе начали DDoS-ить мой форум со своих домашних компьютеров. Так как весь канал в интернет тогда был около 20 Мегабит, им удалось полностью парализовать мой домашний интернет. Никакие блокировки на файрволе не помогали, потому что происходило полное исчерпание канала.
Со стороны выглядело очень смешно:
<b>— Алло, почему ты мне не отвечаешь в аське?
— Прости, интернета нет, меня ддосят.</b>
Обращения к провайдеру не помогли, мне ответили, что разбираться с этим не входит в их обязанности, и они могут только заблокировать мне полностью входящий трафик. Так я просидел два дня без интернета, пока атакующим не надоело.
<h2>Заключение</h2>
Здесь должна была быть подборка современных P2P-сервисов, которые можно развернуть на домашнем сервере, вроде ZeroNet, IPFS, Tahoe-LAFS, BitTorrent, I2P. Но за последние пару лет мое мнение сильно изменилось. Я считаю, что размещение каких-либо публичных сервисов на домашнем IP-адресе, а тем более тех, которые предполагают загрузку пользовательского контента, создает неоправданный риск для всех жильцов, проживающих в квартире. Теперь я советую максимально запретить входящие соединения из интернета, отказаться от выделенных IP-адресов, а все свои проекты держать на удаленных серверах в интернете.