На ubuntu 10.04LTS (2.6.32-24-server) iptables 1.4.4-2ubuntu2
очень странно отрабатываются правила с конструкцией "-m mac --mac-source"
вот пример rc.firewall:
# Удаление всех существующих правил
$iptables -v --flush -t filter
$iptables -v --flush -t nat
$iptables -v --flush -t mangle
$iptables -v --flush -t raw
$iptables -v --delete-chain -t filter
$iptables -v --delete-chain -t nat
$iptables -v --delete-chain -t mangle
$iptables -v --delete-chain -t raw
# Установка политик по умолчению
$iptables -v --policy INPUT DROP
$iptables -v --policy OUTPUT DROP
$iptables -v --policy FORWARD DROP
# Параметры ядра (ipsysctl)
$sysctl -w net.ipv4.ip_forward=1
$sysctl -w net.ipv4.tcp_syncookies=1
$sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
$sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
$sysctl -w net.ipv4.conf.all.accept_redirects=0
$sysctl -w net.ipv4.conf.all.send_redirects=0
$sysctl -w net.ipv4.conf.all.accept_source_route=0
$sysctl -w net.ipv4.conf.all.log_martians=1
$sysctl -w net.ipv4.conf.all.secure_redirects=0
$sysctl -w net.ipv4.conf.all.proxy_arp=0
# Загрузка модулей
$modprobe -v ip_conntrack_ftp
$modprobe -v ip_nat_ftp
# Отклоняем вся входящие пакеты с состоянии INVALID
$iptables -v -t filter -I INPUT 1 -m conntrack --ctstate INVALID -j DROP
# Неограниченный трафик на обратной петле
$iptables -v -t filter -A INPUT -i $LOOPBACKIF -p all -s $LOOPBACKNET -d $LOOPBACKNET -j ACCEPT
$iptables -v -t filter -A OUTPUT -o $LOOPBACKIF -p all -s $LOOPBACKNET -d $LOOPBACKNET -j ACCEPT
# Доступ к локальному интерфейсу только определенным хостам
$iptables -v -t filter -A INPUT -i $LAN1IF -p all -s $ADMINNET -m mac --mac-source $ADMINMAC -d $LAN1IP1 -j ACCEPT
$iptables -v -t filter -A OUTPUT -o $LAN1IF -p all -s $LAN1IP1 -d $ADMINNET -j ACCEPTЕсли указать предпосланную строчку как она есть, то хост с ip-адресом $ADMINNET и mac-ом $ADMINMAC доступа к интерфейсу $LAN1IF не имеет,
а если "-m mac --mac-source" опустить, то все ок
При чем выхлоп от этой строчке вполне нормальный, ошибок нет. в логах тоже не густо
Как с этим боротся?
P.S. $ADMINMAC - 100% указан верно
ADMINNET в той же подсети или за шлюзом?