#!/usr/sbin/nft -f
flush ruleset
# === Таблица NAT ===
table ip nat {
chain prerouting {
type nat hook prerouting priority -100; policy accept;
# DNAT: перенаправляем HTTP на веб-сервер
iifname "enp0s9" tcp dport 80 dnat to 192.168.12.10
}
chain postrouting {
type nat hook postrouting priority 100; policy accept;
# Маскарадинг для выхода в интернет (WAN интерфейс enp0s3 - NAT)
oifname "enp0s3" masquerade
}
}
# === Таблица фильтрации ===
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
# Разрешаем установленные соединения
ct state established,related accept
# Разрешаем loopback
iifname "lo" accept
# Разрешаем SSH из LAN
ip saddr 192.168.12.0/24 tcp dport 22 accept
# Разрешаем DNS
udp dport 53 accept
tcp dport 53 accept
# Разрешаем доступ к Squid из LAN (порт 3144)
ip saddr 192.168.12.0/24 tcp dport 3144 accept
# Разрешаем ICMP (ping)
ip protocol icmp accept
# Логируем остальной трафик
log prefix "INPUT_DROP: " drop
}
chain forward {
type filter hook forward priority filter; policy accept;
# Разрешаем трафик из LAN в интернет
ip saddr 192.168.12.0/24 oifname "enp0s3" accept
# Разрешаем ответы из интернета в LAN
ip daddr 192.168.12.0/24 iifname "enp0s3" ct state established,related accept
}
chain output {
type filter hook output priority filter; policy accept;
}
}