Informática Numaboa - Linux
Túneis em redes Linux
Qui 19 Abr 2007 10:36 |
- Detalhes
- Categoria: Como fazer configurações
- Atualização: Domingo, 12 Abril 2009 17:04
- Autor: vovó Vicki
- Acessos: 11918
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 ). 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.