Загрузка данных


#!/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;
    }
}