Acessando duas sub-redes isoladas de uma caixa do Linux

1

Eu tenho uma caixa Linux com duas placas de rede, cada uma conectada a uma LAN diferente:

LAN A: 192.168.1.0 255.255.255.0
LAN B: 192.168.2.0 255.255.255.0

Os roteadores são:

RouterA: 192.168.1.1
RouterB: 192.168.2.1

Os pontos de acesso sem fio são:

WAP-B1: 192.168.2.3
WAP-B2: 192.168.2.4

NICs Linux são:

NIC A: 192.168.1.2 (eth0) default gateway 192.168.1.1, metric 100
NIC B: 192.168.2.2 (eth1) metric 101

Aqui está um diagrama ASCII:

+-------+                                                           +-------+ 
| ISP A |                                                           | ISP B |
+-------+                                                           +-------+ 
    |                                                                   |
+---------+      +-------+      +-----------+      +-------+      +-----------+ 
| RouterA | <--> | LAN A | <--> | Linux Box | <--> | LAN B | <--> | RouterB-1 |
+---------+      +-------+      +-----------+      +-------+      +-----------+ 
                                                                    |        |
                                                            +--------+      +--------+
                                                            | WAP-B1 |      | WAP-B2 |
                                                            +--------+      +--------+ 

Eu quero que todo o tráfego da Internet passe pela LAN A e pelo ISP A. Eu só conecto esta caixa do Linux à LAN B para que eu possa executar a administração em dispositivos na LAN-B, particularmente no Roteador B e WAP-B1, WAP-B2. Portanto, quero que apenas os endereços 192.168.2.0/24 sejam roteados pelo NIC B (eth1). Eu quero que todo o outro tráfego seja roteado através do NIC A. Eu não quero que os hosts em qualquer LAN sejam capazes de se conectar uns aos outros (ou pingar uns aos outros, etc.). Quero que a LAN A e a LAN B permaneçam isoladas.

Conectei os cabos de rede e as coisas parecem funcionar. Presumo que as métricas de roteamento foram estabelecidas pela ordem em que eu conectei os cabos. No entanto, gostaria de saber o caminho certo para configurar as regras de roteamento para garantir que eu mantenha uma configuração de trabalho.

UPDATE: Em resposta a um comentário, aqui está a saída de route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
0.0.0.0         192.168.2.1     0.0.0.0         UG    101    0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1

Esta é a tabela de roteamento que eu teria imaginado que estaria correta. (É apenas um palpite.)

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.2.0     192.168.2.1     255.255.255.0   UG    101    0        0 eth1
192.168.1.0     192.168.1.1     255.255.255.0   U     100    0        0 eth0

No NetworkManager > IPv4 > Rotas, eu verifiquei "ignorar rotas obtidas automaticamente" e eu adicionei esta rota estática: 192.168.2.0, netmask: 255.255.255.0, gateway: 192.168.2.1, métrica: 101

Aqui está a tabela de roteamento resultante dessas alterações.

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.2.0     192.168.2.1     255.255.255.0   UG    101    0        0 eth1
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1
192.168.1.0     192.168.1.1     255.255.255.0   U     100    0        0 eth0

Isso não parece certo para mim, mas hoje é o primeiro dia que eu já vi as tabelas de roteamento.

ATUALIZAÇÃO: Estou executando o Arch Linux e o NetworkManager. No entanto, eu preferiria uma resposta baseada em comandos como ip address e ip route .

UPDATE 2: Graças à resposta do @vaha , aqui está a tabela de roteamento desejada:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1

Eu ainda não descobri como criar uma configuração persistente que garanta essa tabela de roteamento após uma reinicialização.

No entanto, posso estabelecer essas rotas manualmente usando estas etapas:

  1. No NetworkManager > IPv4 > Rotas, marque "ignorar rotas obtidas automaticamente" para ambas as interfaces.

  2. $ sudo ip route add default via 192.168.1.1 metric 100 dev eth0

  3. $ sudo ip route delete default via 192.168.2.1 dev eth1

Outras variantes, como não verificar "ignorar rotas obtidas automaticamente" para eth0, não funcionaram. Por exemplo, quando eu apenas ignorei rotas obtidas automaticamente para eth1, na inicialização, meu sistema usava 192.168.2.1 como padrão gw. Esse é um resultado inesperado e confuso.

Minha última pergunta é como configurar meu sistema para que estas sejam as rotas padrão após uma reinicialização?

    
por MountainX 13.10.2018 / 22:25

1 resposta

2

Vamos esclarecer suas preocupações em duas etapas:

PASSO 1

Therefore, I want only addresses 192.168.2.0/24 to be routed through NIC B (eth1). I want all other traffic routed through NIC A.

A tabela de roteamento padrão (a tabela antes de você ser configurada manualmente) fornece as regras de roteamento que você está procurando.

Aqui está a explicação detalhada:

192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1

diz que a sub-rede 192.168.2.0/24 é uma rede local e não há necessidade de um gateway. Qualquer pacote que tenha como alvo um endereço nessa rede será entregue diretamente ao destino sem um salto.

192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

diz o mesmo para a sub-rede 192.168.1.0/24.

0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
0.0.0.0         192.168.2.1     0.0.0.0         UG    101    0        0 eth1

diz que o tráfego restante será roteado por meio de eth0 e eth1, em que a decisão de roteamento depende dos valores da métrica. O valor da métrica inferior tem uma prioridade mais alta. MAS se a eth0 estiver inativa, todo o tráfego será roteado pela eth1 e vice-versa. A propósito, não tenho certeza, mas meu melhor palpite para a eth0 ter uma prioridade mais alta que a eth1 é a ordem alfabética dos nomes das interfaces.

Como conclusão, a tabela a seguir é o que você está procurando. Não estou familiarizado com o NetworkManager, mas acho que você pode ignorar as rotas obtidas automaticamente para ambas as interfaces e definir manualmente as suas próprias para obter essa tabela de roteamento.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1

PASSO 2

I do not want hosts in either LAN to be able to connect to each other (or ping each other, etc.). I want LAN A and LAN B to remain isolated.

Simplesmente conectar sua caixa linux a duas redes diferentes não tem efeito sobre seu isolamento, a menos que haja uma regra NAT definida no firewall da caixa ou que as interfaces da caixa sejam interligadas.

Você pode verificar as regras NAT por meio de iptables ou nftables , que são ferramentas para gerenciar o firewall no Arch Linux. Veja também wiki do Arch Linux - Firewalls .

Exemplo de comando para listar regras de NAT: iptables -t nat -L -v -n

Nenhuma ponte é vista em sua tabela de roteamento, mas você pode verificar as pontes detalhadamente usando uma das formas descritas em Arch Linux wiki - Ponte de rede .

    
por 15.10.2018 / 00:38