LINUX.ORG.RU
ФорумAdmin

что не правильно делаю с iptables?


0

0

Есть два непонятных момента.

1. Делаю проверку MAC в таблице nat цепочки PREROUTING

iptables -t nat -A PREROUTING --dport 100 -m --mac source xx:xx:xx -j ACCEPT

все работает, если же содаю новую цепочку mac_chec и отправляю проверяться туда, то iptables пишет invalid argument при установке правила.

То же самое если делаю DNAT в PREROUTING, то работает. Если же пытаюсь эту проверку вынести в пользовательскую цепочку, то снова invalid argument, причем при создании правила в цепочке.

Что я делаю не так??? Вроде и DNAT и mac проверку можно делать в цепочек PREROUTING и во вложенных, а не работает.

Заранее спасибо

anonymous

А почему у тебя --mac-source XX:XX:XX. Вроде должно быть XX:XX:XX:XX:XX:XX? А так вообще я эти глюки на других цепочках замечал. Поэкспериментируй с --dport. Убери во вложенной цепочке и посмотри чего получится.

Supreme
()

да ХХ ХХ ХХ я для сокращения написал.

я пробовал просто iptables -A mac_check -m --mac source xx:xx:xx -j ACCEPT

все равно не работает. Причем не работает не это правило, а не работает

iptables -t nat -A PREROUTING --dport 100 -j mack_check

потому что если первое правило я вызываю из INPUT, то все работает, но мне нужно именно из PREROUTING

anonymous
()

Попробуй iptables -A mac_check -m mac --mac-source xx:xx:xx -j ACCEPT

Supreme
()

Можете написать в каком порядке какие команды вы запускали (без сокращений), и какие потом сообщения выдавались ?
Новую цепочку mac_check вы создавали в таблице nat (-t nat) ?

spirit ★★★★★
()

Проблема

вот так работает iptables -A mac_check -m mac --mac-source xx:xx:xx -j ACCEPT

вот так тоже работает iptables -t nat -A mac_PREROUTING -m mac --mac-source xx:xx:xx -j ACCEPT

а вот если iptables -t nat -A PREROUTING -j mac_check

Couldn't load target 'check':/lib/iptables/libipt_check.so: cannot open shered object file

anonymous
()

А создаешь ты цепочку mac_check какой строчкой?

Supreme
()

iptables -N mack_check правда в скрипте и используя переменную т.е. iptables=/sbin/iptables $iptables -N mack_check

цепочка создается и работает, т.к. я ее вызываю из INPUT и все нормально, а вот из PREROUTING не работает

anonymous
()

Блин, ну написал же: цепочку надо создавать в соответствующей таблице !!! :-)))
0) iptables -t nat -N mac_check
1) iptables -t nat -A mac_check -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
2) iptables -t nat -A PREROUTING -j mac_check

spirit ★★★★★
()

так ты ж таблицу для создания цепочки не указал. Если ты хочешь в таблице nat эту цепочку создать, тогда надо: iptables -t nat -N mack_check А то она у тебя в таблице filter создается.

Supreme
()

Признаю, лоханулся :)

Всем большое спасибо

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.