Сделан на базе модуля 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
Как видим, совпадение с правилами есть, значит модуль работает.
Ссылки: