Como transformar um servidor Linux em um roteador para lidar com o tráfego estaticamente e dinamicamente - parte 10

Como transformar um servidor Linux em um roteador para lidar com o tráfego estaticamente e dinamicamente - parte 10

Como antecipamos nos tutoriais anteriores disso LFCE (Engenheiro Certificado da Fundação Linux) Série, neste artigo, discutiremos o roteamento do tráfego de IP estaticamente e dinamicamente com aplicativos específicos.

Engenheiro Certificado da Fundação Linux - Parte 10
Apresentando o Programa de Certificação da Fundação Linux

Primeiras coisas primeiro, vamos entender algumas definições:

  1. Em palavras simples, um pacote é a unidade básica usada para transmitir informações dentro de uma rede. As redes que usam TCP/IP como protocolo de rede seguem as mesmas regras para transmissão de dados: as informações reais são divididas em pacotes feitos de dados e o endereço onde devem ser enviados para.
  2. Roteamento é o processo de “guia”Os dados de origem para destino dentro de uma rede.
  3. Roteamento Estático requer um conjunto de regras configuradas manualmente definidas em uma tabela de roteamento. Essas regras são consertadas e usadas para definir a maneira como um pacote deve passar à medida que viaja de uma máquina para outra.
  4. Roteamento dinâmico, ou roteamento inteligente (se desejar), significa que o sistema pode alterar automaticamente, conforme necessário, a rota que um pacote segue.

Configuração avançada de IP e dispositivo de rede

O iProute O pacote fornece um conjunto de ferramentas para gerenciar redes e controle de tráfego que usaremos ao longo deste artigo, pois eles representam a substituição de ferramentas herdadas, como ifconfig e rota.

A utilidade central no iProute A suíte é chamada de simplesmente IP. Sua sintaxe básica é a seguinte:

# comando de objeto ip 

Onde objeto pode ser apenas um dos seguintes (apenas os objetos mais frequentes são mostrados - você pode se referir ao homem IP Para uma lista completa):

  1. link: dispositivo de rede.
  2. addr: endereço protocolo (IP ou IPv6) em um dispositivo.
  3. rota: entrada de tabela de roteamento.
  4. regra: regra no banco de dados de políticas de roteamento.

Enquanto comando representa uma ação específica que pode ser executada no objeto. Você pode executar o seguinte comando para exibir a lista completa de comandos que podem ser aplicados a um objeto específico:

# Ajuda do objeto IP 

Por exemplo,

# IP Link Ajuda 
Ajuda do comando IP

A imagem acima mostra, por exemplo, que você pode alterar o status de uma interface de rede com o seguinte comando:

# IP Link Set Interface UP | abaixo 

Para mais exemplos de 'IP'Comando, leia 10 comandos' ip 'úteis para configurar o endereço IP

Exemplo 1: Desativar e ativar uma interface de rede

Neste exemplo, iremos desativar e habilitar Eth1:

# Link IP Show # Link IP Set Eth1 Down # IP Link Show 
Desative a interface eth0

Se você quiser reativar o eth1,

# Link IP Definir eth1 up 

Em vez de exibir todas as interfaces de rede, podemos especificar um deles:

# link IP Show Eth1 

Que retornará todas as informações para Eth1.

Exemplo 2: Exibindo a tabela de roteamento principal

Você pode visualizar sua tabela de roteamento principal atual com um dos três comandos a seguir:

# IP Route Show # Route -n # netstat -rn 
Verifique a tabela de rota Linux

A primeira coluna na saída dos três comandos indica a rede de destino. A saída de rota IP show (seguindo a palavra -chave Dev) também apresenta os dispositivos de rede que servem como porta de entrada física para essas redes.

Embora hoje em dia o comando ip é preferido na rota, você ainda pode se referir ao homem Route IP e Rota do homem Para uma explicação detalhada do restante das colunas.

Exemplo 3: Usando um servidor Linux para rotear pacotes entre duas redes privadas

Queremos rotear ICMP Pacotes (ping) do dev2 para Dev4 e o contrário também (observe que as duas máquinas clientes estão em redes diferentes). O nome de cada NIC, juntamente com seu endereço IPv4 correspondente, é fornecido dentro de suportes quadrados.

Nosso ambiente de teste é o seguinte:

Cliente 1: Centos 7 [ENP0S3: 192.168.0.17/24] - Dev1 Roteador: Debian Wheezy 7.7 [Eth0: 192.168.0.15/24, Eth1: 10.0.0.15/24] - Dev2 Cliente 2: OpenSuse 13.2 [ENP0S3: 10.0.0.18/24] - Dev4 

Vamos visualizar a tabela de roteamento em Dev1 (CentOS Box):

# IP Route Show 

e depois modifique -o para usar seu ENP0S3 NIC e a conexão com 192.168.0.15 para acessar hosts nos 10.0.0.Rede 0/24:

# rota IP Adicionar 10.0.0.0/24 via 192.168.0.15 DEV ENP0S3 

Que lê essencialmente: “Adicione uma rota aos 10.0.0.Rede 0/24 através da interface de rede ENP0S3 usando 192.168.0.15 como gateway ”.

Rede de rota no Linux

Da mesma forma em Dev4 (caixa de openuse) para hosts de ping nos 192.168.0.Rede 0/24:

# rota IP Adicionar 192.168.0.0/24 via 10.0.0.15 DEV ENP0S3 
Roteamento de rede no Linux

Finalmente, precisamos permitir o encaminhamento em nosso roteador Debian:

# eco 1>/proc/sys/net/ipv4/ip_forward 

Agora vamos Ping:

Verifique o roteamento da rede

e,

Rota ping status

Para tornar essas configurações persistentes nas botas, edite /etc/sysctl.conf no roteador e verifique se o líquido.IPv4.ip_forward A variável é definida como true da seguinte maneira:

líquido.IPv4.ip_forward = 1 

Além disso, configure as NICs em ambos os clientes (procure o arquivo de configuração dentro /etc/sysconfig/rede no OpenSuse e /etc/sysconfig/scripts de rede em Centos - em ambos os casos, é chamado IFCFG-NP0S3).

Aqui está o arquivo de configuração da caixa OpenSuse:

BootProto = transmissão estática = 10.0.0.255 ipaddr = 10.0.0.18 máscara de rede = 255.255.255.0 gateway = 10.0.0.15 Nome = ENP0S3 Rede = 10.0.0.0 onboot = sim 
Exemplo 4: Usando um servidor Linux para rotear pacotes entre redes privadas e internet

Outro cenário em que uma máquina Linux pode ser usada como roteador é quando você precisa compartilhar sua conexão com a Internet com uma LAN particular.

Roteador: Debian Wheezy 7.7 [Eth0: Public IP, Eth1: 10.0.0.15/24] - Dev2 Cliente: OpenSuse 13.2 [ENP0S3: 10.0.0.18/24] - Dev4 

Além de configurar o encaminhamento de pacotes e a tabela de roteamento estático no cliente, como no exemplo anterior, precisamos adicionar algumas regras iptables no roteador:

# iptables -t nat -a postouting -o eth0 -j mascarerade # iptables -a forward -i eth0 -o eth1 -m estado -estado relacionado, estabelecido -j aceita # iptables -a forward -i eth1 -o eth0 -j ACEITAR 

O primeiro comando adiciona uma regra ao Pós -trouting Cadeia na tabela NAT (Tradução de Endereço de Rede), indicando que a NIC ETH0 deve ser usada para pacotes de saída.

MASCARADA indica que esta NIC tem um IP dinâmico e isso antes de enviar o pacote para o “mundo selvagem selvagem”Da Internet, o endereço de origem privada do pacote deve ser alterado para o do IP público do roteador.

Em uma LAN com muitos hosts, o roteador acompanha as conexões estabelecidas em /proc/net/ip_conntrack Então ele sabe onde devolver a resposta da Internet a.

Apenas parte da saída de:

# cat/proc/net/ip_conntrack 

é show na captura de tela seguinte.

Pacotes de rota no Linux

Onde a origem (IP privada da caixa de openuse) e destino (Google DNS) de pacotes são destacados. Este foi o resultado da corrida:

# Curl www.Tecmint.com 

na caixa de openuse.

Como tenho certeza que você já pode adivinhar, o roteador está usando o 8 do Google.8.8.8 Como servidor de nomes, o que explica por que o destino dos pacotes de saída aponta para esse endereço.

Observação: Que os pacotes recebidos da Internet são aceitos apenas se eles fizerem parte de uma conexão já estabelecida (comando nº 2), enquanto os pacotes de saída são permitidos “saída grátis”(Comando #3).

Não se esqueça de tornar suas regras iptables persistentes após as etapas descritas na Parte 8 - Configure o firewall iptables desta série.

Roteamento dinâmico com quagga

Atualmente, a ferramenta mais usada para roteamento dinâmico no Linux é Quagga. Ele permite que os administradores do sistema implementem, com um servidor Linux relativamente de baixo custo, a mesma funcionalidade fornecida por roteadores Cisco poderosos (e caros).

A ferramenta em si não lida com o roteamento, mas modifica a tabela de roteamento do kernel, pois aprende novas melhores rotas para lidar com pacotes.

Como é um garfo de zebra, um programa cujo desenvolvimento cessou há um tempo atrás, mantém por razões históricas os mesmos comandos e estrutura que a zebra. É por isso que você verá muita referência à zebra a partir deste ponto.

Observe que não é possível cobrir o roteamento dinâmico e todos os protocolos relacionados em um único artigo, mas estou confiante de que o conteúdo apresentado aqui servirá como ponto de partida para você construir.

Instalando Quagga no Linux

Para instalar o Quagga na distribuição escolhida:

# Aptitude Update && Aptitude Install Quagga [no ubuntu] # yum update && yum install quagga [centos/rhel] # zypper refresh && zypper install quagga [openSuse] 

Usaremos o mesmo ambiente do Exemplo #3, com a única diferença de que o ETH0 está conectado a um roteador de gateway principal com IP 192.168.0.1.

Em seguida, edite /etc/quagga/daemons com,

zebra = 1 ripd = 1 

Agora crie os seguintes arquivos de configuração.

#/etc/quagga/zebra.conf #/etc/quagga/ripd.conf 

e adicione essas linhas (substitua um nome de host e senha de sua escolha):

serviço quagga reinictar hostname dev2 senha quagga 
# Service Quagga reiniciar 
Inicie o serviço Quagga

Observação: Que RIPD.conf é o arquivo de configuração para o protocolo de informações de roteamento, que fornece ao roteador as informações de quais redes podem ser alcançadas e até que ponto (em termos de quantidade de lúpulo) eles são.

Observe que este é apenas um dos protocolos que podem ser usados ​​junto com Quagga, e eu o escolhi para este tutorial devido à facilidade de uso e porque a maioria dos dispositivos de rede o suporta, embora tenha a desvantagem de passar credenciais em texto sem formatação. Por esse motivo, você precisa atribuir permissões adequadas ao arquivo de configuração:

# chown quagga: quaggavty/etc/quagga/*.conf # chmod 640/etc/quagga/*.conf 
Exemplo 5: Configurando Quagga para rotear o tráfego IP dinamicamente

Neste exemplo, usaremos a seguinte configuração com dois roteadores (certifique -se de criar os arquivos de configuração para roteador #2 Como explicado anteriormente):

Configure Quagga

Importante: Não se esqueça de repetir a seguinte configuração para os dois roteadores.

Conecte -se à zebra (ouvindo na porta 2601), que é o intermediário lógico entre o roteador e o kernel:

# Telnet localhost 2601 

Digite a senha que foi definida no /etc/quagga/zebra.conf Arquivo e, em seguida, habilite a configuração:

ativar o terminal de configuração 

Digite o endereço IP e a máscara de rede de cada NIC:

Inter eth0 ip addr 192.168.0.15 Inter eth1 ip addr 10.0.0.15 saída de saída escreva 
Configure o roteador

Agora precisamos nos conectar ao RASGAR Terminal Daemon (Porta 2602):

# Telnet localhost 2602 

Insira o nome de usuário e a senha, conforme configurado no /etc/quagga/ripd.conf Arquivo e, em seguida, digite os seguintes comandos em negrito (os comentários são adicionados por uma questão de esclarecimento):

habilitar liga o comando de modo privilegiado. Configurar terminal Alterações no modo de configuração. Este comando é o primeiro passo para a configuração roteador RIP Ativa o RIP. Rede 10.0.0.0/24 Define a interface de ativação do RIP para o 10.0.0.Rede 0/24. saída saída escrever Grava a configuração atual no arquivo de configuração. 
Ativar roteador

Observação: Que em ambos os casos a configuração é anexada às linhas que adicionamos anteriormente (/etc/quagga/zebra.conf e /etc/quagga/ripd.conf).

Finalmente, conecte -se novamente ao serviço de zebra nos dois roteadores e observe como cada um deles tem “aprendido”A rota para a rede que está por trás da outra e que é o próximo salto para chegar a essa rede, executando o comando mostre rota IP:

# mostre rota IP 
Verifique o roteamento IP

Se você deseja experimentar diferentes protocolos ou configurações, consulte o site do projeto Quagga para mais documentação.

Conclusão

Neste artigo, explicamos como configurar o roteamento estático e dinâmico, usando um (s) roteador (s) da caixa Linux. Sinta -se à vontade para adicionar quantos roteadores desejar e experimentar o quanto quiser. Não hesite em voltar para nós usando o formulário de contato abaixo se tiver algum comentário ou dúvida.

Torne -se um engenheiro certificado Linux