Linux Roteamento em rede para endereços IP virtuais de uma sub-rede diferente

6

Novo na rede linux, tinha uma questão sobre o roteamento para endereços IP virtuais de uma sub-rede diferente.

Eu tenho três servidores (todos eles podem pingar uns aos outros):

A 10.10.51.182 (connected to router Y)
B 10.10.51.183 (connected to router Y)
C 10.10.60.10 (connected to router Z)

No servidor A , criei 1000 interfaces virtuais:

# ifconfig eth0:0 192.168.1.1 netmask 255.255.0.0  
# ifconfig eth0:1 192.168.1.2 netmask 255.255.0.0  
....  
# ifconfig eth0:999 192.168.5.200 netmask 255.255.0.0  

Cada interface virtual está simulando um dispositivo de câmera, com o software de simulação de câmera.

No servidor B , adicionei a seguinte rota:

# route add -net 192.168.0.0 netmask 255.255.0.0 eth0

E voila, B pode acessar / pingar as interfaces virtuais da máquina A .

Servidor C que está em uma sub-rede diferente (10.10.60.0), adicionou essa rota, mas até eu tive uma esperança muito baixa de que funcionasse:

# route add -net 192.168.0.0 netmask 255.255.0.0 eth0

Como esperado, não consegui acessar as interfaces virtuais do servidor A , então removi a rota e adicionei a seguinte rota usando o gateway ip do roteador Y :

# route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.10.51.1 eth0
SIOCADDRT: Network is unreachable

O gateway 10.10.51.1 é pingável pelo servidor C , mas acho que a mensagem de erro implica que o gw não está diretamente na mesma sub-rede (10.10.60) .

Que configuração / rota pode ser configurada no servidor A e / ou C para C fazer ping / acessar as interfaces virtuais do servidor < strong> A . Não tenho acesso para alterar a configuração dos roteadores.

No entanto, se não for absolutamente possível usar apenas a configuração dos servidores, alguém poderia explicar em termos de rede por que B pode acessar as interfaces virtuais de A , mas C não pode acessá-los. O roteador Y vê os pacotes vinculados a '192.168.0.0' de C e os solta automaticamente, enquanto que os pacotes originados da mesma sub-rede ( B ) é permitido?

    
por Saad Malik 26.07.2012 / 19:49

2 respostas

4

Solução simples cria um túnel entre os dois servidores, por exemplo:

No servidor A:

ip tunnel add tunnel mode ipip remote 10.10.60.10
ip addr add 10.1.1.1/24 dev tunnel
sysctl -w net.ipv4.ip_forward=1

O último comando é encaminhar pacotes do seu dispositivo de túnel recém-criado para os seus dispositivos de rede virtual.

No servidor C

ip tunnel add tunnel mode ipip remote 10.10.51.182
ip addr add 10.1.1.2/24 dev tunnel
ip route add 192.168.0.0/16 via 10.1.1.1

Dependendo dos seus firewalls entre os servidores, talvez seja necessário ajustar algumas regras.

Explicação: Server A e Server B estão em um segmento de rede compartilhado, por exemplo eles podem enviar pacotes entre si sem a necessidade de enviar os pacotes ao seu gateway. Isso significa que Server B apenas tenta diretamente resolver o endereço 192.168.1.1 via ARP e Server A responde a eles.

Server A e Server C estão em segmentos de rede diferentes, por exemplo se Server C apenas pedir 192.168.1.1 (este seria seu comando de rota para Server C ), ele não receberá resposta. Para resolver esse problema, você geralmente pode especificar como alcançar um sistema específico por meio de tabelas de roteamento, mas só pode especificar o próximo salto. Como router Z parece não saber sobre 192.168.0.0/24 , você precisa criar um túnel entre os dois sistemas.

Uma pequena dica adicional, você não precisa criar dispositivos ethernet virtuais, você pode adicionar um número arbitrário de endereços IP a um dispositivo de rede, por exemplo:

for first in {1..4} ; do
   for second in {1..255} ; do
     ip addr add 192.168.$first.$second/16 dev eth0
    done
done
    
por 26.07.2012 / 21:07
2

Você tem algumas opções:

  • O computador C precisa de um link para a mesma rede física em que A e B estão.
  • O roteador Y precisa ter um endereço em 192.168.0.0/16 e o roteador Z precisa de uma rota para 192.168.0.0/16 pelo roteador Y.
  • Crie um túnel ip-ip (ou VPN) entre o computador C e o computador A; encaminhar o tráfego para 192.168.0.0/16 através da interface do túnel.

A criação do túnel é provavelmente sua melhor aposta para modificar somente os computadores A e C. Consulte o IP-IP Howto para passos.

    
por 26.07.2012 / 21:02