ansible/MY/nft_config.yaml
2026-05-22 06:43:27 +04:00

97 lines
2.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
- name: Настройка nftables с белым списком портов и VIP адресами
hosts: hip
become: yes
gather_facts: yes
vars:
# VIP адреса (полный доступ)
vip_addresses:
- "192.168.1.100"
- "10.10.10.50"
- "172.16.0.10"
# Белый список TCP портов
white_list_tcp_ports:
- 35130 # SSH
- 80 # HTTP
- 443 # HTTPS
- 5432 # PostgreSQL
- 8080 # Jenkins/Proxy
- 8443 # Alternative HTTPS
# Белый список UDP портов
white_list_udp_ports:
- 53 # DNS
- 123 # NTP
- 1194 # OpenVPN
# Дополнительные настройки
enable_ip_forwarding: true
nftables_log_prefix_input: "[nftables-input] Dropped: "
nftables_log_prefix_forward: "[nftables-forward] Blocked non-whitelist port: "
tasks:
- name: Установка nftables
apt:
name: nftables
state: present
update_cache: yes
- name: Создание директории для шаблонов (если не существует)
file:
path: /etc/nftables
state: directory
mode: '0755'
- name: Копирование конфигурации nftables из шаблона
template:
src: templates/nft/nftables.conf.j2
dest: /etc/nftables.conf
mode: '0644'
backup: yes
notify: restart nftables
- name: Включение IP forwarding (если нужно)
sysctl:
name: "{{ item }}"
value: '1'
sysctl_set: yes
state: present
reload: yes
loop:
- net.ipv4.ip_forward
- net.ipv6.conf.all.forwarding
when: enable_ip_forwarding
- name: Убеждаемся что nftables запущен и включен
systemd:
name: nftables
state: started
enabled: yes
- name: Проверка синтаксиса конфигурации
command: nft -c -f /etc/nftables.conf
register: nft_check
changed_when: false
- name: Вывод результата проверки
debug:
msg: "✅ Конфигурация nftables валидна"
when: nft_check.rc == 0
- name: Применение правил (если не были применены при старте)
command: nft -f /etc/nftables.conf
when: nft_check.rc == 0
notify: restart nftables
handlers:
- name: restart nftables
systemd:
name: nftables
state: restarted
- name: validate nftables
command: nft -c -f /etc/nftables.conf
listen: "restart nftables"