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-v...
+
https://openvpn.net/community-resources/configuring-client-specific-rules-an... <b>
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.
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-v...
https://openvpn.net/community-resources/configuring-client-specific-rules-an... http://b
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/
Salut
La configuration client-to-client me semble n'être qu'une configuration spécifique de l'iptable.
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-v...
https://openvpn.net/community-resources/configuring-client-specific-rules-an... http://b
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/
Hello,
Heuh, d’après ton diagramme, je ne comprends pas pourquoi tu « ajoutes ton serveur de monitoring au VPN ». Je comprends par là que ton serveur de monitoring est lui-même client de ton serveur VPN ? J’ai faux ?
Si ton diagramme est juste, et que ton serveur de monitoring est simplement « derrière » ton serveur OpenVPN (mais pas client VPN), il te suffit de pousser une route sur tous tes clients VPN pour qu’ils sachent qu’ils doivent passer par le VPN pour le trafic à destination du serveur de monitoring. Et pas besoin de client-to-client du coup.
Ou alors j’ai rien compris au setup, ce qui n’est pas exclus non plus :D
Joel
De : FRsAG [mailto:frsag-bounces@frsag.org] De la part de SERRUT Arnaud Envoyé : mercredi 4 mars 2020 12:38 À : Baptiste Chappe Cc : French SysAdmin Group Objet : Re: [FRsAG] openvpn monitoring de client du VPN et contrôle d'accès client-to-client
Salut
La configuration client-to-client me semble n'être qu'une configuration spécifique de l'iptable.
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.commailto: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.commailto: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/24http://10.22.1.0/24 * Les autres machines clients dans un autre sous-réseau : 10.22.0.0/24http://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/24http://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-v...
+
https://openvpn.net/community-resources/configuring-client-specific-rules-an...http://b
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
Erreur ! Nom du fichier non spécifié.
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/
Salut,
Alors le serveur VPN et le serveur de monitoring sont 2 VM distinctes, que je n'ai pas mis en réseau privé. Je n'ai donc pas pensé à cette version où le serveur de monitoring serait visible sur le réseau. Donc mon diagramme porte en effet à confusion car le serveur de monitoring est bien client du VPN aussi.
En fait je ne comprends pas bien les directive de routage dans openvpn entre les clients.
Je vais essayer ton approche aussi, même si ce n'est pas pareil, j'y arriverai peut être plus facilement.
Et je vais peut être mieux comprendre cette histoire de route.
À suivre, Sylvain.
On 04/03/2020 13:14, Joel DEREFINKO wrote:
Hello,
Heuh, d’après ton diagramme, je ne comprends pas pourquoi tu « ajoutes ton serveur de monitoring au VPN ».
Je comprends par là que ton serveur de monitoring est lui-même client de ton serveur VPN ? J’ai faux ?
Si ton diagramme est juste, et que ton serveur de monitoring est simplement « derrière » ton serveur OpenVPN (mais pas client VPN), il te suffit de pousser une route sur tous tes clients VPN pour qu’ils sachent qu’ils doivent passer par le VPN pour le trafic à destination du serveur de monitoring.
Et pas besoin de client-to-client du coup.
Ou alors j’ai rien compris au setup, ce qui n’est pas exclus non plus :D
Joel
*De :*FRsAG [mailto:frsag-bounces@frsag.org] *De la part de* SERRUT Arnaud *Envoyé :* mercredi 4 mars 2020 12:38 *À :* Baptiste Chappe *Cc :* French SysAdmin Group *Objet :* Re: [FRsAG] openvpn monitoring de client du VPN et contrôle d'accès client-to-client
Salut
La configuration client-to-client me semble n'être qu'une configuration spécifique de l'iptable.
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 mailto: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 <mailto: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 <http://10.22.1.0/24> * Les autres machines clients dans un autre sous-réseau : 10.22.0.0/24 <http://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 <http://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/ <http://b> 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 *Erreur ! Nom du fichier non spécifié.* Cordialement, Sylvain.
Salut
Donc avec le réseau privé ça a fonctionné.
La config openvpn est donc la suivante pour le réseau privé (le serveur vpn a donc 2 interfaces réseau + tun0)
cat 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
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
# On définit le serveur DNS par défaut (ici OVH local)
push "dhcp-option DNS 213.186.33.99"
# export la route vers l'IP du serveur de monitoring
push "route 10.2.89.43 255.255.255.255"
# FIN
C'est la ligne qui exporte une route pour les clients, vers le server de monitoring joignable sur le réseau local du VPN
push "route 10.2.89.43 255.255.255.255"
Il faut activer ça pour que ça route entre les réseaux
root@vpn:~# vim /etc/sysctl.conf
root@vpn:~# sysctl -p /etc/sysctl.conf
net.ipv4.ip_forward = 1
J'ai ajouté une route static vers les IP vpn, sur le serveur de monitoring vers le serveur vpn sur IP privée (vpn 10.2.88.99)
root@monitor:~# route add -net 10.22.0.0 netmask 255.255.255.0 gw 10.2.88.99 eth1
root@monitor:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 xx.xxx.xx.x 0.0.0.0 UG 0 0 0 eth0
10.2.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
10.22.0.0 10.2.88.99 255.255.255.0 UG 0 0 0 eth1
xx.xxx.xx.x 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
169.254.169.254 10.2.85.87 255.255.255.255 UGH 0 0 0 eth1
Et ça passe.
root@monitor:~# ping 10.22.0.10
PING 10.22.0.10 (10.22.0.10) 56(84) bytes of data.
64 bytes from 10.22.0.10: icmp_seq=1 ttl=63 time=17.2 ms
64 bytes from 10.22.0.10: icmp_seq=2 ttl=63 time=17.1 ms
^C
--- 10.22.0.10 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 3ms
rtt min/avg/max/mdev = 17.116/17.164/17.213/0.139 ms
Et en http aussi ça répond depuis l'exporter de prometheus :
root@monitor:~# curl http://10.22.0.10:9100/metrics
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
go_gc_duration_seconds{quantile="0.5"} 0
go_gc_duration_seconds{quantile="0.75"} 0
[...]
Sur le client VPN à monitorer on a les routes suivantes :
pi@SYLVAIN:~ $ route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 202 0 0 eth0
0.0.0.0 10.0.0.1 0.0.0.0 UG 303 0 0 wlan0
10.0.0.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
10.2.89.43 10.22.0.9 255.255.255.255 UGH 0 0 0 tun0
10.22.0.1 10.22.0.9 255.255.255.255 UGH 0 0 0 tun0
10.22.0.9 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
Les règles de nat sur le serveur VPN, ne sont pas nécessaires :
root@vpn:/etc/openvpn# iptables -t nat -D POSTROUTING 1
root@vpn:/etc/openvpn# iptables -t nat -L -n --line-numbers
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Sans, le monitoring voit toujours le client.
En bidouillant à partir de ce résultat j'ai réussi via le VPN aussi :-)
Il faut que les routes soient présentes partout vu de chaque serveur vers ses destinations et dans le serveur openVPN.
Pour le serveur de monitoring dans le fichier ccd/monitor, ajoute la route via VPN pour les IP du /24
push "route 10.22.0.0 255.255.255.0"
Pour les autres clients dans ccd/DEFAULT
push "route 10.22.1.1 255.255.255.255"
+ serveur.conf la route interne de openvpn
route 10.22.1.1 255.255.255.255
Les fichiers complets
:::::::::::::: 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/#du... #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
#push "route 10.2.89.43 255.255.255.255"
:::::::::::::: ccd/DEFAULT :::::::::::::: ## add route to see normal client #iroute 10.22.0.0 255.255.255.0
# add route to see monitoring push "route 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-an... ifconfig-push 10.22.1.1 10.22.1.2
## add route to see other client #iroute 10.22.1.0 255.255.255.0
# add route to reach client through the VPN push "route 10.22.0.0 255.255.255.0"
Ça donne sur les clients du VPN :
root@monitor:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 xx.xxx.xx.x 0.0.0.0 UG 0 0 0 eth0
10.22.0.0 10.22.1.2 255.255.255.0 UG 0 0 0 tun0
10.22.0.1 10.22.1.2 255.255.255.255 UGH 0 0 0 tun0
10.22.1.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
xx.xxx.xx.x 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
pi@SYLVAIN:/tmp/prometheus $ route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 303 0 0 wlan0
10.22.0.1 10.22.0.9 255.255.255.255 UGH 0 0 0 tun0
10.22.0.9 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.22.1.1 10.22.0.9 255.255.255.255 UGH 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
Il me reste à ajouter d'autres clients et ajouter les règles de firewall pour être sûr que le accès sont fermés.
Je n'ai pas encore trouvé la commande pour afficher les routes internes de openvpn, et je ne suis pas encore bien sûr des fonctions des directives openvpn qui concerne les routes. Les moteurs de recherches retournes assez peu de résultats probants.
Curieusement je n'ai pas mis de directive iroute et ça fonctionne quand même.
À suivre, Sylvain.
On 04/03/2020 13:14, Joel DEREFINKO wrote:
Hello,
Heuh, d’après ton diagramme, je ne comprends pas pourquoi tu « ajoutes ton serveur de monitoring au VPN ».
Je comprends par là que ton serveur de monitoring est lui-même client de ton serveur VPN ? J’ai faux ?
Si ton diagramme est juste, et que ton serveur de monitoring est simplement « derrière » ton serveur OpenVPN (mais pas client VPN), il te suffit de pousser une route sur tous tes clients VPN pour qu’ils sachent qu’ils doivent passer par le VPN pour le trafic à destination du serveur de monitoring.
Et pas besoin de client-to-client du coup.
Ou alors j’ai rien compris au setup, ce qui n’est pas exclus non plus :D
Joel
*De :*FRsAG [mailto:frsag-bounces@frsag.org] *De la part de* SERRUT Arnaud *Envoyé :* mercredi 4 mars 2020 12:38 *À :* Baptiste Chappe *Cc :* French SysAdmin Group *Objet :* Re: [FRsAG] openvpn monitoring de client du VPN et contrôle d'accès client-to-client
Salut
La configuration client-to-client me semble n'être qu'une configuration spécifique de l'iptable.
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 mailto: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 <mailto: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 <http://10.22.1.0/24> * Les autres machines clients dans un autre sous-réseau : 10.22.0.0/24 <http://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 <http://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/ <http://b> 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 *Erreur ! Nom du fichier non spécifié.* Cordialement, Sylvain.
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/#du... #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-an... 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 mailto: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 <mailto: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 <http://10.22.1.0/24> * Les autres machines clients dans un autre sous-réseau : 10.22.0.0/24 <http://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 <http://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/ <http://b> 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/