Hace 3 años que documenté cómo proporcionar salida a Internet con SQUID y túneles SSH en mi página sobre redes 802.11b y OpenBSD.
Después de valorar IPsec, experimentando lo complicado que es de manejar y los problemas que supone hacer interactuar implementaciones de distintos fabricantes, me decidí por emplear SSH y dejarme de encapsulaciones :).
No es excesivamente complicado realizar un túnel (y menos con un poco de ayuda), hay versión del cliente para casi cualquier sistema operativo y, bueno, el caso es que funciona. Pero la verdad es que la solución no es perfecta al 100%.
Se pueden hacer cuantos túneles deseemos, pero cada uno de ellos tiene como destino un solo objetivo.
En el caso de HTTP, HTTPS, FTP, y algunos protocolos ligeros que he habilitado (como Jabber con SSL o IRC), todo se soluciona con hacer un túnel a un proxy local (SQUID). Pero si queremos otros servicios, como POP3, no hay más remedio que abrir otro túnel extra.
Insisto en que es la mejor opción en relación calidad/precio ;).
Ahora he estado valorando otras soluciones, sin contar con IPsec, y la verdad es que ninguna me ha convencido.
Buscamos autenticación y cifrado de datos. Recordemos que elxwifi, como otras redes ciudadanas, es una red abierta y sin cifrado a nivel de enlace.
He echado un ojo a los protocolos relacionados con PPP (Point to Point Protocol) y me he contrado dos candidatos: PPPoE (PPP over Ethernet) y PPTP (Point to Point tunneling Protocol). A partir de aquí empieza un mar de acrónimos bastante difícil de digerir, avisado queda el lector :P.
Un vistazo rápido me lleva a descartar PPPoE, ya que ethernet es 802.3, con lo que no tengo claro que se pueda encapsular en 802.11b. Nos proporciona autenticación, pero no cifrado nativo (sí empleando MPPE). Además el servidor funcional que puedo encontrar para OpenBSD va en el espacio de usuario y tiene un rendimiento bastante pobre.
Así que queda PPTP. Veamos un poco de qué va este protocolo.
Se emplea para crear VPN (Virtual Private Netwok), aunque se dice que es menos efectivo que IPsec, y cuenta con un RFC algo especial (RFC 2637). Especial porque lo propone un consorcio y todo eso... pero lo que he leído por ahí es que pertenece a Microsoft, así que... :D.
Implementa sesiones PPP sobre GRE, que es un método genérico para encapsular protocolos (y funcionaría con 802.11b). La autenticación se realiza normalmente y hay intercambio de claves para emplear MPPE (Microsoft Point to Point Encryption, que parece estar basado en el uso de DES).
Hay clientes para casi cualquier sistema operativo (incluyendo implementaciones libres: PPTP Client), y servidores para OpenBSD (y otros sistemas poptop).
Lamentablemente la participación de Microsoft en el invento se nota, y además ha hecho caer mi líbido de cacharear por debajo de lo tolerable :'(.
Quedan otras soluciones, como encapsular PPP sobre UDP (emplear PPP sobre TCP tiene problemas lógicos). Esto tampoco sería una solución, aunque empleáramos MPPE para conseguir cifrado, porque perderíamos la portabilidad que da actualmente el empleo de túneles SSH (¿se puede hacer este tipo de uso de PPP en todos los sistemas?).
En definitiva: nos quedamos como estamos. Aunque ha sido bastante entretenida la investigación ;).

![[xml]](/images/xml.gif)
