[ Домой ] [ О себе ] [ Мое резюме ] [ Мои проекты ] [ Рассказки ] [ Форум ] [ Фото ] [ Написать ]
Esmac - расширение для iptables.

Сделан на базе модуля mac. Позволяет указывать как образец часть MAC адреса (с левой стороны).

Зачем это может пригодиться ?

Предположим, Вы управляете распределенной сетью с Linux маршрутизаторами. В Вашей сети вводиться IP телефония. Так как траффик протокола RTP ходит напрямую между IP телефонами, кол-во правил файрвола на каждом маршрутизаторе равно кол-во телефонов * 2. Плюс к этому при добавлении нового телефона появляется и новая проблема - необходмио прописать новый телефон на ВСЕХ маршрутизаторах. Предлагаемое расширение решает проблему следующим образом: Как известно, MAC адрес устройства состоит из двух частей - vendor_id и device_id. Разумеется, vendor_id у всех IP телефонов будет одинаковым (если они выпущены одной фирмой). Это позволяет свести набор правил файрвола к одной строчке:

iptables -A FORWARD -m esmac --mac-source 00:01:02 --mac-length 3 -s 0/0 -d 0/0 -j ACCEPT

И при добавлении нового телефона Вам не придется выполнять долгую и нудную работу.

Все это создавалось и тестировалось на:

linux-2.4.32
iptables-1.3.3

Где взять ? http://www.v-r-s.ru/esmac-0.3.tar

Как поставить ?

Скачиваем и распаковываем исходники ядра и iptables. Далее я предполагаю, что все было распаковано в /usr/srс

cd /usr/src/esmac 
cd kernel
cp -R * /usr/src/linux-2.4.32
cd ..
cd iptables
cp -R * /usr/src/iptables-1.3.3

Замените названия каталогов с ядром и iptables на свои (если у Вас другие версии).

Наложение патчей.

cd /usr/src/linux-2.4.32
patch -p 0 < /usr/src/esmac-0.3/esmac-kernel.patch

cd /usr/src/iptables-1.3.3
patch -p 0 < /usr/src/esmac-0.3/esmac-iptables.patch

Конфигурирование и компиляция ядра.

cd /usr/src/linux-2.4.32
make menuconfig
Идем в Networking options ---> IP: Netfilter Configuration ---> 
Ищем вот такое:
< > Extended MAC address match support
Делаем вот так:
<M> Extended MAC address match support

Выходим, сохраняем конфиг, далее:

make clean && make dep && make bzImage && make modules && make modules_install && make install

Конфигурим (при необходимости) lilo, grub, etc Компиляция iptables:

cd /usr/src/iptables-1.3.3
Поправим Makefile, чтобы все поставилось в /:
PREFIX=/

make KERNEL_DIR=/usr/src/linux-2.4.32
make install

reboot

После ребута пробуем: modprobe ipt_esmac

Если все OK, то сделав lsmod Вы увидите:

ipt_esmac 688 4
то есть модуль загружен.

Далее можно попробовать прописать правило типа:

iptables -A FORWARD -m esmac --mac-source 00:01:02 --mac-length 3 -s 0/0 -d 0/0 -j ACCEPT

Замените MAC на свой. Погоняйте траффик и посмотрите на счетчики командой:

iptables -L -n -v

Например в моем случае:

18 2271 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 MAC 00:60:08 LENGTH 3
8 672 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 MAC 00:01:02:FC LENGTH 4
12 720 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 MAC 00:03:47 LENGTH 3
17 1332 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 MAC 00:60:08 LENGTH 3

Как видим, совпадение с правилами есть, значит модуль работает.

Ссылки:


[ Домой ] [ О себе ] [ Мое резюме ] [ Мои проекты ] [ Рассказки ] [ Форум ] [ Написать ]