Comment refuser les routes qui sont PUSHées par le serveur OpenVPN?

27

Lorsque j'établis une connexion client OpenVPN sur Internet à notre serveur OpenVPN d'entreprise, il pousse plusieurs routes statiques. Malheureusement, ces itinéraires interrompent une certaine connectivité au sein de mon environnement de réseau local, car ils entrent en collision avec mes propres itinéraires. Comment puis-je refuser ces itinéraires?

mbaitoff
la source

Réponses:

30

Les temps ont changé et à partir de 2017 (OpenVPN 2.4), cela est possible avec

pull-filter accept "route 192.168."
pull-filter ignore "route 172."
pull-filter accept "route 1"
pull-filter ignore "route "

Cet (exemple artificiel) permettra d'apprendre les routes qui commencent par 192.168, ignore toutes les 172. routes, autorise les autres routes à 1. tout et ignore ensuite toutes les autres routes.

Pour ignorer, redirect-gatewayvous pouvez:

pull-filter ignore redirect-gateway

Ces commandes sont ajoutées à votre fichier de configuration client.

De même, vous pouvez utiliser le mot clé rejectqui indique au serveur VPN qu'il n'a pas été accepté. Je ne suis pas sûr de l'utilisation de cela.

Et enfin, vous pouvez également filtrer d'autres options de configuration. J'ai utilisé cela pour ignorer les serveurs DNS proposés, car DNS est géré par un serveur local pour moi.

Criggie
la source
3
Remarque, cela ne fonctionne que dans OpenVPN 2.4.x.
ab77
A travaillé sur OpenVPN 2.4.7 en utilisant l'interface graphique OpenVPN 11.13.0 sur Windows 10 pour résoudre les conflits de sous-réseau entre deux serveurs d'accès OpenVPN en utilisant les deux configurations par défaut dont j'ai besoin en même temps. Merci d'avoir fourni la pièce finale pour le faire fonctionner!
flickerfly le
24

Après une étude approfondie du openvpnmanuel, j'ai trouvé une réponse à ma question:

Si vous ne voulez pas que les routes soient exécutées automatiquement, mais qu'elles soient gérées par votre propre outil, utilisez l'option suivante:

   --route-noexec
          Don't add or remove routes automatically.  Instead pass routes to --route-up script using environmental variables.

Si vous acceptez tout ce qui est poussé par le serveur à l'exception des routes, utilisez l'option suivante:

  --route-nopull
          When used with --client or --pull, accept options pushed by server EXCEPT for routes.
          When used on the client, this option effectively bars the server from adding routes to the client's routing table, however note that
          this option still allows the server to set the TCP/IP properties of the client's TUN/TAP interface.
mbaitoff
la source
2
fyi vous pouvez également utiliser route-nopulldans le fichier de configuration .opvn: stackoverflow.com/questions/35698215/…
knocte
1

Vous ne pouvez pas refuser des itinéraires individuels, mais si vous avez accès à la modification de votre configuration OpenVPN, vous pouvez effectivement arrêter le serveur pour --pushtoute configuration en supprimant toutes les instances de clientou pullde votre configuration. Vous devrez plutôt ajouter tls-clientsi cette directive n'existe pas déjà dans votre configuration ( clientn'est qu'un synonyme de pull, tls-client).

Bien sûr, si vous faites cela, vous perdrez toutes les routes et toute autre configuration qui vous serait normalement pushéditée, vous devrez donc configurer manuellement ces paramètres après le lancement de votre tunnel.

Mike Insch
la source
hey Mike, et comment configurer manuellement une route vers le sous-réseau qui m'intéresse? (10.0.0._) une façon de configurer cela dans le fichier .opvn?
knocte
route 10.0.0.0 255.0.0.0
markhorrocks