Como combinar tanto UDP como TCP para portas dadas em uma linha com nftables

0

Como posso fazer isso em uma única linha?

tcp dport 53 counter accept comment "accept DNS"
udp dport 53 counter accept comment "accept DNS"
    
por Persian 06.06.2018 / 15:49

1 resposta

1

Para dizer que é possível (mas provavelmente não é útil), sim, é possível, usando nftables recentes o suficiente e uma expressão de carga útil bruta.

Portanto, para a tabela inet (dual ip / ip6 ), primeiro é necessário filtrar o protocolo de nível 4 correto (aqui TCP = 6 e UDP = 17) usando um conjunto e filtrar a porta 53 Isso é útil, TCP e UDP tem o mesmo local para a porta de destino em seus respectivos formatos. dport é expresso como o deslocamento da porta de destino na parte TCP / UDP do pacote: 16 bits, com um tamanho de 16 bits, como visto nos links anteriores. Embora tcp e udp possam ser usados por seu nome simbólico, parece que dns deve ser declarado como 53 não dns , só imagino que dns/tcp e dns/udp (ou domain see later) estão em dois "namespaces de protocolo" diferentes.

O comando resultante é (aspas simples adicionais ou se aspas duplas são necessárias aqui):

# nft 'add rule inet filter input meta l4proto {tcp, udp} @th,16,16 53 counter accept comment "accept DNS"'

Se você quiser apenas IPv4, inicialize a tabela e correntes ip correspondentes e substitua inet por ip .

Por favor, note também que quase o mesmo é dado como exemplo nas notas de versão 0.8.3 e agora está incluído em < a href="https://manpages.debian.org/stretch-backports/nftables/nft.8.en.html#RAW_PAYLOAD_EXPRESSION"> página de manual do nft , o exemplo não work: dns e http precisam ser substituídos por 53 e 80 (e, de qualquer forma, algumas distribuições / versões podem ter exigido domain em vez de dns ).

    
por 31.07.2018 / 14:44