Хвостат Хвостатыч (hvostat_hvostat) wrote,
Хвостат Хвостатыч
hvostat_hvostat

Categories:

PC-based router на базе FreeBSD

Как уже писал выше, ударными темпами изучаю UNIX, в частности FreeBSD.

В качестве практической работы решил сделать то, что давно планировал - заменить свою "недокошку" Linksys WRT-54GL на PC-based роутер. Во-первых, быстрее работает, во-вторых, возможности будут ограничены только мощностью роутера и умениями его программировать.

Эта "хаутушка" ни в коем случае не претендует на единственно правильный вариант. Замечания и предложения только приветствуются.

Построение PC-based роутера можно разделить на несколько этапов:
1) Сборка PC.
2) Установка FreeBSD.
3) Проверка и настройка интерфейсов.
4) Настройка Packet Filter.
5) Fine Tuning.



1) Железо.
Нам нужен i386-совместимый компьютер. Для того, чтобы “пронатить” 100 мбит достаточно Intel PIII @ 1 Ггц. Оперативной памяти - чем больше, тем лучше. Максимум для моей материнской платы - 512 МБ.
Место на жестком диске или карточке типа CF через переходник (быстрее и совершенно бесшумно) - 2 Гб. Ну и разумеется, две сетевые карты.
Описания этапа сборки и тестирования железа пропускаю, как очевидные.

2) Установка.

Я установил "голую" FreeBSD версии 9.1, вообще без каких-либо дополнительных пакетов.

3) Интерфейсы.

На будущем роутере у нас есть две сетевые карты и соответственно два интерфейса: em0 и em1.
Стоит отметить, что обозначения их зависят от производителя сетевых карт. Лично у меня они называются xl0 и em0.
Но для наглядности, в этой хаутушке пусть будут "em0" и "em1".

Пусть em0 «смотрит» в WAN, а em1 в LAN. Назначим IP-адреса для интерфейсов, для этого вваливаемся в папку /etc, ищем там rc.conf, в нем прописываем следующие строки:
ifconfig_em0=“inet 192.168.1.1 netmask 255.255.255.0”
ifconfig_em1=“inet 192.168.0.1 netmask 255.255.255.0”

Там же прописываем default gateway:
route add -net 0.0.0.0 -netmask 0.0.0.0 192.168.0.1

И разрешаем "перекидывать" пакеты из одной подсети в другую, для этого прописываем:
gateway_enable=“YES”

4) Packet Filter.
Заканчиваем править rc.conf. Включаем PF, для этого пишем:
pf_enable=“YES”
Указываем путь к файлу настроек PF, прописываем:
pf_rules=”/etc/pf.conf”

Сохраняем изменения и выходим из редактора.
Теперь, нам нужно создать сам файл pf.conf. Для этого, не выходя из папки /etc, пишем в командной строке:
#touch pf.conf

Редактируем pf.conf. Именуем интерфейсы:
wan_if=“em0”
lan_if=“em1”

А теперь, самое главное, разрешаем NAT, пишем:
nat on $wan_if from $lan_if:network to any -> $wan_if

Сохраняем файл. Перезагружаемся. Подключаем кабели. Тестируем во внутренней сети как "ходят" пакеты.
Если всё ок - меняем IP-адреса и прочие настройки на сетевых интерфейсах на "боевые", устанавливаем наш новый роутер на место, подключаем и продолжаем работать с ним по SSH.

5) Fine Tuning.
Настроить "проброс" портов, включить и настроить файрволл и поставить "мониторилку", типа cacti.
Если нужен свитч - можно поставить еще n сетевых карт и объеденить их.
А если у вас есть время и вдохновение - пересобрать ядро, убрав всё ненужное.

6) PROFIT!

Tags: freebsd, unix, гайдлайн, роутер, софт
Subscribe

  • "Stayin' alive!"

    По коридору бежал Мюллер. Штирлиц прижался к стене. Мюллер, совершенно не обращая внимания на Штирлица, пробежал мимо. - Пронесло! - подумал…

  • "Цыска - альтруиска"

    В эфире наша постоянная рубрика "ВПП" - ВладПоделилсяПрекрасным. Далее цитирую с примечаниями: Мы в офис провели нового провайдера. Прямая опта.…

  • "Закат солнца вручную. Метод отечественный, программный."

    Поступила задача - установить некую отечественную софтину. По заявлению производителя - "СТАВИЦЦА АДНИМ КЛИКАМ!!!11" (смех в зале) Как говорил…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments