TPROXY interfere nas regras de encaminhamento de porta DNAT

TPROXY interfere nas regras de encaminhamento de porta DNAT

Estou configurando o TPROXY no meu roteador VyOS para encaminhar determinado tráfego para um proxy transparente local. Funciona muito bem, até descobrir que todas as minhas regras de encaminhamento de porta DNAT não estão mais funcionando (tempo limite de conexão ao conectar-se a partir de uma rede externa).

Ambiente

  • Roteador: 10.0.0.1/24(o proxy está rodando na 1234porta e adicionando SO_MARK com 0xff)
  • Host Interno: 10.0.0.2/24(A porta 80deve ser exposta ao público)

Regras TPROXY

ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100

nft add table myproxy
nft add chain myproxy prerouting { type filter hook prerouting priority 0 \; }
nft add rule myproxy prerouting ip daddr { 127.0.0.1/32, 224.0.0.0/4, 255.255.255.255/32 } return
nft add rule myproxy prerouting meta l4proto tcp ip daddr 10.0.0.0/24 return
nft add rule myproxy prerouting mark 0xff return
nft add rule myproxy prerouting meta l4proto { tcp, udp } mark set 1 tproxy to 127.0.0.1:1234 accept

nft add chain myproxy output { type route hook output priority 0 \; }
nft add rule myproxy output ip daddr { 127.0.0.1/32, 224.0.0.0/4, 255.255.255.255/32 } return
nft add rule myproxy output meta l4proto tcp ip daddr 10.0.0.0/24 return
nft add rule myproxy output mark 0xff return
nft add rule myproxy output meta l4proto { tcp, udp } mark set 1 accept

nft add table filter
nft add chain filter divert { type filter hook prerouting priority -150 \; }
nft add rule filter divert meta l4proto tcp socket transparent 1 meta mark set 1 accept

Regras do DNAT

$ tabela de lista nft nat

table ip nat {
    chain PREROUTING {
        type nat hook prerouting priority dstnat; policy accept;
        iifname "pppoe0" tcp dport { 8080 } counter packets 7 bytes 400 dnat to 10.0.0.2:80
    }
}

Sintomas

A conexão RouterPublicIP:8080está expirando. Idealmente, ele deve encaminhar o tráfego para 10.0.0.2:80.

Acho que o tráfego de entrada do DNAT é encaminhado erroneamente para o proxy (em vez do host real 10.0.0.2), mas não consegui descobrir as regras NFT corretas.

Desde já, obrigado!

informação relacionada