Como escrever uma regra de snat nfttables?

0

Configuração:

  1. Linux (experimentado em LEDE, OpenWrt, Ubuntu 16)
  2. iptables desativados (módulos do kernel descarregados)
  3. nftables (tentei v. 0.8, 0.8.2)
  4. cadeias e NAT são criados de acordo com o wiki oficial do nftables :

    % nft add table nat
    % nft add chain nat prerouting { type nat hook prerouting priority 0 \; }
    % nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
    

Por esta configuração, o dnat funciona como esperado, por exemplo:

% nft add rule nat prerouting tcp dport 15000 dnat 192.168.0.50:20000

redireciona todos os pacotes TCP recebidos da porta 15000 para 192.168.0.50: 20000 e vice-versa.

No entanto, nenhuma regra de snat é processada (nenhuma regra de):

% nft add rule nat postrouting counter ip saddr 192.168.0.50 snat 1.2.3.4
% nft add rule nat postrouting counter tcp sport 20000 snat 1.2.3.4:1234
% nft add rule nat postrouting counter ip protocol tcp drop

Eu tentei estas regras separadamente ou em variações (oif, ip + tcp, ...) - os pacotes ainda estão passando inalterados (provados pela WireShark) ou não foram descartados. Embora:

  1. A cadeia de pós-processamento é processada, pois se eu remover a cadeia pós-saída, o dnat (por pré-layout) pára para funcionar (como esperado).
  2. Adicionando uma regra de eliminação a trabalhos de cadeias de entrada ou saída.
  3. A adição de cadeias com type nat hook input/output de acordo com a sugestão da AB ainda não resolver o problema.

Então, como escrever uma regra de snatch nftables?

    
por Andrey Belkin 04.05.2018 / 13:02

0 respostas