Наконец-то у меня дошли руки до переделки Internet-шлюза на работе! Как давно это планировалось! Ранее эту задачу выполнял компьютер вот такой конфигурации:
- CPU: Intel(R) Celeron(TM) CPU 1200MHz (Socket370)
- RAM: 512MiB (DIMM PC100)
- SVGA: NVIDIA Corporation NV11 [GeForce2 MX200]
- NET0: VIA Technologies, Inc. VT6105/VT6106S [Rhine-III]
(На самом деле D-Link, не помню уже какой, но на чипе VT6105/VT6106S)
- NET1: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
- WI-FI: D-Link DWA-525
- HDD: Seagate Barracuda ST360021A (60GiB, 021A, то есть ATA)
- OS: Ubuntu GNU/Linux
Немного о софте. Програмная часть этого чуда человеческого(моего, наверное) гения представлена следующим набором:
- Ubuntu GNU/Linux Server 12.04
- iptables с "самодельным" скриптом ограничивающим(ну или разрешающим) каждому пользователю определенные действия.
- bridge-utils, для организации сетевого моста между одним из проводных и безпроводным интерфейсом
- wpasupplicant для шифрования беспроводного соединения
- squid3 - кэширующий proxy-сервер с кучей возможностей
- squidGuard - редиректор для squid
- free-sa - парсер логов squid
- Apache 2.4 с виртуальными хостами
- mySQL 5.5 открытая альтернатива MS SQL, БД
- PHP5 мощный интерпретируемый язык программирования
- Joomla 3 не просто же так LAMP развернут ;)
- open-SSH, чтобы всем этим безобразием управлять
В общем-то старый шлюз довольно неплохо со своими задачами справлялся, но, во-первых, он очень сильно шумел (во времена Pentium3 не было технологии SmartFan для кулеров CPU, не говоря уже о блоках питания, да и накопители жестких дисков стрекотали достаточно сильно). Во-вторых, каждое отключение питания приводило к тому, что материнская плата перестовала определять Wi-Fi-карточку (от чего я уже достаточно натерпелся критики со стороны коллег). В-третьих, эта машина выступает в роли LAMP-сервера (а по мере наполнения находящегося там сайта, я все больше боялся за сохранность информации, так как для ее хранения использовался старенький видавший виды накопитель НЖМД, на котором уже, кстати говоря появилось изрядное количество, а именно 0,1% BAD-блоков). Ну и в-четвертых, с переходом многих поисковиков на HTTPS-протокол прозрачного squid-а в режиме HTTP стало явно недостаточно, появилась, как говоил товарищ Ленин, Аг'хи сложная и аг'хи важная задача - обучить прокси-сервер работать с HTTPS-протоколом. Ну и последняя ложка дегтя, я не считаю Ubuntu GNU/Linux хорошей серверной платформой (гибкости в настройке ей явно не хватает, а сборка софта из сорцов, которая необходима для приспособления любимца всех админов, squid'а, превращает эту работу в некое подобие замечательной русской сказки про солдата Ивана Девяткина "Пойди туда, не знаю куда, принеси то, не знаю, что").
По поводу последнего высказывания, многие бы могли со мной поспорить, ведь aptitude предоставляет так называемые build-deps'ы, однако, попробуйте получить от пакета функцию не заложенную мейнтейнером, на самом деле все просто, надо всего-то навсего, знать от каких пакетов зависит наш пересобираемый. В случае, выпиливания функций все просто, ответы на наши вопросы дает система APT. А если нам надо добавить функционал? Научить Apache или Squid работать с SSL? Тогда нам надо знать не только зависимости, но и версии пакетов. Может быть у кого-то и получается, но у меня после недели акробатики со squid, которая так ни к чему не привела (это скорей камень в мой огород), возникла стойкая неприязнь к системе APT. Тем более, что была уже опробована более быстрая в плане производительности, гибкая в плане развертывания и настройки (но ни в коем случае не обслуживания!!!) система Gentoo GNU/Linux.
Итак, задачи, поставленные передо мной ясны: собрать из того что есть под рукой более быстрый и функциональный Intehytn-шлюз, который бы выполнял роль кэширующего прокси-сервера с поддержкой SSL, межсетевого экрана, сервера LAMP (опять же желательна поддержка SSL), и новая задача для него - почтовый сервер с фильтрацией спама (очень хочется эту функцию реализовать). О непосредственной реализации этих моих хотелок я расскажу в следующем посте.