Preciso configurar meu roteador (Ubuntu Server 24/ NNFTables) para que os computadores conectados às interfaces lan1 e lan2 possam navegar na internet usando as interfaces wan1 ou wan2, dependendo do IP da sub-rede.
Recebo internet através de 2 provedores diferentes.
ISP 1: Bloco ip: 111.11.111.0/28
ISP 2: Bloco ip: 222.22.222.8/29
configurar netplan yaml:
rede: ethernet: wan1: endereços: - 111.11.111.2/28 - 111.11.111.3/28 - 111.11.111.4/28 - 111.11.111.5/28 - 111.11.111.6/28 - 111.11.111.7/28 - 111.11.111.8/28 - 111.11.111.9/28 - 111.11.111.10/28 - 111.11.111.11/28 - 111.11.111.12/28 - 111.11.111.13/28 - 111.11.111.14/28 servidores de nomes: endereços: - 8.8.8.8 - 8.8.4.4 procurar: [] rotas: - para: padrão via: 111.11.111.1 wan2: endereços: - 222.22.222.10/29 - 222.22.222.11/29 - 222.22.222.12/29 - 222.22.222.13/29 - 222.22.222.14/29 servidores de nomes: endereços: - 8.8.8.8 - 8.8.4.4 procurar: [] rotas: - para: padrão via: 222.22.222.9 lan1: endereços: - 192.168.10.1/24 servidores de nomes: endereços: [] procurar: [] lan2: endereços: - 192.168.20.1/24 servidores de nomes: endereços: [] procurar: [] versão: 2`
usertest@router1:~$ rota ip padrão via 111.11.111.1 dev wan1 proto estático 192.168.10.0/24 dev enp4s0 proto kernel escopo link src 192.168.10.1 192.168.20.0/24 dev enp5s0 proto kernel escopo link src 192.168.20.1 111.11.111.0/28 dev enp1s5 proto kernel escopo link src 111.11.111.2 222.22.222.8/29 dev enp8s0 proto kernel escopo link src 222.22.222.9
Estações de sub-rede e seus respectivos IPs públicos que gostamos de navegar:
192.168.10.101 ---> 111.11.111.11 192.168.10.102 ---> 111.11.111.12 192.168.10.201 ---> 222.22.222.11 192.168.10.202 ---> 222.22.222.12 192.168.20.10 ---> 222.22.222.10
Vi que preciso trabalhar com várias tabelas de roteamento usando IP ROUTE, mas todas as configurações que tentei falharam...
Alguém sabe como posso resolver isso?
Já tentei algumas configurações de nftables/rota ip... mas não consegui fazer funcionar... Errei tanto que nem sei tudo que tentei... Agora a configuração está assim:
$ rota ip padrão via 111.11.111.9 dev wan1 192.168.10.0/24 dev lan1 proto kernel escopo link src 192.168.10.1 192.168.20.0/24 dev lan2 proto kernel escopo link src 192.168.20.1 111.11.111.0/28 dev wan1 proto kernel escopo link src 111.11.111.2 222.22.222.8/29 dev wan2 proto kernel escopo link src 111.11.111.10 $ ip rota mostrar tabela 100 padrão via 111.11.111.1 dev wan1 proto estático $ ip rota mostrar tabela 200 padrão via 222.22.222.9 dev wan2 proto estático $ ip regra mostrar 0: de todas as pesquisas locais 32764: de 222.22.222.8/29 pesquisa 200 proto estático 32765: de 111.11.111.0/28 pesquisa 100 proto estático 32766: de todas as pesquisas principais 32767: de todas as pesquisas padrão
A configuração de roteamento que você mostra na sua pergunta parece uma parte substancial da solução. Para testar as coisas, eu montei uma simulação do seu ambiente usando Kathara ; você pode encontrar meu ambiente de teste completo aqui . A topologia de teste se parece com isso:
O objetivo é que possamos alcançar
remotehost
os nós à direita (node00
através denode11
), e cada nó usará o caminho de saída apropriado derouter
.O
router
nó neste diagrama corresponde ao sistema que você está tentando configurar. Ele tem a seguinte configuração de interface:A seguinte tabela de roteamento padrão:
As seguintes regras de roteamento de políticas:
Na tabela
111
:Na tabela
222
:Para atingir seus objetivos NAT, o roteador tem o seguinte conjunto de regras NFT:
Isso aplica as entradas NAT estáticas que você listou na sua pergunta e aplica mascaramento regular a qualquer coisa com
lan1
oulan2
sem uma entrada explícita.Com essa configuração em vigor, se eu executar um
tcpdump
onremotehost
, assim:E então tentamos
ping -c1 remotehost
denode00
, vemos:O caminho de
node00
pararemotehost
(a) tem o endereço de origem esperado e (b) está usando o caminho esperado. Similarmente, se tentarmos a mesma coisa denode01
, veremos:Novamente, ele está usando o caminho esperado, e vemos que nosso endereço visível externamente é
111.11.111.12
, como esperado de nossos mapeamentos NAT.Se tentarmos operações semelhantes a partir de nós em
lan2
, veremos emnode10
:E de
node11
:Até onde posso perceber, esse comportamento atende a todos os seus objetivos.