Roteamento de pacotes com GNU/Linux -- Parte 1

September 22nd, 2009 | by Gustavo Lichti |


Bom hoje eu vou falar sobre roteamento, em GNU Linux. Esta é a primeira parte do artigo. Explicando o básico. Logo logo vem a parte 2

Roteamento é o processo de encaminhamento de pacotes de uma rede para outra, feito sempre por um roteador. Esse roteador pode ser um equipamento profissional, SOHO(Small Office/Home Office) ou um computador com um sistema operacional. No nosso caso o foco é utilizar o sistema GNU/Linux.

O roteamento também pode ocorrer de duas forma estático ou dinâmico. No roteamento estático o caminho da rota é sempre predefinido, a tabela de roteamento é fixa. No roteamento dinâmico o roteador conhece mais que um caminho para chegar ao destino e age de forma inteligente escolhendo qual rota ele deve utilizar. No nosso caso abordaremos a forma de roteamento estático.

Irei utilizar para nossos exemplos a comunicação entre dois campus de uma universidade. Então vamos analisar a imagem a baixo.

roteamento1

Analisando o cenário a cima, podemos perceber que os dois campus estão utilizando a mesma rede(192.168.) já que estamos utilizando uma mascara de 16bits(255.255.0.0) onde os dois primeiros octetos definem a rede e os dois últimos definem o host. No caso a cima a interligação entre os dois campus é apenas o switch do campus01 interligado ao switch do campus02. Com isso temos um grande problema que é um trafego alto entre um campus e outro sem necessidade.

Para solucionar este problema é simples basta mudar a mascara de sub rede de 16 para 24bits e colocar um roteador entre os dois campus. Veja a imagem:

roteamento02

Viram? agora só ira ter trafego entre os dois campus caso for realmente necessário. Mas como funciona um roteador? Um roteador ele tem sempre pelo menos 2 interfaces de rede, que podem ser iguais ou diferentes. Mas sempre conectadas em redes diferentes.

Quando um equipamento vai se comunicar na rede ele verifica se o endereço de destino pertence a mesma rede que ele ou não, caso pertença ele apenas envia a informação para rede em forma de broadcasting e caso não pertença ele encaminha esse pacote para o roteador que vai ficar responsável por distribuir esta informação. Mas para que isso ocorra todos os equipamentos devem conhecer o endereço do roteador da rede, que nas configurações dos equipamentos é visto como default gateway ou apenas como gateway.

Com base no cenário anterior nós temos: Duas redes, a 192.168.10.0 do campus 01 e a 192.168.20.0 do campus 02, e temos um roteado que faz parte das duas redes. Para isso os equipamentos da rede do campus 01 devem ter configurado como default gateway o endereço 192.168.10.10 e os equipamentos do campus 02 devem ter configurados como  default gateway o endereço 192.168.20.10.

Mas e o  roteador? Bom como já foi dito lá no começo, o roteador poderia ser um cisco, um juniper, até mesmo um linksys ou um delink( Que medo!!! ). Mas no nosso caso vai ser uma CPU com GNU/Linux instalado. Eu utilizo no dia a dia Debian, e por isso vou usar ele como base para os testes sendo que os passos vistos aqui devem funcionar em outras distribuições.

Para esta tarefa precisamos de uma instalação minima do Debian.

Para o GNU/Linux trabalhar como roteador é muito simples, ainda mais quando vamos fazer o roteamento apenas entre 2 redes e só existe um roteador. Para que o roteamento de pacotes funcione o nosso sistema precisa fazer parte das duas redes e ter habilitado o repasse de pacotes para outra rede.

Para configurar rede podemos fazer:

ifconfig 192.168.10.10 up
ifconfig 192.168.20.10 up

E para habilitar o repasse de pacotes de uma rede para outra faça:

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

Pronto neste momento esta maquina já esta agindo como um roteador entre as redes 192.168.10.0 e 192.168.20.0

Bom no Debian as configurações das interfaces de rede(ip e mascara) podem ser feitas no arquivo /etc/network/interfaces e a configuração do repasse de pacotes pode ser feita no arquivo /etc/sysctl.conf. Mas estes arquivo podem mudar de distribuição para distribuição, por isso vou falar mais um pouco sobre os comandos anteriores.

O problema dos 3 comandos anteriores é que eles só funcionam enquanto a maquina não for reinicializada, após uma reinicialização tudo é perdido e o sistema não age mais como um roteador. Já imaginou o problema? Então para resolver isto podemos editar o arquivo /etc/rc.local e adicionar as 3 linhas de comando lá, antes do exit 0, esse arquivo sempre é executado na inicialização do sistema.

Esta é a primeira parte. Introdução a roteamento com GNU/Linux. Espero que tenha sido útil e até a segunda parte.

Tags: , , ,

  1. One Response to “Roteamento de pacotes com GNU/Linux -- Parte 1”

  2. By Augusto Campos on Sep 22, 2009 | Reply

    Aguardo seu aviso de publicação da segunda parte, para ajudar a divulgar no BR-Linux!

Post a Comment