Soluzione 1:
Se client-to-client
è abilitato , il server VPN inoltra internamente i pacchetti da client a client senza inviarli al livello IP dell'host (ovvero al kernel). Lo stack di rete dell'host non vede affatto quei pacchetti.
.-------------------.
| IP Layer |
'-------------------'
.-------------------.
| TUN device (tun0) |
'-------------------'
.-------------------.
| OpenVPN server |
'-------------------'
^ |
1 | | 2
| v
.----------------. .----------------.
| Client a | | Client b |
'----------------' '----------------'
Se client-to-client
è disattivato , i pacchetti da un client a un altro client passano attraverso il livello IP dell'host (iptables, tabella di instradamento, ecc.) della macchina che ospita il server VPN:se l'inoltro IP è abilitato , l'host potrebbe inoltrare nuovamente il pacchetto (utilizzando la sua tabella di routing) all'interfaccia TUN e il demone VPN inoltrerà il pacchetto al client corretto all'interno del tunnel.
.-------------------.
| 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 |
'----------------' '----------------'
In questo caso (client-to-client
disabilitato), puoi bloccare i pacchetti da client a client usando iptables:
iptables -A FORWARD -i tun0 -o tun0 -j DROP
dove tun0
è la tua interfaccia VPN.
Soluzione 2:
Devi fare di più che commentare la direttiva come dice qui:
Rimuovere il commento da questa direttiva per consentire a diversi client di "vedersi" l'un l'altro. Per impostazione predefinita, i client vedranno solo il server. interfaccia.
Pertanto è possibile configurare criteri di indirizzi IP separati per ciascun client. Consulta la sezione Configurazione di regole e criteri di accesso specifici del client qui:https://openvpn.net/index.php/open-source/documentation/howto.html.e qui:https://www.sbarjatiya.com/notes_wiki/index.php/Configuring_separate_IP_and_firewall_rule_for_each_openvpn_client.
Soluzione 3:
Il prossimo paragrafo della pagina man per openvpn
risponde a questa domanda, anche se non è necessariamente chiaro in prima lettura:
Poiché la modalità server OpenVPN gestisce più client tramite un'unica interfaccia tun o tap, è effettivamente un router. Il
--client-to-client
indica a OpenVPN di instradare internamente il traffico client-to-client anziché inviare tutto il traffico originato dal client all'interfaccia TUN/TAP.Quando viene utilizzata questa opzione, ogni client "vedrà" gli altri client attualmente connessi. Altrimenti, ogni client vedrà solo il server. Non utilizzare questa opzione se desideri proteggere il traffico del tunnel utilizzando regole personalizzate per client.
Il client-to-client
l'opzione cortocircuita le normali tabelle di instradamento sul server. La sua rimozione non impedisce ai client di utilizzare le tabelle di routing del server. Se quelle tabelle di instradamento e la configurazione del firewall del server consentono ai client di vedersi, allora saranno in grado di farlo.