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) 


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.

Informações adicionais