В некоторых дистрибутивах лучше делать такие вещи все-таки штатными средствами....
Например в openSuSe iptables управляется скриптом SuSEfirewall2... и конфигурационный файл расположен в другом месте в отличии от других дистрибутивов.
Что у Вас за дистрибутив?
CentOS 6.3. Я попробовал штатное средство: system-config-firewall-tui - поперчил iptables до неузнаваемости, даже до записи скрипта не дошёл, интеренет погас , пришлось переустанавливать iptables вручную. Так что штатные средства не всегда есть хорошо :)
А программисты мне сказали что так просто не вставишь, что к этому скрипту надо ещё писать шелл-скрипт
Ваша ссылка утверждает что ограничения...
Если отсутствие GUI Вас не пугает то я бы использовал официальные руководства: Cent OS Iptables
В вопросе ссылка...
А в комментариях советы...
Короче я написал шелл скрипт в файл, дал ему соответствующие права, запустил
text
#!/bin/sh
for MAC in `cat mac.lst`; do
iptables -A FORWARD -i eth0 -o eth1 -m mac --mac-source $MAC -j ACCEPT
done
iptables -P FORWARD DROP
Все разрешенные МАКи успешно добавляются а строку с DROP не вижу
Правда когда написал
text
iptables -L --line-number
Получил
text
............
Chain FORWARD (policy DROP)
num target prot opt source destination
1 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
2 ACCEPT icmp -- anywhere anywhere
3 ACCEPT all -- anywhere anywhere
4 ACCEPT all -- anywhere anywhere
5 ACCEPT all -- anywhere anywhere
6 REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
7 ACCEPT all -- anywhere anywhere MAC 00:16:E6:51:22:EF
8 ACCEPT all -- anywhere anywhere MAC 00:16:E6:51:22:EF
9 ACCEPT all -- anywhere anywhere MAC 48:5B:39:A9:D9:05
.............
Это правильно? Чего-то многовато ACCEPT Я так понимаю что если всем разрешено всё то какая разница, добавим мы разрешенные МАК или нет? Или я чего недопонимаю?
Короче я написал шелл скрипт в файл, дал ему соответствующие права, запустил
По выводу команды можно сделать вывод о том, что при задании новых правил забыли очистить список прежних, разрешающих всем всё правил. При этом получилось, что новые правила добавились после прежнего списка. И, поскольку предыдущий список заканчивался режектом для всех оставшихся - на этом режекте iptables и закончит анализ правил. До анализа новых правил дело не дойдет. Отсюда три варианта решения проблемы:
1. Иметь один глобальный скрипт на все правила, как на цепочку INPUT, так и на FORWARD. И в нем вставлять те или иные правила в нужные места.
2. Перед заданием своей новой цепочки правил надо старую очищать. iptables -F FORWARD
3. Если нужно вставить новое правило в сушествующую цепочку, то пользоваться ключем не A[ppend] а I[nsert]. Тогда новые правила будут вставляться в начало списка, а не добавляться к его концу. В котором может быть прописан режект или дроп.
Мне один чел сказал по поводу моего iptables, но я так ничего не понял ( странности он выделил жирным)
"довольно странно фильтровать "внешний интерфейс" по внутренним макам.:
..........
-A FORWARD -i eth0 -o eth1 -m mac --mac-source 00:16:E6:51:22:EF -j ACCEPT
Попробую. Меня собственно говоря интересует почему если я задаю политику -P FORWARD ACCEPT то я могу командой iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP запрещать отдельные mac адреса, а если наоборот, задаю политику -P FORAWARD DROP. не получается разрешить нужные mac - адреса. Может DROP намертво всё глушит и лучше REJECT использовать?
Вот что я вычитал
Iptables Tutorial 1.1.19
"6.5.3. Действие DROP
Данное действие просто "сбрасывает" пакет и iptables "забывает" о его
существовании. "Сброшенные" пакеты прекращают свое движение полностью,
т.е. они не передаются в другие таблицы, как это происходит в случае с
действием ACCEPT. Следует помнить, что данное действие может иметь
негативные последствия, поскольку может оставлять незакрытые "мертвые"
сокеты как на стороне сервера, так и на стороне клиента, наилучшим
способом защиты будет использование действия REJECT особенно при защите
от сканирования портов."
iptables -P FORWARD DROP
for MAC in `cat mac.lst`; do
iptables -A FORWARD -i eth0 -o eth1 -m mac --mac-source $MAC -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m mac --mac-source $MAC -j ACCEPT
done
или
text
#!/bin/sh
iptables -P FORWARD DROP
for MAC in `cat mac.lst`; do
iptables -A FORWARD -m mac --mac-source $MAC -j ACCEPT
done
а если наоборот, задаю политику -P FORAWARD DROP. не получается разрешить нужные mac - адреса. Может DROP намертво всё глушит и лучше REJECT использовать?
В качестве политики по умолчанию допускается использовать DROP и ACCEPT.