Bem-vindo: Qui, 28 de Março 2024, 14:45 Pesquisa avançada

Criando rotas entre redes distintas no Linux

Escreveu alguma aplicação ou script que quer partilhar? Ou conhece algo que quer partilhar? Sabe alguma linguagem de programação e quer partilhar esse conhecimento com um tutorial? Tem alguma dúvida em alguma linguagem? Então este é o sítio certo.

Criando rotas entre redes distintas no Linux

Mensagempor nuno_nunes » Ter, 17 de Junho 2014, 23:53

(Roteador Linux)




Seria ideal trabalhar em uma empresa que lhe fornecesse o material necessário pra tudo, não é mesmo? Imagina você precisar fazer um roteamento entre redes distintas (criar rotas) e dizer pro seu chefe: preciso de um Cisco pra fazer essa tarefa. E ele te responder: ok. Amanhã estará na sua mesa. É, mas nem sempre é assim… rs.

Hoje vamos colocar o nosso Linux pra funcionar como um roteador. Para isso você vai precisar de:

1) Uma máquina rodando Linux

2) Quantas placas de rede forem necessárias para as conexões

3) Conhecimento

E é justamente nesse ponto 3 que muita gente trava…

Antes de continuar, você sabia que o sistema operacional usado nos roteadores Cisco (cito ele pois é a referência no mercado) roda um kernel Linux? O IOS e o NX-OS são baseados no Red Hat e usam um kernel Linux customizado.

Mas vamos deixar pra lá o blá-blá-blá e vamos por a mão na massa.

Cenário




Imaginemos que precisamos criar uma rota entre as redes 192.168.0.0/24 e 10.12.0.0/24, onde seja possível acessar máquinas em ambas as redes.



Mão na massa




Antes de criarmos as rotas temos que habilitar o roteamento de pacotes no kernel. Para isso vamos usar o comando abaixo:

echo 1 > /proc/sys/net/ipv4/ip_forward


Vamos setar os IPs:

eth0 = 192.168.0.2 netmask 255.255.255.0 (/24)
eth1 = 10.12.0.2 netmask 255.255.255.0 (/24)
Gateway da rede A (192.168.0.0/24) para a eth0 = 192.168.0.1 netmask 255.255.255.0 (/24)
Gateway da rede B (10.12.0.0/24) para a eth1 = 10.12.0.1 netmask 255.255.255.0 (/24)
(Estas configurações acima você pode fazer no arquivo /etc/network/interfaces)


Agora vamos criar as rotas com o comando “route”:

Rota 1

route add -host 192.168.0.1 gw 192.168.0.2 dev eth0
route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0

Rota 2

route add -host 10.12.0.1 gw 10.12.0.2 dev eth1
route add -net 10.12.0.0 netmask 255.255.255.0 gw 10.12.0.1 dev eth1


Vamos entender?

Na primeira linha de cada rota nós dizemos que a máquina remota terá a nossa interface como gateway, e na segunda linha dizemos que a rede terá como gateway a máquina remota. Ou seja, qualquer pacote encaminhado para uma rede específica deverá ser entregue no próximo hop (gateway de cada rede) para ser tratado e encaminhado ao destino.

Depois disso podemos colocar estes comandos em um script pra facilitar o nosso trabalho. Para isso use seu editor de textos preferido e copie o conteúdo abaixo, salvando o arquivo como rotas.sh:

#!/bin/bash

echo “reiniciando interfaces”
/etc/init.d/networking restart

echo “roteamento do kernel”
echo 1 > /proc/sys/net/ipv4/ip_forward

echo “Apagando rotas”

route del -host 192.168.0.1 gw 192.168.0.2 dev eth0
route del -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0

route del -host 10.12.0.1 gw 10.12.0.2 dev eth1
route del -net 10.12.0.0 netmask 255.255.255.0 gw 10.12.0.1 dev eth1

echo “criando rotas”

route add -host 192.168.0.1 gw 192.168.0.2 dev eth0
route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0

route add -host 10.12.0.1 gw 10.12.0.2 dev eth1
route add -net 10.12.0.0 netmask 255.255.255.0 gw 10.12.0.1 dev eth1


Agora vamos colocar nosso script na inicialização do sistema:

cp rotas.sh /etc/init.d

update-rc.d rotas.sh defaults


Nós podemos aproveitar este script pra fazer muitas outras coisas, como implementar regras de firewall com o iptables, criar regras de mascaramento de pacotes de uma rede para outra e etc. Porém isso é assunto para um próximo post ;-)

Fonte: Seja Livre


Avatar do usuário
nuno_nunes
 
Mensagens: 3932
Registrado em: 28 Maio, 2012
Localização: Pampilhosa da Serra - Portugal

Voltar para Scripts, programação e aplicações em desenvolvimento

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 43 visitantes

cron