Pero aquí surge un problema, imputable a la asignación de parámetros como dirección ip y máscara que recibo automáticamente de windows. Se asigna a la nueva conexión creada (ppp0) una máscara 255.255.255.255 o lo que es lo mismo, el túnel creado sólo me permite la conexión con una única máquina de la red a la que me he enganchado. Seguro que es posible solucionar esto para que Windows asigne a mi conexión otra máscara del tipo 255.255.255.0 que me permita el acceso a todo el rango de esta subred, pero aquí le vamos a buscar la solución desde nuestra máquina (que es la que controlamos) y nuestro linux.
Listo los interfaces de red y compruebo que además de la wifi, o ethernet aparece el dispositivo/interface asociado al túnel que hemos creado en el post anterior:
alfredo@xana:~$ sudo ifconfig
ppp0 Link encap:Point-to-Point Protocol inet addr:10.32.229.239 P-t-P:10.32.229.241 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1
RX packets:55 errors:0 dropped:0 overruns:0 frame:0
TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3 RX bytes:5352 (5.2 KiB) TX bytes:2588 (2.5 KiB)
La red local que me da acceso a internet está en el rango de 192.168.2.*
El túnel ha creado una interface llamada ppp0 y me ha asignado una dirección de la red remota que está en el rango de 10.32.229.*. En concreto la 239, siendo la 10.32.229.241 la dirección del host (windows 2003 server en el que están configuradas las "conexiones salientes").
El problema (resaltado en rojo) es que a esta interface se le ha asignado una máscara de red que sólo permite el acceso al ordenador anfitrión, al 10.32.229.241
Pretendo acceder a otros equipos dentro del rango de la subred 10.32.229.*, por ejemplo al 10.32.229.18.
Hago ping a 10.32.229.241 (ordenador anfitrión)
PING 10.32.229.241 (10.32.229.241) 56(84) bytes of data.
64 bytes from 10.32.229.241: icmp_req=1 ttl=128 time=108 ms
...
64 bytes from 10.32.229.241: icmp_req=7 ttl=128 time=96.9 ms
^C
--- 10.32.229.241 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6007ms
Tengo acceso pero si hago un ping a 10.32.229.18
alfredo@xana:~$ ping 10.32.229.18
PING 10.32.229.18 (10.32.229.18) 56(84) bytes of data.
^C
--- 10.32.229.18 ping statistics ---13 packets transmitted, 0 received, 100% packet loss, time 12094ms
Se puede comprobar que no accedo a este equipo.
Una posible solución (que no he probado) es añadirle la opción defaultroute al comando pppd que hemos configurado en uno de los archivo generados para crear nuestra conexión. El problema o la ventaja, es que nos enrutará todo el trafico de nuestro ordenador a través de la red a la que nos conectamos, incluida la salida a internet (si la hubiera) a través de los dispositivos de esa red, anulándonos la propia.
La solución buscada (que mantiene las rutas de nuestro equipo) es añadirle una nueva ruta al tráfico de nuestros paquetes a esa red.
Veamos cómo enruta nuestro equipo el tráfico antes de la modificación para entender qué vamos a hacer:
alfredo@xana:~$ sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.32.229.241 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
85.152.21.145 192.168.2.2 255.255.255.255 UGH 0 0 0 wlan0
192.168.2.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlan0
0.0.0.0 192.168.2.2 0.0.0.0 UG 0 0 0 wlan0
El comando route, que se debe ejecutar con permisos de root, nos proporciona las tablas de enrutamiento de nuestro equipo. El parámetro -n nos garantiza la información con las ip y no con nombres de host.
Se puede comprobar cómo la ruta hacia la red virtual (interface ppp0) tiene como destino la ip 10.32.229.241 con una máscara que limita las conexiones a sólo ese equipo.
NOTA: Se pueden ver las rutas de la interface inalámbrica wlan0 con la que me conecto a la red doméstica, y ésta a su vez a una red wifi rural que sale a internet.
La solución propuesta es añadir manualmente una ruta para conectar con la red 10.32.229.0 y con los 254 posibles equipos de esta:
alfredo@xana:~$ sudo route add -net 10.32.229.0 netmask 255.255.255.0 dev ppp0
El propio comando route es la solución, ejecutado con permisos de root (sudo). Se añade (add -net) el rango de subred al que dirigir el tráfico 10.32.229.0, se añade la máscara apropiada para dar acceso a todos los equipos en ese rago de red, 255.255.255.0 y se asocia la ruta a la interface generada al crear la VPN, ppp0.
Comprobemos:
alfredo@xana:~$ sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.32.229.241 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
85.152.21.145 192.168.2.2 255.255.255.255 UGH 0 0 0 wlan0
192.168.2.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan0
10.32.229.0 0.0.0.0 255.255.255.0 U 0 0 0 ppp0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlan0
0.0.0.0 192.168.2.2 0.0.0.0 UG 0 0 0 wlan0
En negrita resalto la nueva ruta creada.
Y compruebo si tengo acceso a otro ordenador que no sea al que me he conectado anteriormente.
alfredo@xana:~$ ping 10.32.229.18
PING 10.32.229.18 (10.32.229.18) 56(84) bytes of data.
64 bytes from 10.32.229.18: icmp_req=1 ttl=127 time=261 ms
64 bytes from 10.32.229.18: icmp_req=2 ttl=127 time=132 ms
64 bytes from 10.32.229.18: icmp_req=3 ttl=127 time=99.0 ms
64 bytes from 10.32.229.18: icmp_req=4 ttl=127 time=141 ms
^C
--- 10.32.229.18 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
Supongo que ahora tendré que crear un demonio para conectarme automáticamente y generar también de manera autónoma esta ruta. Pero eso lo dejo para otro post.
No hay comentarios:
Publicar un comentario