Atualização 2022-09-15:
Acontece que o que eu estava tentando alcançar não faz muito sentido. Portanto, na verdade, essa pergunta deve ser excluída. No entanto, existem alguns comentários muito esclarecedores; portanto, vou deixá-lo como está no momento e deixar a decisão sobre seu destino para a comunidade.
Pergunta original:
Atualmente estou tentando aprender nftables
e tenho feito alguns progressos. Agora eu tenho o seguinte problema (por favor, tenha paciência comigo se a pergunta for burra, mas todas as referências apontam para wiki.netfilter.org, que atualmente está inativa (minha sorte de sempre :-)):
Eu tenho uma rede IPv4 com alguns PCs clientes e um PC roteador/firewall que está sendo executado nftables
. O roteador tem dois endereços IP 192.168.20.253
e 192.168.20.254
. O primeiro é apenas para gerenciamento do roteador (por exemplo, um daemon SSH está escutando no roteador nesse endereço), enquanto o último é o endereço de gateway que os clientes devem usar.
No conjunto de regras do roteador nftables
, gostaria de ser capaz de distinguir entre os pacotes que entraram .253
(para esses pacotes, permitiria apenas SSH quando o daddr
(endereço de destino) realmente for .253
) e os pacotes que entraram .254
(para esses pacotes, eu permitiria apenas se o daddr
estiver fora da rede local).
Eu sei como conseguir isso se .253
e .254
forem atribuídos a duas interfaces diferentes. Mas este não é o caso; ambos os endereços IP do roteador são atribuídos à mesma interface.
Alguém poderia me dar uma dica? Não encontrei dicas em man nft
. Ele menciona expressões de roteamento como ip
ou nexthop
, mas isso obviamente não ajuda. Preciso criar duas interfaces (na mesma NIC) e atribuir .253
a uma delas e .254
a outra?
Então temos algo como:
Portanto, ambos na mesma porta ethernet física (L1) e no mesmo endereço MAC (L2).
Ou seja, os clientes podem configurar o gateway em seus computadores como
192.168.20.253
ou como192.168.20.254
Vamos ver qual é o problema aqui.
...
Execute um servidor DNS simples e permita que o cliente use nomes DNS em vez de IPs para se conectar.
A maneira normal no seu cenário é verificar o IP do dst e configurar o DNS. Veja acima.
Você só precisa de uma interface separada se quiser separar os usuários nas camadas física e de enlace de dados.
Além disso, os endereços IP que você usa da mesma sub-rede IP, portanto, mesmo com duas interfaces, não faz sentido e também você terá problemas de roteamento quando a mesma sub-rede for acessada por meio de duas interfaces.
Você não pode fazer com que 192.168.20.253 e 192.168.20.254 estejam em sub-redes diferentes maiores que o prefixo /31.