A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Linux

Túneis em redes Linux

Qui

19

Abr

2007


10:36

(4 votos, média 4.50 de 5) 


Nível Avançado

Existem três tipos de túneis no Linux: IP em tunelamento IP, tunelamento GRE e túneis fora do kernel, por exemplo, PPTP.

Introdução

Os túneis podem ser usados para algumas coisas fora do comum e muito interessantes, mas também podem fazer uma bagunça horrorosa se não forem corretamente configurados. Não aponte sua rota default para um dispositivo túnel se você não souber EXATAMENTE o que está fazendo tongue Também é bom lembrar que que o tunelamento aumenta o overhead porque precisa de um conjunto extra de cabeçalhos IP. Tipicamente são 20 bytes por pacote de modo que, se o tamanho (MTU) do pacote normal numa rede for de 1500 bytes, um pacote enviado através de um túnel só pode levar 1480 bytes de dados. Isto não é necessariamente um problema, mas, se você está pensando em conectar grandes redes com túneis, informe-se sobre fragmentação/recomposição de pacotes IP para não ser pego de calça curta. Tem mais uma pequena observação: o modo mais rápido de cavar um túnel é cavando dos dois lados smile

IP em tunelamento IP

Há muito tempo este tipo de tunelamento está disponível no Linux. Ele requer dois módulos do kernel, ipip.o e new_tunnel.o.

Digamos que você tenha 3 redes: as redes internas A e B e uma rede intermediária C (que pode ser a Internet). As redes são as seguintes:

REDE A
rede     10.0.1.0
máscara  255.255.255.0
roteador 10.0.1.1
O roteador tem o endereço 172.16.17.18 na rede C.

REDE B
rede     10.0.2.0
máscara  255.255.255.0
roteador 10.0.2.1
O roteador tem o endereço 172.19.20.21 na rede C.

Referente à rede C, vamos considerar que ela passe qualquer pacote enviado de A para B e vice-versa. A Internet pode ser usada como rede C sem maiores problemas.

Para configurar um túnel IP em tunelamento IP verifique inicialmente se os módulos necessários estão instalados:

insmod ipip.o
insmod new_tunnel.o

Depois, no roteador da rede A, faça o seguinte:

ifconfig tunl0 10.0.1.1 pointopoint 172.19.20.21
route add -net 10.0.2.0 netmask 255.255.255.0 dev tunl0

Da mesma forma, no roteador da rede B:

ifconfig tunl0 10.0.2.1 pointopoint 172.16.17.18
route add -net 10.0.1.0 netmask 255.255.255.0 dev tunl0

Pronto! O túnel está operante. Quando você quiser fechá-lo, use o seguinte comando:

ifconfig tunl0 down

info Um túnel IP-in-IP não permite retransmitir broadcast nem aceita tráfego IPv6. Só é possível conectar duas redes IPv4 que normalmente não seriam capazes de se comunicar. Este tipo de túnel existe no Linux desde a versão 1.3, mas é exclusivo do pinguim - não funciona com outros sistemas operacionais ou com roteadores - mas é simples e funciona que é uma beleza. Apesar disto, só use o IP-in-IP se não tiver outro jeito (dê preferência ao túnel GRE).


Tunelamento GRE

GRE é um protocolo de tunelamento originalmente desenvolvido pela Cisco. O tunelamento GRE pode fazer muito mais do que um tunelamento IP-in-IP porque pode, entre outras coisas, transportar tráfego multicast e IPv6. Para funcionar no Linux, o módulo ip_gre.o precisa estar instalado.

Tunelamento IPv4

Vamos começar com o mais fácil, o tunelamento IPv4. Novamente vamos considerar três redes, as internas A e B e a intermediária C (que pode ser a Internet). As redes são:

REDE A
rede     10.0.1.0
máscara  255.255.255.0
roteador 10.0.1.1
O roteador tem o endereço 172.16.17.18 na rede C. O nome desta rede é redeA.

REDE B
rede     10.0.2.0
máscara  255.255.255.0
roteador 10.0.2.1
O roteador tem o endereço 172.19.20.21 na rede C. O nome desta rede é redeB.

Em relação à rede C assumimos que ela passa qualquer pacote enviado de A para B e vice-versa. Como e porque não nos interessa.

No roteador da rede A faça o seguinte:

ip tunnel add redeB mode gre remote 172.19.20.21 local 172.16.17.18 ttl 255
ip link set redeB up
ip addr add 10.0.1.1 dev redeB
ip route add 10.0.2.0/24 dev redeB

Vamos dar uma clareada no assunto. Com a primeira linha foi adicionado um dispositivo túnel, chamado redeB (o que é autoexplicativo porque é para onde queremos ir smile ). A linha 1 ainda determina que seja usado o protocolo GRE (mode gre), que o endereço remoto é 172.19.20.21 (o roteador na outra ponta), que os pacotes tunelados devem ser originados de 172.16.17.18 (o que permite que o roteador tenha vários endereços IP na rede C e deixa para nós a decisão de determinar qual deles será usado no tunelamento) e que o campo TTL (Time To Live - Tempo de Vida) do pacote deve ser fixado em 255 (ttl 255).

A segunda linha habilita o dispositivo.

Na terceira, a interface redeB recém-nascida recebe o endereço 10.0.1.1. Isto pode ser feito em redes menores, mas, se você estiver iniciando uma expedição de mineração (ZILHÕES de túneis), talvez seja melhor usar uma outra faixa de IP para as interfaces de tunelamento (neste exemplo podemos usar 10.0.3.0).

Na quarta linha foi determinada a rota para a rede B. Observe a notação diferente usada para a máscara. Se você não tiver idéia do que vem a ser isto, leia o tópico Máscaras de Rede no tutorial Redes Linux. Aqui vai uma explicaçãozinha bem simples: escreva a máscara na forma binária e conte todos os 1. Por exemplo, 255.0.0.0 é /8, 255.255.0.0 é /16 e 255.255.255.0 é /24. Só para ilustrar mais um pouco, 255.255.254.0 é /23.

Bem, agora chegou a hora de mexer no roteador da rede B.

ip tunnel add redeA mode gre remote 172.16.17.18 local 172.19.20.21 ttl 255
ip link set redeA up
ip addr add 10.0.2.1 dev redeA
ip route add 10.0.1.0/24 dev redeA

Prontinho, está tudo no ar. E quando você quiser fechar o túnel no roteador A, basta "baixar" o link e deletar o túnel:

ip link set redeB down
ip tunnel del redeB

É claro que o mesmo pode (e deve) ser feito no roteador B - basta trocar redeB por redeA.

Tunelamento IPv6

Vamos assumir que temos uma rede IPv6 e queremos abrir uma passagem para um amigo no roteador 6bone:

rede 3ffe:406:5:1:5:a:2:1/96

O endereço IPv4 é 172.16.17.18
O roteador 6bone tem o endereço IPv4 172.22.23.24

Com estes dados é possível criar o túnel:

ip tunnel add sixbone mode sit remote 172.22.23.24 local 172.16.17.18 ttl 255
ip link set sixbone up
ip addr add 3ffe:406:5:1:5:a:2:1/96 dev sixbone
ip route add 3ffe::/15 dev sixbone 

Aqui vão as explicações do que foi feito. Primeiro criamos um dispositivo túnel chamado sixbone. Estabelecemos o modo sit (que é IPv6 em tunelamento IPv4) e indicamos onde ir (remote) e de onde vir (local). TTL é colocado no máximo, 255. Depois ativamos o dispositivo (up) e, em seguida, adicionamos o nosso endereço de rede e estabelecemos uma rota para 3ffe::/15 (ou seja, todo o 6bone) através do túnel.

Túneis GRE são o tipo preferido de tunelamento. É um padrão que também é largamente adotado fora da camunidade Linux - vamos e venhamos, uma coisa muuuito boa.

Existem dúzias de implementações de tunelamento fora do kernel, algumas proprietárias, algumas seguras e até as que nem mesmo usam IP. É impraticável falar sobre cada uma delas, mas, a título de informação, as mais conhecidas são PPP e PPTP.


Fonte de Referência

игровые автоматы онлайн бесплатно без регистрациикупить косметику оптомлобановский александрсистема электронногозао армоcrm customer relationship managementwobs отзывы

Informações adicionais