Домашний “роутер” на Freebsd – Часть 1

Как Я и обещал – пишу о том, как создать домашний сервер на базе FreeBsd. В сумме роутер должен уметь как минимум раздавать интернет по вай-фай и по кабелю, пропускать мультикаст для IP-TV, отлично отсеивать шлак (firewall) и справляться с большими нагрузками, от которых обычные роутеры валятся (для меня связующим звеном стала невозможность качать быстро файлы по DC++ из-за того, что родители постоянно сидели на торрентах).

Итак, приступим. Пусть будет так, что у вас уже установлена Freebsd 8.0 или любой другой версии. Пусть она даже только что установлена и без заточки ядра под свои нужды (да, нам придется пересобирать ядро, но в этом нет ничего страшного).
Конкретизирую, Я выбрал именно Freebsd, так как она по моим заверениям является самой защищенной и быстрой ОС. К тому же мне нравится файловая структура этой ОС, а так же то, что все ставится из исходных кодов (пусть из портов, но оно компилируется под мое железо = Я выигрываю в скорости).

Первым шагом в этом нелегком деле будет сборка ядра, для того, чтобы включить поддержку IPFW (нашего фаерволла):
наша архитектура процессора – i386. Для остальных – просто подставляйте свою.

# cd /usr/src/sys/i386/conf
/usr/src/sys/i386/conf# cp GENERIC MYKERNEL
/usr/src/sys/i386/conf# nano MYKERNEL

Перед нами предстал файл конфигурации ядра. Можно конечно разглогольствовать на тему “Сделайте dmesg и в соответствии с выданным оставьте только те устройства, которые вам действительно необходимы.”, но мы не будем. Да, вы выйграете в скорости работы ОС (чем меньше ядро – тем лучше), но я не буду рассказывать об этом.

Итак, добавим следующее в файл конфигурации ядра:

options          IPFIREWALL
options          IPFIREWALL_VERBOSE
options          IPFIREWALL_VERBOSE_LIMIT=5
options          IPFIREWALL_FORWARD
options          IPDIVERT
options          DUMMYNET
options          IPFIREWALL_DEFAULT_TO_ACCEPT
device           if_bridge

Подробности всех этих опций есть здесь. После этого выполним команды:

/usr/src/sys/i386/conf/# cd ../../../
/usr/src/# make buildkernel KERNCONF=MYKERNEL && \
make installkernel KERNCONF=MYKERNEL

и идем пить чай/готовить ужин жене. В общем – это надолго. У меня заняло где-то часа полтора.

После того, как мы наконец-то собрали ядро можно приступать к первоначальной настройке интерфейсов.
Хотелось бы отвлечься от темы в сторону выбора оборудования. Если вы ещё не закупились сетевой карточкой вай-фай – хорошо. Потому что, если это не так – возможно вы получите незабываемое удовольствие от того, что она у вас просто не определится. Я настоятельно советую – берите D-link DWA-520. Его чип строится на базе Atheros’ов, которые с фряшкой работают на ура. Моя же старая карточка (с чипом от реалтека каким-то) даже не определилась. Если же хотите перебирать виндовые драйвера и подцеплять их к вашей сетевкой – хозяин барин. Да, и DWA-520 отлично ладит с 108 мгбит/сек, что не может не радовать (конечно же в режиме turbo).

Ладно, думаю, что сборка ядра займет у вас действительно много времени, поэтому на сегодня пока-что хватит. В следующем посте – настройка интерфейсов, подводные камни при организации bridge wi-fi и lan в freebsd, hostapd и dhcp.

Спонсор поста: Самый ярчайший неон