Так вот, в ней есть замечательная вещь - в ответ на разные события, связанные с интерфейсами, он способен запускать скрипты, которые лежат в /etc/NetworkManage/dispatcher.d, и это можно использовать, в том числе, для подгрузки правил iptables. Самое главное, чтобы скрипт был 1) обычным файлом; 2) владельцем был root; 3) не был доступен на запись кому-то еще; 4) не был suid; 5) разрешен для исполнения владельцем (короче, права должны быть не более разрешающими, чем 755).
Все подробности о том, как этот скрипт исполняется и какие параметры получит, можно выгрести в man NetworkManager(8). Единственная печаль - он не получает никакого имени профиля настроек для интерфейса, а только его имя.
Но уже имея это, можно сунуть пару простых скриптов для настройки IPv4 или IPv6 фильтров (просто сменив iptables на ip6tables):
1: if [ -x /usr/bin/logger ]; then
2: LOGGER="/usr/bin/logger -s -p daemon.info -t FirewallHandler"
3: else
4: LOGGER=echo
5: fi
6: case "$2" in
7: up)
8: if [ ! -r /etc/iptables.rules ]; then
9: ${LOGGER} "No iptables rules exist to restore."
10: return
11: fi
12: if [ ! -x /sbin/iptables-restore ]; then
13: ${LOGGER} "No program exists to restore iptables rules."
14: return
15: fi
16: ${LOGGER} "Restoring iptables rules"
17: /sbin/iptables-restore -c < /etc/iptables.rules
18: ;;
19: down)
20: if [ ! -x /sbin/iptables-save ]; then
21: ${LOGGER} "No program exists to save iptables rules."
22: return
23: fi
24: ${LOGGER} "Saving iptables rules."
25: /sbin/iptables-save -c > /etc/iptables.rules
26: ;;
27: *)
28: ;;
29: esac
Скрипт нужно назвать, например, /etc/NetworkManager/dispatcher.d/01firewall и обязательно установить разрешения 0755.
Комментариев нет:
Отправить комментарий