Solución 1:
Si client-to-client
está habilitado , el servidor VPN reenvía los paquetes de cliente a cliente internamente sin enviarlos a la capa IP del host (es decir, al kernel). La pila de red del host no ve esos paquetes en absoluto.
.-------------------.
| IP Layer |
'-------------------'
.-------------------.
| TUN device (tun0) |
'-------------------'
.-------------------.
| OpenVPN server |
'-------------------'
^ |
1 | | 2
| v
.----------------. .----------------.
| Client a | | Client b |
'----------------' '----------------'
Si client-to-client
está deshabilitado , los paquetes de un cliente a otro cliente pasan por la capa IP del host (iptables, tabla de enrutamiento, etc.) de la máquina que aloja el servidor VPN:si el reenvío de IP está habilitado , el host podría reenviar el paquete (usando su tabla de enrutamiento) nuevamente a la interfaz TUN y el demonio VPN reenviará el paquete al cliente correcto dentro del túnel.
.-------------------.
| IP Layer | (4) routing, firewall, NAT, etc.
'-------------------' (iptables, nftables, conntrack, tc, etc.)
^ |
3 | | 5
| v
.-------------------.
| TUN device (tun0) |
'-------------------'
^ |
2 | | 6
| v
.-------------------.
| OpenVPN server |
'-------------------'
^ |
1 | | 7
| v
.----------------. .----------------.
| Client a | | Client b |
'----------------' '----------------'
En este caso (client-to-client
deshabilitado), puede bloquear los paquetes de cliente a cliente usando iptables:
iptables -A FORWARD -i tun0 -o tun0 -j DROP
donde tun0
es su interfaz VPN.
Solución 2:
Debe hacer algo más que simplemente comentar la directiva como dice aquí:
Descomente esta directiva para permitir que diferentes clientes puedan "verse" entre sí. De forma predeterminada, los clientes solo verán el servidor.Para obligar a los clientes a ver solo el servidor, también deberá proteger adecuadamente el TUN/TAP del servidor interfaz.
Por lo tanto, puede configurar una política de dirección IP separada para cada cliente. Consulte la sección Configuración de reglas y políticas de acceso específicas del cliente aquí:https://openvpn.net/index.php/open-source/documentation/howto.html.y aquí:https://www.sbarjatiya.com/notes_wiki/index.php/Configuring_separate_IP_and_firewall_rule_for_each_openvpn_client.
Solución 3:
El siguiente párrafo de la página man para openvpn
responde a esta pregunta, aunque no está necesariamente claro en la primera lectura:
Debido a que el modo de servidor OpenVPN maneja múltiples clientes a través de una sola interfaz tun o tap, es efectivamente un enrutador. El --client-to-client
le dice a OpenVPN que enrute internamente el tráfico de cliente a cliente en lugar de enviar todo el tráfico que se origina en el cliente a la interfaz TUN/TAP.
Cuando se usa esta opción, cada cliente "verá" a los otros clientes que están actualmente conectados. De lo contrario, cada cliente solo verá el servidor. No utilice esta opción si desea bloquear el tráfico mediante un túnel de cortafuegos mediante reglas personalizadas por cliente.
El client-to-client
La opción cortocircuita las tablas de enrutamiento normales en el servidor. Su eliminación no evita que los clientes utilicen las tablas de enrutamiento del servidor. Si esas tablas de enrutamiento, y la configuración del firewall del servidor, permiten que los clientes se vean entre sí, entonces podrán hacerlo.