четверг, 18 марта 2010 г.

PfSense - маршрутизатор на BSD. Статья для Хабра от моего хорошего друга.


pfSense  -    это    маленький
маршрутизатор.

  Бесплатный, построен на хорошо обработанной напильником FreeBSD.
Его можно использовать как маршрутизатор, farewall, VPN-шлюз и т.д. Проект начат
в  2004  году.  На  сегодняшний  день актуальная версия 1.2.3, а на подходе 2ю0 alpha. Нужен ли вам такой маршрутизатор или проще
купить  коробушку  от  D-LINK, Zyxel, LinkSys и т.д. выбирать вам. Решая задачу,
для  одного  из  Заказчиков,  мне  pfSense  оказался  очень  полезен  и  удобен.

Поехали!

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

Я вообще большой любитель таких игрушек. Время, когда нужно было долго возиться причесывая UNIX-подобную систему, даже для мелких задач постепенно уходит (на самом деле, а уходит ли?).  Нет, я не говорю о том, что этого совсем не надо будет делать, есть разные задачи, есть разные способы их решения.
В повседневных заботах системного администратора так ли много на это времени?. Такие милые вещицы как FreeNAS, openfiler, smoothwall и pfSense, они, для меня, как ложка меда в бочке дегтя!

Вам нужно откатать iscsi в ESX/ESXi, но у вас под рукой нет железки? Возьмите openfiler и поставьте его на любой компьютер. Вам нужно сделать NAS сервер из старого компьютера у жадного заказчика или, к примеру, сделать себе хранилку в домашней сети? FreeNAS - то что нужно! И уж конечно все подобные причиндалы работают в виде виртуальных машин и часто уже существуют в виде appliance. (Кстати, забегая вперед, образ vmware pfSense, взятый с сайта, в Vmware server 2.0.2 не заработал. Пришлось инсталлировать.)

Давно искал что-то подобное и именно на BSD системе, хотя таких систем много, но чаше на linux. С Linux я в контрах, его хуже знаю чем BSD. Терять время и заниматься инсталляцией BSD системы с нуля, настройкой firewall, NAT и прочих сервисов для задач тестирования, не сложно, но время терять не хотелось. 

Для тестов, мне был нужен самый простой и тупой маршрутизатор между двумя серверами, на которых я поднял VmWare ESXi 4.0 и несколько виртуальных машин. Внутренняя маршрутизация ESX-а, во всех его вариантах, мне не подходила. Никакого, аппаратного маршрутизатора под рукой у меня не было. Готового образа BSD сисемы, да и дистрибутива под рукой тоже не оказалось. Качать? Мм-м-м... 

Выход был найден не сразу. Точнее, маленьких, кастомных дистрибутивов с web-мордой для роутеров не так много, а под BSD еще меньше. 

Требования к системе - минимальны.
CPU - 100 MHz Pentium (?!? Артефакт!)
RAM - 128 MB

При инсталяции на жесткий диск (мне хватило виртуальных 300мб на диске)
CD-ROM для инсталяции (или используйтея ISO-файл.)
1 Гб на диске (реально меньше)

для Embedded решения
128 MB Compact Flash
Serial port for console

Какую пользу мы имеем с гуся, Шимеле?



  • Firewall (packet filter от OpenBSD;
  • Простой, графический Web-интерфейс для настоек всего что есть;
  • Простая, в одно нажатие инсталляция;
  • Возможность использовать как Wireless Access Point, если у вас есть адаптер;
  • Поддержка нескольких подсетей включая алиасные с firewall (можно легко организовать подсеть для каждого подразделения вашей организации)
  • Traffic Shaping
  • State Table
  • NAT
  • Redundancy (несколько маршрутизаторов pfSense можно объединять, если упал один, второй встает на его место)
  • OpenBSD CARP (протокол избыточности общего адреса)
  • pfsync (синхронизация правил firewall между "коробушками")
  • Load Balancing для входящего и исходящего интерфейсов.
  • nmap, ping, traceroute в том числе и через web-морду
  • VPN - IPsec, OpenVPN, PPTP (все что надо для VPN!)
  • PPPoE Server
  • RRD Graphs Reporting (графики нагрузки и все такое в реальном времени)
  • Real Time Information (используется AJAX)
  • Dynamic DNS
  • Captive Portal (ээ-э-э?)
  • DHCP Server and Relay
  • Консоль, в том числе и через ssh или RS-232
  • Wake on LAN (pfSense умеет посылать WakeUp на подключенные компьютеры)
  • Proxy Server
  • Встроенный в веб-морду sniffer
  • Сохранение и восстановление правил firewall через веб-морду
  • Текстовый редактор
  • Возможность добавлять любые BSD-пакеты и обновлять систему через веб-морду.
Кому интересно, вот скриншоты Шкварки Зачем нужны такие системы? Есть ли им место в наших сетях и системах? Не знаю. Конечно, городить маршрутизатор для домашней сети из старого компьютера вряд ли кому-то придет в голову. Проще купить коробушку за 1500руб, уметь коробушка конечно меньше, зато электричества кушает меньше и не гудит, да и так ли нужен полный такой функционал дома? Ставить pfSense жадных экономных заказчиков, которые используют ПК-помойки для маршрутизаторов тоже спорное решение, потому как время простоя иногда бывает больше чем uptime. Мелкие компании (до 10 сотрудников) скорее всего вполне устроит коробушка-маршрутизатор. А вот в компаниях побольше уже можно попробовать. Во всяком случае, пока, достаточно большое количество системных администраторов предпочитает маршрутизаторы на базе linux & BSD систем, где pfSense вполне уместен. Он прост сам по себе (даже проще чем smoothwall), не требователен к ресурсам, легко ставится, легко администрируется, достаточно производительный. Продукт достаточно хорошо документирован, есть и Wiki и подробный FAQ. Что касается аппаратной совместимости, то pfSense поддерживает все, что поддерживает FreeBSD 7.2. Да.. отлично подходит для тестов, в реальной или виртуальной среде, потому к весит мало и работает сразу. Чего не хватает? Не хватает миниатюрной x86 платформы с 500Mhz+ процессором и 512 памяти, с несколькими сетевыми интерфейсами и габаритами как у CD-DVD-привода :). Хотя... у той же супермикры</s> SuperMicro появились надавно сервера на 330-ом Atom-е и i945GC. /Малепусенький сервер с 2-мя LAN портами+PCI-E и райзер +4х портовая сетевая карта - уже 6 гигабитных портов за 700-720 доларов в розницу. Да этого достаточно для любых задач фирмы или филиала! И вроде получается дешевле аппаратного роутера, наверное любого вендора при равных технических характеристиках. Это достаточно простое и не дорогое и надежное Embedded решение. Разработчик утверждает, что их продукт можно поставить на xBox (вот не ясно тока зачем?) Если хотите, могу сделать описание инсталляции, хотя в общем так все просто. Удачи коллеги! Kopylov Sergey

Fedora 12 and Floppy

Всем привет.

Появилась задача - обновить ключи для программы Росфинмониторинга.
Ключи прислали на дискетах.
Вроде бы все - как всегда - стартуешь виртуальную машину с Windows, вставляешь дискету, делаешь образ дискеты, затем монтируешь ее на удаленном хосте и делаешь обновление ключей и сертификатов.

Ан нет.

Недавно обновил систему - стоял ASP Linux 14, поставил Fedora 12 Linux.
Нету флоппи. Хоть так, хот этак.
Что же делать?

Правильно - снова ныряем в гугл и гуглим, гуглим, гуглим.

Для тех, кому это не под силу, привожу решение (которое заработало у меня) и пруфлинк.

Решение:

В файл
/etc/modprobe.d/floppy-pnp.conf
 вносим изменения (если его нет, создаем):

alias pnp:dPNP0700 floppy
alias acpi:PNP0700: floppy
 Это все.

Ах да, вот ссылка на автора.

VmWare workstation 7 update on Linux 2.6.32 kernel

На днях понадобилось вновь воспользоваться ОС Windows XP.

Поскольку система эта - оконная, она и "живет" в окне моей рабочей системы - Fedora 12 Linux. Работает в виртуальной машине VmWare 7.0.0 для Линукс.

Система была обновлена, обновилось и ядро - с 2.6.31.12 - на 2.6.32.9 .
И, что вполне понятно, и даже ожидаемо, виртуальная машина перестала стартовать.
Для тех, кто за крепкой броней (танк или бронепоезд), могу напомнить, что для работы Vmware используются модули ядра. Так вот, после каждого изменения ядра, приходится устанавливать в ядро модули от Vmware.
Этих модулей несколько. И вот один из них стал выдавать ошибку.

failed to compile module vmnet!

Решал эту проблему дня два. Помог, как обычно, гугл.



Привожу решение для апдейта Vmware под ядро 2.6.32:

Для чистой компиляции, нужно воспользоваться патчем.
Делаем вот так



tar xvf /usr/lib/vmware/modules/source/vmnet.tar -C /tmp
cd /tmp
perl -pi -e 's,("vnetInt.h"),\1\n#include "compat_sched.h",' vmnet-only/vnetUserListener.c
tar cvf /usr/lib/vmware/modules/source/vmnet.tar vmnet-only
 
 
# /etc/init.d/vmware start
 
 
 


Решение было найдено тут. Кроме модуля vmnet там предложен патч и для модуля vmci.
Однако, приведенный выше код более корректный. Как говорится, найдите различия...
Хотя, это и не сложно.


Удачи, и приятной работы с виртуальными машинами!