nftables отклоняет, вместо этого выносится вердикт

У меня есть настройка nftables, чтобы отклонять пакеты, которые не соответствуют моему блоку разрешения (nft list ruleset добавлено ниже), но вместо этого пакеты отбрасываются.

Для контекста у меня есть служба, которая прослушивает порт 8080, доступ к которому должен иметь только localhost (на данный момент). Моя установка позволяет это, но клиенты откладывают свои запросы вместо того, чтобы получать отказ.

Это набор правил, который я использую (слегка усеченный для краткости), включая трассировки, которые я использовал для отладки:

# nft list ruleset
table inet firewall {
    set allowed_protocols {
            type inet_proto
            elements = { icmp, ipv6-icmp }
    }

    set allowed_interfaces {
            type ifname
            elements = { "lo" }
    }

    set allowed_tcp_dports {
            type inet_service
            elements = { 22, 80, 443 }
    }

    chain allow {
            ct state established,related accept
            meta l4proto @allowed_protocols accept
            iifname @allowed_interfaces accept
            meta nftrace set 1
            tcp dport @allowed_tcp_dports accept
    }

    chain input {
            type filter hook input priority 20; policy accept;
            jump allow
            meta nftrace set 1
            reject
    }

    chain forward {
            type filter hook forward priority 20; policy accept;
            jump allow
            meta nftrace set 1
            reject
    }
}

По моей трассировке я вижу, что вместо этого отбрасываются пакеты:

trace id 36f72c1b inet firewall allow rule meta nftrace set 1 (verdict continue)
trace id 36f72c1b inet firewall allow verdict continue
trace id 36f72c1b inet firewall input rule meta nftrace set 1 (verdict continue)
trace id 36f72c1b inet firewall input rule reject (verdict drop)

Он явно читает "отклонить", но затем все равно решил отказаться. Есть идеи, в чем причина этого?

1 ответ

Решение

Видя verdict dropв следе нормально. Отклонение по-прежнему отправляет правильную ошибку ICMP, а не просто отбрасывает пакет. Вы можете запустить Wireshark и посмотреть на них, если хотите убедиться. Да, это сбивает с толку.

Другие вопросы по тегам