On 04/03/2020 12:37, SERRUT Arnaud wrote:
La configuration client-to-client me semble n'être qu'une configuration spécifique de l'iptable.


Je ne suis pas sûr de saisir cette phrase ci-dessus:

D'après la man page

       --client-to-client
              Because  the OpenVPN server mode handles multiple clients through a single tun or tap interface, it is effectively a
              router.  The --client-to-client flag tells OpenVPN to internally route client-to-client traffic rather than  pushing
              all client-originating traffic to the TUN/TAP interface.

              When  this  option is used, each client will "see" the other clients which are currently connected.  Otherwise, each
              client will only see the server.  Don't use this option if  you  want  to  firewall  tunnel  traffic  using  custom,
              per-client rules.

Donc je dois bien, éviter d'utiliser cette règles pour router moi même le trafic et mettre des règles de filtrage quelque part.

Comme c'est un routage interne à openvpn rien si client-to-client est actif, ça ne sort si on lance :

iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination        

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


J'ai actuellement cette config, que je ne comprends pas encore vraiment


::::::::::::::
server.conf
::::::::::::::
# use 443 https port and router mode (tun)
port 443
proto tcp-server
dev tun0

# SSL keys and cert
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem

# IP client range unless specified in ccd
server 10.22.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log

verb 4
# allow client to have duplicate common name
# https://openvpn.net/community-resources/reference-manual-for-openvpn-2-0/#duplicate-cn
#duplicate-cn

# On définit le serveur VPN comme passerelle par défaut pour les clients.
#push "redirect-gateway def1"
#push "route 10.9.8.0 255.255.252.0"
# On définit le serveur DNS par défaut (ici OVH local)
push "dhcp-option DNS 213.186.33.99"

# allow client to see Each other
#client-to-client

# update machine names
#script-security 2
#learn-address /etc/openvpn/server/scripts/learnaddress

# client specific configuration directory
client-config-dir ccd

# route for specific device: monitor
route 10.22.1.1 255.255.255.255



::::::::::::::
ccd/DEFAULT
::::::::::::::
# add route to see monitoring
iroute 10.22.1.1 255.255.255.255
::::::::::::::
ccd/monitor
::::::::::::::
# virtual client and server IP endpoints /30
# see https://openvpn.net/community-resources/configuring-client-specific-rules-and-access-policies/
ifconfig-push 10.22.1.1 10.22.1.2

# add route to see other client
iroute 10.22.0.0 255.255.255.0

# add route to reach client through the VPN
push "route 10.22.0.0 255.255.255.0"


Et j'ai tenté d'injecté des règle de iptables :


iptables -A FORWARD -i tun0 -s 10.22.1.0/24 -d 10.22.0.0/24 -j ACCEPT
iptables -A FORWARD -i tun0 -d 10.22.1.0/24 -s 10.22.0.0/24 -j ACCEPT

J'ai des traces qui remontent en tcpdump mais pas de passage d'un client à l'autre.

À suivre,
Sylvain.


Compare tes tables iptables (dont -t nat) entre les 2 modes.
Repère l'entrée qui autorise tes clients à communiquer entre eux.
Enlève l'option client-to-client
Adapte l'entrée pour que seule l'ip de ton serveur (mise en statique) ait l'autorisation et ajoute la 

Cdt

Le mer. 4 mars 2020 à 12:04, Baptiste Chappe <baptiste.chappe@gmail.com> a écrit :
Hello, 

Avec le terme iroutes et route du serveur de chaque client tu peux décider de voir uniquement ton réseaux client. J'ai un fichier de conf par client par site

Je fais comme toi avec un 20ene de tunnel combo openvpn/mikrotik. Seul le réseaux monitoring est connu de chaque client.

Baptiste 

Le mer. 4 mars 2020 à 11:46, Sylvain Viart <sylvain@opensource-expert.com> a écrit :
Bonjour,

Je ne suis pas expert en vpn et réseau du coup je patauge un peu.

J'ai remonté un serveur openVPN qui sert des clients sur TCP via le port 443 pour de l'évasion NAT.
Ça fonctionne, et en me connectant au serveur VPN je peux administrer les clients, cette connexion ne sert qu'à ça et à fournir un ntp sur le VPN aussi avec l'IP privée du serveur VPN.
Les clients n'ayant pas de route pour sortir par le VPN, ils sortent par leur connexion local en NAT.

Aujourd'hui, je veux modifier la config pour monitorer les nœuds client du VPN en pull avec prometheus.
J'ajoute donc le serveur prometheus au VPN et je voudrais que lui seul puisse voir d'autres clients du VPN et pas les autres clients entre eux.
Parce que l'ajout de la directive client-to-client fonctionne sur le serveur VPN, mais du coup tous les clients se voient entre eux.

Je n'ai pas encore trouvé la config réseau qui va bien.
Je pense que je dois ajouter une config spécifique sur le serveur VPN :

  • client monitor se connecte au VPN et avoir un sous-réseau pour lui. 10.22.1.0/24
  • Les autres machines clients dans un autre sous-réseau : 10.22.0.0/24

Ensuite il doit falloir autoriser le sous réseau de monitoring et router le trafic sur le serveur VPN vers le réseau des clients

C'est là que je coince, je ne sais pas comment router convenablement depuis le serveur VPN les paquets de 10.22.1.1 vers 10.22.0.10/24

Avez vous des pistes à me fournir ?

J'ai trouvé une piste qui à l'air un peut obscure sur du packet filter à l'intérieur de openvpn

http://prog3.com/sbdm/blog/mhpmii/article/details/47780243

Et je pense que la bonne façon s'inspire de

https://openvpn.net/community-resources/how-to/#expanding-the-scope-of-the-vpn-to-include-additional-machines-on-either-the-client-or-server-subnet

+

https://openvpn.net/community-resources/configuring-client-specific-rules-and-access-policies/


Mais je nage encore dans les routes est les config iptables

Je n'ai pas de services à exposer sur le réseau pour les clients VPN




Cordialement,
Sylvain.
-- 
Sylvain Viart - GNU/Linux Sysadmin/Developer/DevOps - France
_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/
_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/

-- 
Sylvain Viart - GNU/Linux Sysadmin/Developer/DevOps - France