Al conectarse a una red privada virtual (VPN), el servidor asigna a sus clientes una dirección IP perteneciente a una subred (mediante el protocolo DHCP). A su vez, como mencioné anteriormente, OpenVPN permite reservar direcciones IP de este pool para asignar estáticamente a determinados clientes. Sin embargo, y a pesar de que todos los clientes de una misma VPN poseen direcciones IP de una misma subred, por defecto no existe conectividad entre los mismos. Hablando en criollo: "no se ven entre ellos". Aunque es posible lograr que se puedan conectar entre ellos a través de una configuración simple en el servidor de VPN.
Veamos un ejemplo. Con la configuración por defecto del servidor OpenVPN, puedo conectarme con el servidor desde cualquier cliente a través de la subred de la VPN (IP 10.8.0.1
):
emi@vaio:~$ ping -c 1 10.8.0.1 PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data. 64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=173 ms --- 10.8.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 173.485/173.485/173.485/0.000 ms
Pero no puedo conectarme con otros clientes de la VPN (por ejemplo el cliente cuya IP es 10.8.0.100
):
emi@vaio:~$ ping -c 1 10.8.0.100 PING 10.8.0.100 (10.8.0.100) 56(84) bytes of data. --- 10.8.0.100 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms
Una vez más, esto ocurre porque, por defecto, la configuración del servidor VPN no permite el acceso entre clientes (es decir conexiones de cliente a cliente).
Para permitir el acceso o conexión entre clientes es necesario editar el archivo de configuración del servidor OpenVPN:
root@vpn:~# nano /etc/openvpn/server.conf
Dentro del mismo, localizar la directiva client-to-client
:
# Uncomment this directive to allow different # clients to be able to "see" each other. # By default, clients will only see the server. # To force clients to only see the server, you # will also need to appropriately firewall the # server's TUN/TAP interface. ;client-to-client
Esta es la directiva que permite que los clientes puedan comunicarse entre ellos a través de la VPN, y por defecto se encuentra deshabilitada (comentada con un punto y coma por delante). Simplemente remover el comentario y guardar los cambios:
# Uncomment this directive to allow different # clients to be able to "see" each other. # By default, clients will only see the server. # To force clients to only see the server, you # will also need to appropriately firewall the # server's TUN/TAP interface. client-to-client
Luego, reiniciar el servicio de VPN:
root@vpn:~# service openvpn restart
Una vez reiniciado el servicio se debe esperar unos minutos o segundos...
emi@vaio:~$ ping 10.8.0.100 PING 10.8.0.100 (10.8.0.100) 56(84) bytes of data. 64 bytes from 10.8.0.100: icmp_seq=24 ttl=64 time=558 ms 64 bytes from 10.8.0.100: icmp_seq=25 ttl=64 time=345 ms 64 bytes from 10.8.0.100: icmp_seq=26 ttl=64 time=345 ms 64 bytes from 10.8.0.100: icmp_seq=27 ttl=64 time=347 ms 64 bytes from 10.8.0.100: icmp_seq=28 ttl=64 time=347 ms 64 bytes from 10.8.0.100: icmp_seq=29 ttl=64 time=342 ms ^C --- 10.8.0.100 ping statistics --- 29 packets transmitted, 6 received, 79% packet loss, time 28541ms rtt min/avg/max/mdev = 342.808/381.381/558.498/79.230 ms
Es necesario esperar unos segundos/minutos dependiendo de la instalación, ya que todos los clientes de la VPN deberán reconectarse luego de haber reiniciado el servicio.
Se observa que a partir de ese momento ya es posible el acceso entre clientes.
Referencias