
É possível configurar um servidor Linux com iptables para fazer isso?
PC (192.168.1.11) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router1 (192.168.0.1)
PC (192.168.1.12) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router1 (192.168.0.1)
PC (192.168.1.13) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router1 (192.168.0.1)
...
PC (192.168.1.21) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router2 (192.168.0.2)
PC (192.168.1.22) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router2 (192.168.0.2)
PC (192.168.1.23) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router2 (192.168.0.2)
...
PC (192.168.1.31) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router3 (192.168.0.3)
PC (192.168.1.32) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router3 (192.168.0.3)
PC (192.168.1.33) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router3 (192.168.0.3)
...
Responder1
tabelas de ipnão é uma ferramenta para roteamento. Embora às vezes possa ser usado para complementar a configuração de roteamento marcando pacotes, isso nem é necessário aqui.
O que é necessário éroteamento baseado em política: usando algo além do endereço de destino para escolher uma rota: o endereço de origem.
Supondo ou afirmando que:
- o servidor Linux será chamadoservidor
- Todos os 9 PCs,servidore os 3 roteadores já estão configurados conforme esquema do OP
- em particular, os PCs não precisam de nenhuma configuração especial. Eles só precisam terservidorcomo gateway padrão.
- Todos os endereços no esquema do OP usam /24CIDR/máscara de rede.
- servidorusa:
- eth0com endereço 192.168.1.1/24
- eth1com endereço 192.168.0.100/24
- servidorpode ou não ter um gateway padrão, não importa. O roteamento de políticas usará suas próprias configurações separadas para o tráfego encaminhado, portanto, não depende do gateway padrão da tabela de roteamento principal, se houver.
Se ainda não tiver feito isso, os 3 roteadores precisarão de rotas adicionais para alcançar 192.168.1.0/24 comservidorcomo porta de entrada. O mesmo seria necessário em sistemas para acessar a LAN 192.168.0.0/24. Se eles estivessem executando Linux, isso seria feito nos 3 roteadores ou em qualquer outro sistema com:
ip route add 192.168.1.0/24 via 192.168.0.100
EDITAR: comoperguntou mais tarde, se não for permitido reconfigurar outros sistemas na LAN 192.168.0.0/24,servidorpode usar NAT no servidor para ocultar a existência de 192.168.1.0/24 para esses sistemas, incluindo os 3 roteadores. Como isso é feito fora da fase de roteamento, será independente do restante da configuração de roteamento abaixo.
Então, em vez de fazer o que foi feito acima em roteadores (ou qualquer outro sistema), pode-se usar umtabelas de ip MASQUERADE
alvo emservidor:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
Agoraservidor, três grupos alternativos de regras são criados para alcançar três tabelas de roteamento adicionais: uma por roteador selecionado, com este roteador como gateway padrão. É correto que só pode haver um gateway padrão, mas é um por tabela de roteamento.
Como os endereços IP do PC não são ordenados em blocos, são utilizadas regras 3x3 (com blocos IP alinhados corretamente, 3 regras seriam suficientes com CIDR/máscaras de rede adequadas).
Descrito emip rule(8)
:
Em algumas circunstâncias, queremos rotear pacotes de maneira diferente, dependendo não apenas dos endereços de destino, mas também de outros campos do pacote: endereço de origem, protocolo IP, portas do protocolo de transporte ou até mesmo carga útil do pacote. Esta tarefa é chamada de 'roteamento de política'.
[...]
Cada regra de roteamento de política consiste em um seletor e um predicado de ação.
Neste caso, o seletor selecionará os endereços de origem do PC e a ação será procurar as tabelas de roteamento adicionais, substituindo assim a pesquisa usual para oprincipaltabela para escolher um gateway dedicado.
Regras de roteamento (que poderiam ser simplificadas até apenas 3 regras se os endereços IP dos PCs estivessem alinhados em blocos adequados):
ip rule add from 192.168.1.11 lookup 10
ip rule add from 192.168.1.12 lookup 10
ip rule add from 192.168.1.13 lookup 10
ip rule add from 192.168.1.21 lookup 20
ip rule add from 192.168.1.22 lookup 20
ip rule add from 192.168.1.23 lookup 20
ip rule add from 192.168.1.31 lookup 30
ip rule add from 192.168.1.32 lookup 30
ip rule add from 192.168.1.33 lookup 30
Descrito emip route(8)
:
Tabelas de rotas: Linux-2.x pode empacotar rotas em diversas tabelas de roteamento identificadas por um número na faixa de 1 a 2^32-1 ou pelo nome do arquivo /etc/iproute2/rt_tables Por padrão todas as rotas normais são inseridas no arquivo principal tabela (ID 254) e o kernel só usa esta tabela ao calcular rotas. [...]
Preencha tabelas de roteamento adicionais com valores arbitrários 10 20 e 30. Cada tabela de roteamento tratará uma visão parcial do roteamento adequada ao problema a ser resolvido. Aqui trata-se de escolher um gateway diferente.
ip route add default via 192.168.0.1 dev eth1 table 10
ip route add default via 192.168.0.2 dev eth1 table 20
ip route add default via 192.168.0.3 dev eth1 table 30
Caso os PCs precisem acessar outros sistemas em 192.168.0.0/24, essas rotas LAN devem ser adicionadas (para evitar ganchos parciais nos roteadores, o que nunca é uma boa ideia):
ip route add 192.168.0.0/24 dev eth1 table 10
ip route add 192.168.0.0/24 dev eth1 table 20
ip route add 192.168.0.0/24 dev eth1 table 30
O resultado pode ser verificadoservidorcom ip route get
:
root@server:~# ip route get from 192.168.1.11 iif eth0 to 8.8.8.8
8.8.8.8 from 192.168.1.11 via 192.168.0.1 dev eth1 table 10
cache iif eth0
root@server:~# ip route get from 192.168.1.21 iif eth0 to 8.8.8.8
8.8.8.8 from 192.168.1.21 via 192.168.0.2 dev eth1 table 20
cache iif eth0
root@server:~# ip route get from 192.168.1.31 iif eth0 to 8.8.8.8
8.8.8.8 from 192.168.1.31 via 192.168.0.3 dev eth1 table 30
cache iif eth0
Outros sistemas na LAN 192.168.1.0/24 seguem oprincipaltabela de roteamento sem roteamento baseado em política. Por exemplo seservidornão tem rota padrão emprincipaltabela, mas apenas suas duas rotas LAN, nada mais será roteado além de 192.168.0.0/24 LAN:
root@server:~# ip route get from 192.168.1.41 iif eth0 to 8.8.8.8
RTNETLINK answers: Network is unreachable
Notas
Os 3 roteadores poderiam ser, por exemplo, gateways de Internet fazendo NAT e acessando a Internet em uma configuração barata usando cada um um único endereço IP público diferente (possivelmente usando um ISP diferente), tornando os 3 grupos de PCs vistos na Internet com 3 endereços IP públicos diferentes.
A configuração acima deverá ser integrada com a ferramenta de configuração de rede noservidor. Existem muitas dessas ferramentas dependendo da distribuição, comoifupdown,Gerente da rede,rede systemd,plano de redee provavelmente muitos outros, cada um com seu método de configuração específico. Também é certamente possível usar um script com os comandos acima.