Делаем маршрутизатор и NAS на одном процессоре
У меня появился «домашний сервер» на Linux всего через несколько лет, как мне купили компьютер. Сейчас, с того момента прошло уже более пятнадцати лет и большинство этого времени у меня был какой-то второй дополнительный компьютер дома. Однажды, когда пришла пора его обновлять, я задумался: а зачем мне отдельный роутер, если у меня и так уже есть свободный компьютер? Ведь тогда давно, в нулевые, для многих это была стандартная конфигурация.
Действительно: сегодня для этого можно завести отдельную виртуалку, пробросить туда USB или PCI карту Wi-Fi. А в качестве ОС можно одним махом использовать MikroTik RouterOS, получая за небольшие деньги ПО enterprise уровня.
Вступление
Обозначу мои цели и задачи, на момент, когда я только начинал проект:
- Сборка должна максимально состоять из самых распространенных стандартных комплектующих. Это значит, что никаких матплат размеров, отличных от mATX / mini-ITX и низких корпусов, в которых не влезают полноразмерные карты
- Места под диски должно быть много, но сами корзины — под 2.5”
- Модульность должна привести через какое-то время к экономии — ведь Wi-Fi карту старого стандарта 5, можно будет просто поменять на 7
- Поддержка хоть какого-то удаленного управления, чтобы можно было понять, почему не поднимается система, без физического подключения монитора и клавиатуры к чему-то, стоящему высоко и далеко
- Полная свобода в выборе ОС и их поддержка всех критических комплектующих в любой ОС
- Высокая производительность. Надоело ждать, пока Deluge «прожует» .torrent на несколько тысяч файлов или включенное шифрование приводит к падению скорости ниже дисков или сетевого подключения.
- Визуальная красота и аккуратность сборки
- Наивысшая компактность. Идеальный размер — современная игровая приставка.
Сразу предупрежу что, если вы верите, что ниже в статье я расскажу, как выполнить все пункты — вы очень наивны и вам лучше купить Synology или место в облаке.
На самом деле, я не вижу ничего нереального в таком решении, просто, возможно, я недостаточно хорошо изучил все предложение, а возможно — потому что рынок самосборных NAS давно в упадке и комплектующих для этой цели все меньше, а стоят они — дороже.
Немного о софте
В последнее время я стал так ленив, что мне даже не хотелось самому конфигурировать KVM, так что, я решил попробовать посмотреть, что такое unRAID, который LinusTechTips так много рекламировали как удобный GUI для настройки KVM и как хороший софт для NAS в целом. Так как мне также лень было ковыряться с mdadm — unRAID убивал двух зайцев.
Сборка
Корпус
Далее шла, на удивление, сложнейшая часть сборки самодельного NAS на стандартных компонентах: выбор корпуса! Как я и говорил, времена, когда корпуса с дверцей, за которой находятся корзины с дисками давно прошли. А мне еще очень хотелось использовать в качестве дисков 2,5” пятнадцатимиллиметровые Seagate (на момент написания, максимальная емкость — 5ТБ). Они бесшумные и занимают мало места. Пока 5ТБ мне хватало.
Очевидно, матплату хотелось miniITX, так как казалось, что одного слота расширения достаточно.
Оказалось, что есть компактные корпуса, размером с нетбук, но там всего одно место под 2,5 и «другие» корпуса, где есть уже парочка 3,5 соответсвующего размера. Середины просто не существует. Даже за деньги. Было что-то на Али, но снято с производства (ВСЕГДА чекайте Али, в поисках необычных вещей, иногда китайцы уже все изобрели и поставили в массовое производство). На каком-то мелком форуме я вычитал о SilverStone CS01B-HS, но цена совсем не вписывалась в категорию «бюджет». Устав от поисков, я заказал его на Амазоне через Шипито, чем полностью провалил третий пункт технического задания.
Зато теперь можно было не беспокоиться о бюджете вообще!
Советую вам сразу сделать 3Д модель корпуса Вашей Мечты и выточить ее на ЧПУ-станке из настоящего алюминия. Будет чуть дороже сильверстоуна, но в тысячу раз приятнее. Только, поделитесь ей потом на гитхабе!
Процессор
Конечно же, хотелось в качестве процессора взять АМД, 2019 год на дворе, штеуд только у тех, кто не сильно вникает. Но, пытаясь выполнить пункт четыре «Поддержка удаленного управления», нахожу у АМД только Ryzen DASH и понимаю, что в этом случае нужно выбрать Intel.
Далее, все как всегда: яндекс.маркет, фильтры, легкий гуглинг на детские проблемы и доставка завтра внутри МКАД бесплатно.
Матплата
Из матплат, фактически, выбор из одной — Gigabyte GA-Q170TN.
У меня нет ни малейшего понятия, почему слот расширения всего х4, но, если в будущем вы захотите поставить туда десятигигабитную сетевую карту — запаса хватит (но подключить хранилище, обеспечивающее такую производительность вы уже не сможете).
Из больших плюсов: два слота miniPCI-E. MikroTik выпускает все свои Wi-Fi карты (а нам нужны именно они, ведь только они и поддерживаются в RouterOS) в формате miniPCI-E, и, скорее всего, будет выпускать еще много лет, так как это их основной стандарт карт расширения. Например, вы можете купить их модуль LoRaWAN и легко получить поддержку устройств с LoRa.
Два Ethernet, но на 1 Гбит. В 2017 я выдвигал закон о запрете продажи материнских плат со скоростью Ethernet до 4 Гбит, но не успел собрать нужное количество подписей для прохода муниципального фильтра.
Диски
В качестве дисков берем два STDR5000200. По какой-то причине они стоят дешевле ST5000LM000, которые на самом деле там находятся. После покупки проверяем, разбираем, достаем ST5000LM000 и подключаем по SATA. При гарантийном случае — собираете обратно и сдаете, получив в обмен новый диск (не шучу, я так делал).
Я не стал использовать NVMe SSD, возможно, в будущем, если появится необходимость.
Intel в своих лучших традициях разложил грабли: недостаточно поддержки в матплате, поддержка vPro нужна еще и в процессоре, причем вы устанете искать таблицу совместимости. Каким-то чудом я узнал, что нужен минимум i5-7500. Но так как на бюджет больше не было лимита, я смирился.
В оставшихся компонентах ничего интересного не вижу, их можно заменить на любые аналоги, поэтому вот вам общая таблица с ценами на момент покупки:
Наименование | Количество | Цена | Стоимость |
---|---|---|---|
Crucial DDR4 SO-DIMM 2400MHz PC4-19200 CL17 — 4Gb CT4G4SFS624A | 2 | 1 259 | 2 518 |
Seagate STDR5000200 | 2 | 8 330 | 16 660 |
SilverStone CS01B-HS | 1 | $159 + $17 (доставка с Амазона) + $80 (доставка в Россию) = $256 | 16 830 |
Контроллер PCI-E Espada FG-EST14A-1-BU01 | 1 | 2 850 | 2 850 |
Блок питания SFX 300 Вт Be quiet SFX POWER 2 BN226 | 1 | 4160 | 4160 |
Kingston SSD 240GB SUV500MS/240G | 1 | 2 770 | 2 770 |
Intel Core i5-7500 | 1 | 10 000 | 10 000 |
GIGABYTE GA-Q170TN | 1 | 9 720 | 9 720 |
MikroTik R11e-5HacT | 1 | 3 588 | 3 588 |
Антенны | 3 | 358 | 1 074 |
Лицензия RouterOS 4 уровня | 1 | $45 | 2 925 |
Лицензия unRAID Basic | 1 | $59 | 3 835 |
Итого 66 930 рублей. Пункт три про экономическую часть вопроса разрушен в щепки, но греет душу мысль о том, что через десять лет это железо все еще будет в состоянии выполнять поставленную задачу.
Настройка софта далась довольно легко, благо, он к этому располагает: 95% можно накликать мышкой за один вечер. Могу описать это в отдельной статье, если будет интересно, так как не все было идеально, но нерешаемых негуглящихся проблем не было. Например, не так просто оказалось прокинуть проводные Ethernet адаптеры в RouterOS, ведь ее список поддерживаемого оборудования достаточно скудный.
Выводы после прохождения границы в сто дней uptime
- vPro именно для этой цели не нужен. Это сильно сужает выбор матплат и процессоров, а для домашнего применения вы обойдетесь беспроводным удлинителем HDMI и беспроводной клавиатурой. В крайнем случае (сервер стоит в подвале под железобетонной плитой) — используйте удлинитель на витой паре.
- 10 гигабит нужно было еще вчера. Средний жесткий диск из 2010х читает быстрее, чем 120 мегабайт в секунду, для чего гигабитной сети не хватает. А мы еще поставим SSD-кэш, для которого 1,25 ГБ/сек могут стать ограничением.
- Корпус съел четверть бюджета. Это недопустимо.
- Быстрый процессор в NAS/роутере — нужнее, чем казалось изначально
- unRAID — действительно хороший софт, есть все что нужно и нет того, что не нужно. Платишь один раз, если понадобиться больше дисков — просят только разницу в стоимости лицензий.
Мой бывший hap ac выдавал около 20 мегабит с включенным шифрованием VPN тоннеля. Сейчас всего одного ядра i5-7500 хватает, чтобы выдать гигабит.
P.S.
Я очень рад, если вы дочитали до конца и вам было интересно! Пожалуйста, задавайте вопросы, если что-то осталось неясно. Вполне мог забыть.
Сразу отвечу на очевидное:
— Зачем все это, можно просто купить Synology?
— Да, и я советую вам так поступить. Это проще, быстрее, дешевле и надежнее. Статья для энтузиастов, которые знают, зачем им дополнительные возможности.
— Почему не FreeNAS, там есть все, что есть в unRAID, но бесплатно?
— Увы, опенсорс уже совсем другой. FreeNAS пишут точно такие же программисты на зарплате. А если вы получаете их труд бесплатно, то конечный продукт — это вы. Или им скоро перестанет платить инвестор.
— Можно вообще все сделать на чистом Linux и еще сэкономить!
— Да. Когда-то и я так делал. Но зачем? Для меня всегда было проблемой настройка сети в Linux. Это пусть останется Computer Janitors. А RouterOS полностью решает этот класс проблем. То же и с MD RAID: несмотря на то, что mdadm не дает совершить глупых ошибок, данные я все равно терял. А unRAID просто не дает нажать не ту кнопку. Опять же, ваше время не стоит тратить на ручную настройку хранилища.
— Но ты же все равно установил обычную убунту в виртуалку!
— Ради этого все и затеивалось. Теперь у вас есть свой личный AWS с максимальной скоростью подключения к вашей СХД, домашней сети и интернету одновременно, чего не сможет вам дать никто. А какие сервисы запускать в этой виртуалке — решать вам.
— Любая проблема и в доме сразу нет ни Wi-Fi, ни интернета, ни хранилища.
— Лежит запасной роутер за 1 000 рублей, а с дисков никуда ничего не денется. За все время кроме дисков и кулеров ничего само не ломалось. Даже обычный неттоп проработал 24/7 почти десять лет и прекрасно себя чувствует сейчас. Пережил два диска.
Сервер в качестве маршрутизатора и прокси-сервера одновременно?
Предположим у нас есть сеть маленького офиса. Возможно ли использовать один сервер в качестве роутера и прокси-сервера одновременно?
Вот, например, зачем на этой схеме нужен маршрутизатор, если можно использовать один прокси-сервер?
Возможно. Обычно роутер — это мини-сервер, специализированная железка, заточенная под задачи роутинга-файрволла-NAT и еще что-нибудь. Плюсы — маленький, нет механики (а значит нет износа), не сдохнет при внезапном выключении питания (сервер тоже не сдохнет, но fsck и возможно пропадание файлов никто не отменял). Минусы — если на сервере планируется не только прокси, но и сервисы, доступные извне — DNS, веб — придется пробрасывать порты и все такое.
Решение с сервером в качестве роутера подойдет тем, кто сам сможет его админить. Решение с роутером в качестве роутера 🙂 подойдет виндовозникам — тогда в качестве прокси можно поставить винду 🙂
Потому, что прокси — это как правило, сервер, с операционкой и всем таким, а NAT может быть специализированной железкой типа Cisco.
Так в этом и вопрос. Зачем мне нужна эта «железка типа cisco» в маленькой компании, если я могу использовать сервер сразу для всех задач (прокси, nat и т.д)?
Ecorp: Да, пожалуйста, кто вам не дает.
Но если уже есть железка в качестве маршрутизатора, то лучше на ней и оставаться.
Распределение сервисов на разные аппаратные платформы прежде всего защищает от того, что вы лишитесь всего, если ваша единственная железка, на которой крутится все, выйдет из строя.
Ecorp: в маленькой незачем, наверное.
Хотя вот у меня сейчас тоже дома и торрентокачалка и прокся и маршрутизатор, но как его надо остановить — wifi нет, вот подумываю роутинг скинуть на микротик, а фряху оставить торренто-качалкой. Отключения будут малозаметными.