Visitantes que leram esse artigo, também visitaram:
  • Altitude Software ajuda contact centers a ganhar negócios em tempos de incerteza
  • Conexão VPN com Windows 98 (Client) e Windows 2000 (Server)
  • Manual Completo do Linux 2ª edição
  • Tutorial Esperto do Emule em Português
  • Linux: 10 dicas para se dar bem


  • Roteamento avançado com o Linux

    Postado por Plinio Cruz em 23 de maio de 2002 na categoria Internet, Linux, Rede | Seja o primeiro a comentar

    1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (Sem votos, vote agora!)
    Loading ... Loading ...

    O Sistema Operacional Linux possui em seu Kernel um conjunto poderoso de recursos para definição de regras de roteamento, o que permite que o mesmo seja utilizado para se obter soluções de problemas não convencionais de roteamento nos quais, muitas vezes, nem mesmo roteadores propriamente ditos, construídos em hardware especializado, oferecem uma solução a contento.

    Este artigo descreve um pouco do funcionamento destes recursos, de acordo com a nova filosofia de definição de regras de roteamento, presente na série 2.4 do Kernel do Linux, perfazendo um estudo de caso de uma rede conectada a múltiplos provedores de backbone, em um comparativo com as soluções apresentadas a este problema no artigo “Roteando pela Origem com Linuxâ€, publicado no número 7 do volume 2 do NewsGeneration, com o uso dos recursos da série 2.0 do Kernel do Linux.

    Por: Allan Edgard Silva FreitasCentro Federal de Educação Tecnológica da Bahia – CEFET-BA Coordenação Técnica de Informática – COINF

     

    1. Introdução

     

    O Kernel do Linux, a partir da série 2.2, evoluiu para um sub-sistema de rede completamente novo e remodelado. O código deste subsistema é extremamente flexível, robusto e, graças a funções especiais, faz par a poucos sistemas operacionais, mesmo considerando o firmware de roteadores dedicados. As funções especiais existentes neste subsistema do Linux incluem diretivas diversas de roteamento, controle, filtragem e priorização de tráfego.

    Embora o Linux possua tanta flexibilidade, perdemos o uso de tais funções pelo simples fato de que na maior parte dos sistemas a configuração é baseada em utilitários presentes em toda base UNIX, nos quais a configuração e uso das funções especiais do Kernel do Linux não são acessíveis, como os comandos arp, ifconfig e route. Estes comandos, embora utilizem syscalls adaptadas ao novo subsistema, fazem as chamadas passando diversos argumentos com valores padrão, perdendo-se a flexibilidade de configuração neles existente. Contudo, um pacote chamado iproute2 liberta o poder do sub-sistema de rede do Linux, permitindo a configuração de sistemas com toda a flexibilidade existente no Kernel, de forma poderosa, sem perder a facilidade de uso das ferramentas anteriores. Ainda será abordado o uso do iptables, o qual permite definir diversas regras de tratamento de pacotes, que tornam um servidor Linux um seguro firewall.

     

    2. Ambiente de uso

     

    Como ambiente de uso, será descrita a configuração sobre um gateway baseado no Linux Slackware 8.0. O Sistema Operacional Linux está disponível sob a forma de diversas distribuições. Para os propósitos deste artigo, qualquer distribuição baseada em Kernel da série 2.4, com os pacotes iptables e iproute2 poderia ser empregada. O Slackware na sua versão 8.0 vem com o Kernel na versão 2.4.5 e o iptables. Será descrito, a seguir, a otimização do Kernel para os propósitos de operação de um roteador, bem como a instalação do pacote iproute2.

    A instalação do Slackware 8.0 não apresenta maiores dificuldades para administradores de sistemas. Não será abordado todo o processo em si por fugir do escopo do artigo. Contudo, na seleção dos pacotes deve-se optar pela instalação do Kernel na versão 2.4.5 (em detrimento da versão da série 2.2 oferecida como padrão de instalação) e pela instalação do pacote iptables.

    Efetuada a instalação, é interessante recompilar o Kernel para habilitar as opções existentes que permitem a atuação de um servidor Linux como um roteador avançado. Para recompilarmos o Kernel, execute os seguintes passos:

    # cd /usr/src/linux
    # make menuconfig

    Este comando permite a configuração através de menus das funções a serem compiladas no Kernel. Parte destas funções estão em processo de constante desenvolvimento e modificação, portanto, no item “Code maturity level options”, selecione:

    [*] Prompt for development and/or incomplete code/drivers

    Devem ser habilitados os drivers de dispositivos correspondentes às interfaces de rede existentes no sistema, através do item Network Device Support.

    As opções existentes referentes ao subsistema de rede do Linux se encontram em Networking Options. Faremos uma descrição suscinta dos itens de maior relevância. Por padrão, o protocolo IP na sua versão 4, na qual se baseia a Internet, encontra-se habilitado através de:

    [*] TCP/IP Networking.

    Há uma versão mais atual do protocolo IP, o IPv6, a qual foi desenvolvida para ser utilizada no futuro na Internet. Caso se queira, pode-se fazer experimentações com esta nova versão do protocolo. As ferramentas abordadas neste artigo atuam com o IPv6 e maiores informações sobre o protocolo podem ser obtidas no Projeto 6Bone-BR em http://www.6bone.rnp.br/. As opções referentes ao mesmo são:

    <*> The IPv6 Protocol

    [*] enable EUI-64 token format 

    Para utilizar a ferramenta iptables, ou comandos da ferramenta ip sobre o objeto rule, possibilitando recursos com NAT e Proxy Transparent, devemos habilitar as opções:

    [*] Network packet filtering (replaces ipchains)
    [*] Network packet filtering debugging
    [*] Socket Filtering 

    E, ainda, devemos ativar as opções existentes no subitem “IP: Netfilter Configuration”, dentre as quais o suporte a iptables.

    Para o suporte ao estabelecimento de túneis de protocolo, ative:

    <*> IP: tunneling
    <*> IP: GRE tunnels over IP 

    Um recurso bastante interessante de rede (com algumas melhorias com o IPv6), o Multicast, é uma opção a se observar:

    [*] IP: multicasting
    [*] IP: multicasting routing 

    Opções avançadas de roteamento, incluindo NAT, devem estar ativas para os nossos propósitos:

    [*] IP: advanced router
    [*] IP: policy routing
    [*] IP: use netfilter MARK value as routing key
    [*] IP: fast network address translation
    [*] IP: equal cost multipath
    [*] IP: use TOS value as routing key
    [*] IP: verbose route monitoring
    [*] IP: large routing tables

    Para, então, compilar o Kernel, salva-se a configuração e segue-se os seguintes passos:

    # make dep
    # make clean
    # make bzImage
    # make modules
    # make install
    # make modules_install

    Para instalar o pacote iproute, deve-se fazer o download do mesmo no endereço ftp://ftp.inr.ac.ru/ip-routing/iproute2-current.tar.gz. Este link simbólico aponta para a última versão estável disponível para download. A versão do iproute2, indicada pelo arquivo iproute2-current.tar.gz, que foi utilizada neste artigo, foi a do arquivo iproute2-2.4.7-now-ss010824. tar.gz . Após obter o pacote, deve-se executar os seguintes passos:

    # cp iproute2-current.tar.gz /usr/src/
    # cd /usr/src
    # tar –zxpvf iproute2-current.tar.gz
    # cd iproute2
    # make

    Caso você obtenha algum erro na tempo de compilação, deve-se analisar o arquivo-fonte indicado. A depender do contexto do ambiente de instalação, podem ocorrer problemas de compilação referentes ao suporte a algumas tecnologias, protocolos e tipos de interfaces, os quais não devem estar diretamente relacionados ao nosso ambiente, indicados no arquivo ll_types.c sob o diretório lib. Caso ocorra mensagem de erro referente a este arquivo, edite o arquivo e comente as linhas indicadas pelo comando make, colocando barra inclinada dupla no início das mesmas e recompile. Após a compilação, instale as ferramentas ip e tc manualmente:

     

    Vídeo não pode ser exibido.

    Deixe seu comentário