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


# Создаем конфигурационный файл
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