User login


Creació i gestió de túnels


Un túnel és un dispositiu de xarxa la finalitat del qual és encapsular un protocol a dins d'un altre.

Per exemple, podem col·locar datagrames IP encriptats dins d'una sessió TCP, o IP dins de paquets UDP, o datagrames IP qualssevol dins d'altres datagrames IP, o coses més exòtiques com ara IP dins d'ICMP...

Molt bonic, però per què ens pot servir això?

A vegades és convenient establir un enllaç lògic entre una màquina i una altra de manera que puguem manipular les taula de rutes de forma específica per aquesta connexió.

En general, ens interessarà quan vulguem poder ajuntar dos segments de xarxa disjunts (ex: 192.168.0.0/24 i 192.168.10.0/24) a través d'una tercera xarxa (típicament Internet) a la qual estan connectades almenys una màquina de cada segment (ie, màquina 1 té una adreça d'inet i una ip dins de 192.168.0.0/24, màquina 2 també té una adreça d'inet i una ip dins de 192.168.10.0/24).

Hi ha moltes maneres, com he dit, de fer això, depenent principalment de:

- Protocol de transport: IP a seques, sessions TCP, datagrames UDP, datagrames ICMP...
- Seguretat: El paquet encapsulat pot estar encriptat o sense encriptar ni autenticar

Els casos que més ens interessaran a nosaltres són:

1) Protocol de transport TCP o UDP + Seguretat == OpenVPN. Utilitza una clau simètrica que per defecte té 2048 bits i encriptació per SSL (la mateixa de les pàgines web que comencen amb https), implementant múltiples algorismes.

En aquesta mateixa web, teniu aquest article d'en Ramon: http://www.comesfa.org/node/743

També podeu veure com es fa un túnel amb certificats en aquest article d'en Carles Bruguera: http://www.comesfa.org/ca/node/3278

Per una altra visió (i altres conceptes sobre tunneling) podeu mirar la presentació: http://www.iglu-cat.net/~fitxerspublics/Xerrada-OpenVPN-lasker.pdf.

2) Protocol de transport: IP, sense seguretat: túnels ip-ip o gre. La manera d'implementar-los en dos linux és força senzilla: només depèn de l'existència del mòdul ip_gre al kernel.

Passant a un cas concret: suposem que tenim la màquina 1 en un cantó de guifi.net (ip 10.138.123.123), i la màquina 2 en una altra banda, també dins de guifi (ip 10.138.241.5).
La màquina 2 disposa de connexió a internet i volem poder-la utilitzar, fent NAT.

El procediment per muntar això seria el següent:

modprobe ip_gre (a banda i banda)

Màquina 1: (guifi 10.138.123.123)

ip tunnel add tun0 mode gre remote 10.138.241.5 local 10.138.123.123 ttl 255
ip link set tun0 up
ip addr add 10.0.1.1 dev tun0
ip route add 10.0.2.0/24 dev tun0
ip route del default
ip route add 10.138.0.0/16 via 10.138.x.x (adreça del linksys on
l'ordinador està de client)
ip route add default via 10.0.2.1

Màquina 2: (guifi 10.138.241.5 + LAN amb sortida a inet)

ip tunnel add tun0 mode gre remote 10.138.123.123 local 10.138.241.5 ttl 255
ip link set tun0 up
ip addr add 10.0.2.1 dev tun0
ip route add 10.0.1.0/24 dev tun0
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t NAT -s 10.0.0.0/16 -d 0/0 -j MASQUERADE

Si la màquina 1 a més també està en una LAN i ha de fer de router (per aprofitar el túnel amb altres màquines que hi estiguin connectades), hem de posar-hi també ip_forward a 1.

Noti's que la major dificultat en tot aquest tema acostuma a ser establir les rutes correctament, fer masquerading/nat, protegir amb iptables, etc...

Una bona referència al respecte és el Linux Advanced Routing and Traffic Control Howto (http://www.lartc.org)

Windows implementa nativament també el protocol PPTP, que és com una connexió d'aquest segon tipus (utilitza GRE a baix nivell) però que a més pot implementar encriptació i autenticació. Per més informació: http://www.comesfa.org/ca/node/1883

Update: corregeixo el comentari sobre el PPTP.

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Més informació d'OpenVPN

Si voleu més informació en català sobre l'OpenVPN us passo tot el que escrit sobre aquest tema: OpenVPN by Oriol

ostres el mussol Oriol!

Crack, això em recorda que s'han d'activar les sindicacions! Sempre vaig enfeinat! Casum dena... Eye-wink
He intentat posar-te un post al oliol.joor.net (una de les webs amb millors continguts de les que conec) i no em recordava de la pwd del meu usuari Sad

Estàs creatiu com mai. Ets de lo milloret que hi ha. SAX!

ei Ramón...

tranquil Ramon si el primer que va de cul sóc jo, o sigui, que també és culpa meva. L'important és no oblidar la gent que val la pena i els grups de gent, és clar Eye-wink SAX!!! jo no m'oblido, a més rebo el digest de comesfa.org i encara que no em connecti a la web entre això i la llista de correu no em perdo ni un dels vostres moviments. Per cert, diria que ja m'heu fins hi tot súperat de visites i això que porto 5 anys escribint bogeries Smiling

Apa nois a cuidar-se Eye-wink

Preguntes sobre OpenVPN

Apofitant que s'esta remenant el tema de l'openVPN aquest dies, ho estic probant, i tinc un parell de dubtes :

-Seguin el comesfa d'en Ramon a http://www.comesfa.org/node/743 que descriu com fer un vpn entre dues maquines, si volguessim fer que una maquina A tingues multiples tunels cap a d'altres maquines nhi hauria prou d'afegir un "ifconfig" per cada tunel nou a la maquina A? llavors per que totes les subxarxes de tots els tunels es veiguessin entre si, seria qüestio nomes d'enrutar correctament oi?

Quina diferencia hi hauria entre fer les tunels generant la key que explica al document anterior o de fer servir el mètode que descriu l'oriol amb certificats SSL?

Gràcies!!

tipus de tunels

Hi ha diversos tipos de tunels, ethernet, bridged, permanents...
El meu comesfa explicava com fer-los fixes entre dues màquines, aamb la clau a cadascun i ip fixe, per fer-ne més, es posen més arxius de configuració i el servei ja ho fa tot.

El mètode de l'Oriol, via certificats, és perquè a un mateix túnel s'hi puguin connectar "n" clients, des d'on sigui, mentre tinguin un certificat vàlid. (si ho he entès bé)