addons_nftables
<a href="https://netfilter.org/projects/nftables/index.html">
<img src="https://netfilter.org/images/netfilter-logo3.png" alt="Логотип NFTables" width="400"/>
</a>
# Ansible Роль - Дополнения для NFTables
Роль для развертывания дополнений для NFTables на серверах Linux.
<a href='https://ko-fi.com/ansible0guy' target='_blank'><img height='35' style='border:0px;height:46px;' src='https://az743702.vo.msecnd.net/cdn/kofi3.png?v=0' border='0' alt='Купите мне кофе' />
[![Статус теста Molecule](https://badges.ansibleguy.net/addons_nftables.molecule.svg)](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/molecule.sh.j2)
[![Статус теста YamlLint](https://badges.ansibleguy.net/addons_nftables.yamllint.svg)](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/yamllint.sh.j2)
[![Статус теста PyLint](https://badges.ansibleguy.net/addons_nftables.pylint.svg)](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/pylint.sh.j2)
[![Статус теста Ansible-Lint](https://badges.ansibleguy.net/addons_nftables.ansiblelint.svg)](https://github.com/ansibleguy/_meta_cicd/blob/latest/templates/usr/local/bin/cicd/ansiblelint.sh.j2)
[![Ansible Galaxy](https://badges.ansibleguy.net/galaxy.badge.svg)](https://galaxy.ansible.com/ui/standalone/roles/ansibleguy/addons_nftables)
Логи Molecule: [Короткие](https://badges.ansibleguy.net/log/molecule_addons_nftables_test_short.log), [Полные](https://badges.ansibleguy.net/log/molecule_addons_nftables_test.log)
**Тестировалось на:**
* Debian 11
* Debian 12
## Установка
```bash
# последняя версия
ansible-galaxy role install git+https://github.com/ansibleguy/addons_nftables
# из galaxy
ansible-galaxy install ansibleguy.addons_nftables
# или для настраиваемого пути роли
ansible-galaxy install ansibleguy.addons_nftables --roles-path ./roles
Документация
- NFTables: Вики
- Посмотрите пример!
- Управление всеми NFTables через Ansible: ansibleguy.infra_nftables
Использование
Вы можете управлять основной конфигурацией NFTables с помощью роли ansibleguy.infra_nftables!
Конфигурация
Вы можете найти более подробный пример здесь: Пример!
Определите конфигурацию по мере необходимости:
nftables_addons:
enable:
dns: true # включить дополнение DNS
dns_v6: true # включить обработку DNS для IPv6
iplist: true # включить дополнение IPList
iplist_v6: true # включить обработку IPList для IPv6
# timer: true # вы можете отключить управление таймером, если хотите делать это сами
# systemd: true # обновлять дополнения с помощью таймера systemd
# cron: false # обновлять дополнения с помощью cron-задачи
# include: true # отключить авто-включение дополнений в /etc/nftables.conf
config:
iplists:
iplist_tor_exit_nodes: # имя переменной
urls: ['https://check.torproject.org/torbulkexitlist']
separator: "\n"
comment: '#'
dns_records:
ntp_servers: ['0.europe.pool.ntp.org', '1.europe.pool.ntp.org']
repo_debian: ['deb.debian.org', 'debian.map.fastlydns.net', 'security.debian.org']
ext: 'nft' # расширение, используемое в конфигурационных файлах nftables
path:
base:
config: '/etc/nftables.conf'
dir: '/etc/nftables.d'
addon:
dir: '/etc/nftables.d/addons'
timer:
systemd:
dns: '*:0/15' # обновление каждые 15 минут
iplist: '*-*-* 00,12:00:00' # обновление дважды в день
# cron:
# dns: # каждые 15 минут
# minute: '*/15'
# iplist: # дважды в день
# minute: '0'
# hour: '0,12'
Выполнение
Запустите плейбук:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml
Также доступны полезные теги:
- dns
- iplist
- config (обновить только конфигурацию дополнения)
Чтобы отладить ошибки - вы можете установить переменную 'debug' во время выполнения:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes
Функциональность
Конфигурация
Стандартная конфигурация:
- Таймер systemd для запуска дополнений
- Логирование в Syslog
- Приложение для переменных IPv6: '_v6'
- Например: переменная 'repo_debian' => 'repo_debian_v6'
- Таймеры
- DNS => обновляется каждые 15 минут
- IP-список => обновляется дважды в день
- Systemd
- Идентификатор Syslog: 'nftables_addon_{ addon }'
- Префикс службы/таймера: 'ansibleguy.addons_nftables-'
Стандартные опции:
- Таймер для автоматического обновления переменных
- Таймер systemd
- Добавление include в '/etc/nftables.conf'
Стандартные отключенные опции:
- Дополнения
- DNS
- Обработка DNS для IPv6
- IP-списки
- Обработка IP-списка для IPv6
- DNS
- Таймер Cron-задачи
- Дополнения
Информация
Примечание: эта роль в настоящее время поддерживает только системы на базе debian.
Примечание: большинство функций роли можно включить или отключить.
Для всех доступных опций смотрите стандартную конфигурацию в главном файле настроек!
Предупреждение: Не каждая настройка/переменная, которую вы предоставляете, будет проверена на корректность. Плохая конфигурация может нарушить работу роли!
Примечание: Каждая определенная переменная будет создана так как отсутствие переменной может сломать вашу конфигурацию!
Если DNS-запись не может быть разрешена или нет возвращаемого значения - будет установлено значение по умолчанию (IPv4: 0.0.0.0, IPv6: ::) .
```
Ansible Role to provision Add-Ons for NFTables on Linux servers
ansible-galaxy install ansibleguy/addons_nftables