# Создаем конфигурационный файл
sudo tee /etc/nftables.conf << 'EOF'
#!/usr/sbin/nft -f
flush ruleset
# Таблица NAT
table ip nat {
# DNAT: перенаправление HTTP с WAN на веб-сервер
chain prerouting {
type nat hook prerouting priority -100; policy accept;
iifname "enp0s9" tcp dport 80 dnat to 192.168.12.10
}
# Маскарадинг для выхода в интернет
chain postrouting {
type nat hook postrouting priority 100; policy accept;
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
# Доступ к прокси из LAN
ip saddr 192.168.12.0/24 tcp dport 3144 accept
# 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;
}
}
EOF
# Применяем правила
sudo nft -f /etc/nftables.conf
# Проверяем
sudo nft list ruleset