OC для мини-шлюза.

Posted: 2012-09-03 in IT, Networks, Software
Метки:

Приветствую. На этот раз речь пойдет о специальном очень компактном дистрибутиве линукса для сетевых шлюзов и прочих мелких серверов. …

Год-два назад я писал о применении виртуальных машин и использовании отдельных файерволов для фильтрации и анализа траффика при работе с особо чувствительными приложениями. Это статейка про зверинец и статейка про изоляцию банк-клиента.
В обоих случаях у нас появлялась специфичная задача: настроить маленькую виртуалку с минимальными системными требованиями. Требования при этом следующие:

  1. компактность
  2. свежий стабильный софт
  3. легкость обновлений

Исходно я использовал наиболее знакомую мне систему — Fedora в минимальном варианте установке. Проблема в том, что Федора (как и убунты|мандривы|сусе|прочее_десктопное) — системы жирные и тяжелые. Они прекрасно подходят для основной системы, но совершенно избыточны для мини-шлюза. Удаление же лишнего вручную даже из минимальной комплектации занимае6т уйму времени и сил. Кроме того, в процессе обновления размер файла-образа для диска виртуальной машины начинает заметно расти в размерах (связано с механизмом работы снапшотов ВМ). Конечно, работать оно будет, но куча софта будет лежать на шлюзе вообще мертвым грузом и впустую грузить ваше время и дисковое пространство при каждом обновлении. Естественно, что я искал более компактные варианты реализации мини-шлюза.

Для начала я попробовал различные мини-дистрибы типа DSL и Puppy. Древность софта не порадовала. Сборки на ядре линукс-2.2/2.4 или на FreeBSD 2-й ветки (типа PicoBSD) тоже пользовать не захотелось. Старый софт — это менее тщательный аудит, старые ошибки, более длительные сроки выпуска апдейтов (даже если дистриб ещё поддерживается).

Потом я решил попробовать OpenBSD. Идеи там конечно заложены правильные, но реализация местами — та ещё радость (траблы с подсчетом свободного места в df, странные проблемы с NAT, ещё кое-что по мелочи), да и специфики много. Вообщем, смотреть и изучать в будущем я её точно буду, но сейчас как-то не сложилось, маны пока что меня недостаточно просветлили. 😀

В какой-то момент глаза мои озарились красным светом, и мне пришла мысль насчет Gentoo. Однако собирать всю эту радость из исходников как-то совершенно не хотелось (исходники тоже места просят, а у нас задача — не раздувать систему внутри ВМ). Представив себе сборку ядра и раскуривание ключей для сборки netfilter и iptables — возиться с гентой как-то сразу расхотелось. Система конечно прекрасна для красноглазой души, но на мини-шлюзе хотелось получить желаемый результат без дополнительной камасутры.

Ещё более безумную идею — замутить софт-циску на GNS я приведу в качестве примера того, как точно не надо делать. IOS нифига не маленькая, 95% функций не понадобятся, а эмуляция неродной архитектуры превратит ваш компутер в тормозной калорифер.

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

Оказывает, такое есть, и называется оно Tiny Core. Наиболее компактный релиз — 8 Мб, наиболее полный — 64 Мб. Система при этом на бинарных пакетах, модульная, и легко обновляется. Ставить можно даже с графикой — оно там реально легковесное. SSH и iptables в комплекте не идут — ставятся из своего репозитория отдельно. Все очень компактное и аккуратное. Размер виртуального диска под неё я советую сделать около 200-250 Мб, чтобы было куда расширяться и чтобы без проблем ставились апдейты.

Для настройки достаточно faq на сайте, хотя также полезным может оказаться вот это руководство: http://yarvobler.narod.ru/tinycore.html

Ставим /* система маленькая, можно и целиком */ на виртуалку с нужными опциями. Настраиваем. Важный момент — при ребуте сохраняются только те конфиги, что указаны в специальном конфиге, и сохранение идет только по команде backup. В этом плане все очень похоже на линуксозные прошивки для сетевых железок.

Описывать настройку сети и iptables не буду — есть вагон мануалов на эту тему. Для сохранения при ребуте или переносе на другую виртуалку — либо прописать конфиги как сохраняемые и дать команду backup, либо добавить свой скрипт в /opt и также дать команду backup.

Важный момент — установка модулей. Из консоли — команда ab, из графики — установщик. Тип установки — OnBoot. Тогда нужные параметры сразу будут дописаны к ядерному конфигу. Для мини-дистриба сделано реально удобно, хотя поначалу слегка непривычно.

P.S. Готовый образ на TinyCore:

https://rutracker.org/forum/viewtopic.php?t=6258575

magnet:?xt=urn:btih:DA309F28A34C290814BBEF9B43EF5D42DDA4262A&tr=http%3A%2F%2Fbt3.t-ru.org%2Fann%3Fmagnet&dn=Virtual%20TinyGateway%20%5BVirtualBox%20OVA%5D%20%5BLinux%20TinyCore-14%5D%20%5Biptables%20%2B%20NAT%20%2B%20DHCP%20%2B%20VLAN%2FQinQ%5D

ipfs://QmfTTAnV58sS7zce5Z9mNrjpvEkBP92rpD8YnaagDj13e6/

Прочие ВМ-ки тут:

ВМ-ки Аминуксера

Всем удачи.

- комментарии
  1. Аватар Неизвестно Bradobrey:

    может http://www.vyatta.org понравилось бы? Но там я думаю системные требования были бы поболее… Сам не ставил,но отзывы читал -вроде неплохо характеризуется…

  2. Аватар Неизвестно Aminux:

    Спасибо, посмотрел. У меня задача не настолько сложна, чтобы держать дистриб под 200 Мб. Так что пока оставлю Tiny Core, а если потребуется что-то более сложное — возможно попробую Vyatta.