Criando Tuneis IP entre dois Gateways de Internet utilizando protocolo GRE

Artigo retirado do site Dicas-L da Unicamp.

Colabora??o: Jean Carlos Oliveira Guandalini

Vamos trabalhar com o seguinte ambiente:

Servidor “bart”
===============

IP: 200.200.200.200
Gateway: 200.200.200.199
Rede Local: 192.168.0.0/24
IP Local: 192.168.0.254/24

Servidor “homer”
================

IP: 200.100.100.100
Gateway: 200.100.100.099
Rede Local: 192.168.1.0/24
IP Local: 192.168.1.254/24

Requerimentos:
==============

Voc? deve ter o kernel compilado com o GRE, funcionando como m?dulo:
Na se??o de Networking Options voc? ir? encontrar a op??o: “IP: GRE tunnels over IP”

Networking Options
IP: GRE tunnels over IP

Voc? dever? tamb?m ter o utilit?rio iproute2 instalado:
http://developer.osdl.org/dev/iproute2/

O m?dulo ip_gre deve ser sempre inicializado no boot
da m?quina.

# modprobe ip_gre

Agora iremos configurar o primeiro servidor (“bart”)

# ip tunnel add homer mode gre remote 200.100.100.100 local 200.200.200.200 ttl 255

Foi criado um tunel com o nome de homer(este ser? o nome
de nossa interface) utilizando o protocolo gre definindo
que o ip remoto ? 200.200.200.200(ip do servidor homer)
e o ip local(publico) ? 200.100.100.100 e definindo a
configura??o de ttl do pacote para 255.

# ip link set homer up

Aqui estamos levantando a interface homer

# ip addr 192.168.0.254 dev homer

Configuramos o ip 192.168.0.254 para a interface homer,
pode ver que o ip ? o mesmo de nosso servidor(rede local)

# ip route add 192.168.1.0/24 dev homer

Aqui estamos dizendo que para chegar a rede
192.168.0.254/24 ? utilizando a interface homer(no caso
nosso t?nel).

Devemos configurar tudo isso em nosso servidor (“homer”)

# ip tunnel add bart mode gre remote 200.200.200.200 local 200.100.100.100 ttl 255
# ip link set bart up
# ip addr 192.168.1.254 dev bart
# ip route add 192.168.0.0/24 dev bart

Como voc?s puderam ver fiz a configura??o da maneira
inversa, ou seja, far? com que o homer enchergue a rede
interna de bart.

Para fazer o teste se seu t?nel est? funcionando voc? pode
tentar efetuar um ping no caso de nosso exemplo do servidor
homer para um ip que esteje configurado corretamente na
rede do servidor bart.

ex:

root@homer #: ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=253 time=22.9 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=253 time=8.50 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=253 time=10.8 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=253 time=13.0 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=253 time=5.09 ms

— 192.168.0.1 ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4041ms
rtt min/avg/max/mdev = 5.097/12.097/22.958/6.038 ms

Caso voc? queira retirar um tunel utilize a seguinte sintaxe:

# ip link set nometunel down
# ip tunnel del nometunel

Utilizando em nosso exemplo, se fizermos isso no servidor bart

# ip link set homer down
# ip tunel del homer

Voc? precisa lembrar que a cada boot do sistema essas
informa??es precisam ser novamente executadas, ent?o ?
interessante escrever um script para levantar esses t?neis.

Utilizei como refer?ncia a documenta??o do iproute2:
http://lartc.org/howto/

Jean Carlos – DarkWarrior (http://www.linuxbsd.com.br)