Page de Man OpenVPN

  Version traduction 1.5.0.fr.1.0 du 11/01/2004

NOM

openvpn - démon de tunnel IP sécurisé.  

SYNOPSIS


openvpn--help ]
    


openvpn--config fichier ]
    


openvpn--genkey ] [ --secret fichier ]
    


openvpn--mktun ] [ --rmtun ] [ --dev tunX | tapX ] [ --dev-type type-périph ] [ --dev-node noeud ]
    


openvpn--test-crypto ] [ --secret fichier ] [ --auth algo ] [ --cipher algo ] [ --keysize n ] [ --no-replay ] [ --no-iv ]
    


openvpn--askpass ] [ --auth algo ] [ --ca fichier ] [ --cd répertoire ] [ --cert fichier ] [ --chroot répertoire ] [ --cipher algo ] [ --comp-lzo ] [ --comp-noadapt ] [ --config fichier ] [ --crl-verify crl ] [ --daemon ] [ --dev-name nom ] [ --dev-node noeud ] [ --dev-type type-périph ] [ --dev tunX | tapX | null ] [ --dh fichier ] [ --disable-occ ] [ --down cmd ] [ --float ] [ --fragment max ] [ --gremlin ] [ --group groupe ] [ --hand-window n ] [ --http-proxy serveur port [authfichier] ] [ --http-proxy-retry ] [ --ifconfig l r ] [ --ifconfig-noexec ] [ --ifconfig-nowarn ] [ --inactive n ] [ --inetd ] [ --ipchange cmd ] [ --key fichier ] [ --key-method m ] [ --keysize n ] [ --link-mtu n ] [ --local hôte ] [ --log-append fichier ] [ --log fichier ] [ --lport port ] [ --mlock ] [ --mssfix max ] [ --mtu-disc type ] [ --mtu-test ] [ --mute n ] [ --nice-work n ] [ --nice n ] [ --no-iv ] [ --no-replay ] [ --nobind ] [ --passtos ] [ --persist-key ] [ --persist-local-ip ] [ --persist-remote-ip ] [ --persist-tun ] [ --ping-exit n ] [ --ping-restart n ] [ --ping-timer-rem ] [ --ping n ] [ --port port ] [ --proto p ] [ --redirect-passerelle ] [ --remote hôte ] [ --reneg-bytes n ] [ --reneg-pkts n ] [ --reneg-sec n ] [ --replay-persist fichier ] [ --replay-window n [t] ] [ --resolv-retry n ] [ --route réseau [masque réseau] [passerelle] [métrique] ] [ --route-delay n ] [ --roue-gateway gw ] [ --route-noexec ] [ --route-up cmd ] [ --rport port ] [ --secret fichier ] [ --setenv nom valeur ] [ --shaper n ] [ --single-session ] [ --tls-auth f ] [ --tls-cipher l ] [ --tls-client ] [ --tls-remote nomx509 ] [ --tls-server ] [ --tls-timeout n ] [ --tls-verify cmd ] [ --tran-window n ] [ --tun-ipv6 ] [ --tun-mtu-extra n ] [ --tun-mtu n ] [ --up cmd ] [ --up-restart ] [ --up-delay ] [ --user utilisateur ] [ --verb n ] [ --writepid fichier ]
      

DESCRIPTION

OpenVPN est un démon VPN robuste et flexible qui peut être utilisé pour crééer sur Internet un lien sécurisé entre deux (ou plus) réseaux privés par un tunnel chiffré. Les points forts d'OpenVPN sont notamment sa grande portabilité, son excellente stabilité, le support pour les addresses dynamiques et le NAT, la compression dynamique de données, l'utilisation d'un unique port UDP/TCP, une conception qui transfère la plupart des tâches de cryptographie à la bibliothèque OpenSSL, et une installation plutôt facile qui, dans la plupart des cas, ne requiert pas de module noyau spécifique.

OpenVPN s'appuie sur la bibliothèque OpenSSL, et obtient de celle-ci la plupart de ses capacités cryptographiques.

Open VPN supporte le chiffrement conventionnel utilisant un secret partagé (mode Clé Statique) ou le chiffrement par clés publiques (mode SSL/TLS) utilisant des certificats clients et serveur.

OpenVPN peut également fonctionner en mode tunnel UDP/TCP sans chiffrement.

OpenVPN est conçu pour fonctionner avec les périphériques réseau virtuels TUN/TAP qui sont disponibles sur la plupart des plates-formes.

En résumé, OpenVPN vise à fournir, sous une forme compacte, les fonctionnalités essentielles d'IPSec.  

OPTIONS

Les options d'OpenVPN peuvent être placées indifféremment en ligne de commande ou dans un fichier de configuration. En ligne de commande, les options doivent être précédées d'un tiret double ("--") qui n'est pas nécessaire dans le fichier de configuration.
--help
Affiche les options.
--config fichier
Lit les options de configuration contenues dans le fichier fichier dont chaque ligne équivaut à une option de ligne de commande, mais sans le tiret double '--'.

Les guillemets ("") peuvent être utilisés pour délimiter les paramètres contenant un espace, et les caractères "#" ou ";" désignent les commentaires.

Les fichiers de configuration peuvent être imbriqués jusqu'à une profondeur raisonnable.

Pour des exemples de fichiers de configuration, reportez-vous à http://openvpn.sourceforge.net/examples.html

Voici un court exemple de fichier de configuration :


#
# Exemple de fichier de configuration OpenVPN
# utilisant le secret partagé.
#
# '#' ou ';' dénotent les commentaires.

# Nous utilisons un peripherique dynamique tun.
dev tun

# Notre vis-à-vis distant
remote mypeer.mydomain

# 10.1.0.1 est l'extrémité locale de notre VPN
# 10.1.0.2 est l'extrémité distante de notre VPN
ifconfig 10.1.0.1 10.1.0.2

# Notre secret partagé
secret static.key
 

Options du Tunnel

--local hôte
Nom ou adresse IP de l'hôte local. Si cette option est définie, OpenVPN écoute sur cette adresse uniquement. Si l'option n'est pas définie, OpenVPN écoute sur toutes les interfaces disponibles.
--remote hôte
Nom ou adresse IP de l'hôte distant. Si cette option n'est pas définie, OpenVPN écoute les paquets provenant de n'importe quelle adresse IP, mais ne prendra en charge ces paquets que si les tests d'authentification réussissent. L'authentification est requise pour tous les pairs ("peers") potentiels, même pour ceux qui proviennent d'une adresse IP connue (il est facile de contrefaire l'adresse IP source d'un paquet UDP).

Lorsque utilisé en mode TCP, --remote agit comme un filtre qui rejette les connexions provenant de machines qui ne correspondent pas à hôte.

--proto p
Utiliser le protocole p pour communiquer avec l'hôte distant. p peut avoir pour valeur : udp, tcp-client, ou tcp-server.

Le protocole par défaut est udp si --proto n'est pas défini.

Pour un fonctionnement en UDP, --proto udp doit être défini pour les deux hôtes.

Pour un fonctionnement en TCP, un hôte doit être démarré avec l'option --proto tcp-server et l'autre doit utiliser --proto tcp-client. L'hôte démarré avec tcp-server se place en attente d'une connexion entrante. L'hôte démarré avec tcp-client va essayer de se connecter. En cas d'échec, il attendra 5 secondes avant de recommencer. Le serveur et le client TCP émulent tous deux un signal SIGUSR1 (restart) si l'un ou l'autre réinitialisent la connexion.

OpenVPN est optimisé pour fonctionner sous UDP, la fonctionnalité TCP est fournie dans le cas où UDP n'est pas disponible. En comparaison d'UDP, TCP sera généralement un peu moins efficace et robuste lorsque utilisé sur un réseau chargé ou peu fiable. TCP est également une fonctionnalité récente d'OpenVPN version 1.5 qu'il faut considérer comme expérimentale jusqu'à la sortie des versions 1.6 ou 1.7.

L'article suivant pointe certaines des difficultés présentées par les tunnels IP sous TCP :

http://sites.inka.de/sites/bigred/devel/tcp-tcp.html

Dans certaines conditions toutefois, TCP peut présenter des avantages du point de vue de la sécurité et de la robustesse : tunnel de protocoles non-IP, de communications inter-applications en UDP, ou encore tunnel de protocoles qui ne comportent pas leur propre fonctionnalité de correction d'erreurs.

--http-proxy serveur port [authfichier]
Connexion à l'hôte distant serveur par un proxy HTTP à l'écoute sur le port port. Si HTTP Proxy-Authenticate est défini, authfichier est un fichier contenant un identifiant et un mot de passe, sur 2 lignes.
--http-proxy-retry
Recommencer indéfiniment en cas d'erreur provenant du proxy HTTP. Si une erreur survient, OpenVPN émule un redémarrage SIGUSR1.
--resolv-retry n
Si l'hôte ne parvient pas à résoudre le nom pour --remote, essayer de nouveau la résolution durant n secondes avant de finir en échec (désactivé par défaut).
--float
Autorise l'hôte distant à changer d'adresse IP et/ou de numéro de port, comme sous DHCP (par défaut si --remote n'est pas défini). Lorsque spécifié avec --remote, --float autorise la connexion initiale d'un hôte dont l'adresse IP est connue. Si des paquets proviennent par la suite d'une autre adresse et passent les tests d'authentification, la session courante sera transférée vers cette adresse. Cette option est utile lorsque vous vous connectez à un hôte qui utilise une adresse dynamique obtenue par modem ou DHCP.

En essence, --float commande à OpenVPN d'accepter des paquets authentifiés provenant de n'importe quelle adresse, et pas uniquement de celle définie par l'option --remote.

--ipchange cmd
Exécuter la commande shell cmd lorsque l'IP de l'hôte distant est initialement authentifiée ou change.

Cette option est interprétée ainsi :

cmd addresse_ip numero_port

Reportez-vous à la section "Variables d'Environnement" ci-dessous pour connaître les paramètres supplémentaires qui sont passés aux scripts.

Notez que cmd peut être une ligne de commande comportant de multiples arguments. Dans ce cas, tous les arguments générés par OpenVPN sont ajoutés à cmd pour construire une ligne de commande complète qui est passée au script.

Si vous fonctionnez dans un environnement d'adresses IP dynamiques et que l'un ou l'autre des hôtes est susceptible de changer d'IP hors de votre contrôle, vous pouvez utiliser un tel script pour, par exemple, mettre à jour le fichier /etc/hosts. Ce script est exécuté à chaque fois que l'hôte distant change d'adresse IP.

En miroir, si notre adresse IP change via DHCP, il convient de configurer un script de changement d'IP (voir la page de man de dhcpcd(8) ) afin d'envoyer à OpenVPN un signal SIGHUP ou SIGUSR1. OpenVPN rétablira alors la connexion entre sa nouvelle adresse et la dernière adresse authentifiée pour l'hôte distant.

--port port
Numéro du port TCP/UDP pour les deux hôtes (distant et local).
--lport port
Numéro du port TCP/UDP pour l'hôte local (défaut=5000).
--rport port
Numéro du port TCP/UDP pour l'hôte distant (défaut=5000).
--nobind
Ne pas se connecter à l'adresse et au port locaux. La pile IP attribuera un port dynamique pour renvoyer les paquets. Sachant qu'un port dynamique n'est pas connu à l'avance, cette option n'est disponible que pour les hôtes qui initient la connexion avec l'option --remote.
--dev tunX | tapX | null
Périphérique réseau virtuel TUN/TAP ( X n'est pas requis pour les périphériques dynamiques.)

Reportez-vous aux sections suivantes pour un exemple de configuration d'un périphérique TUN.

Il faut utiliser le même type de périphérique sur les deux hôtes qui participent au tunnel. Il n'est pas possible de d'utiliser un périphérique tun d'un côté et un périphérique tap de l'autre, car ils utilisent des protocoles différents : les interfaces tun encapsulent IPv4 tandis que les interfaces tap encapsulent ethernet 802.3.

--dev-type type-périph
Quel est notre type de périphérique ? type-périph doit valoir tun ou tap. Cette option n'est nécessaire que si le nom d'un périphérique TUN/TAP défini par --dev ne commence pas par tun ou par tap.
--tun-ipv6
Construire un lien capable de supporter le trafic IPv6. S'utilise avec --dev tun ou --dev tunX. Une alerte s'affichera si OpenVPN n'a pas été compilé avec le support des périphériques TUN IPv6 pour votre Système d'Exploitation.
--dev-node noeud
Définir explicitement le périphérique noeud en remplacement de /dev/net/tun, /dev/tun, /dev/tap, etc. Si OpenVPN ne parvient pas à deviner si noeud est un périphérique TUN ou TAP par son nom, vous devriez aussi définir --dev-type tun ou --dev-type tap.

Sous Windows, sélectionner le périphérique TAP-Win32 nommée noeud dans le Panneau de Contrôle Réseau. L'option --show-adapters disponible sous Windows permet de lister le nom des périphériques TAP-Win32 disponibles.

--ifconfig l rn
Définir les paramètres du périphérique TUN/TAP. l est l'adresse IP de l'extrémité locale du VPN. Pour les périphériques TUN, rn est l'adresse IP de l'extrémité distante du VPN. Pour les périphériques TAP, rn est le masque de sous-réseau du segment ethernet virtuel auquel le périphérique se connecte (ou qu'il créée).

Pour les périphériques TUN qui permettent de réaliser des connexions virtuelles de type point à point, --ifconfig s'utilise en définissant deux adresses IP privées qui n'appartiennent à aucun sous-réseau en cours d'utilisation. Les adresses IP peuvent être consécutives, et doivent être spécifiées dans l'ordre inverse dans la configuration de l'hôte en vis-à-vis. Lorsque le tunnel VPN est établi, un ping de rn traverse le tunnel jusqu'à l'autre hôte.

Pour les périphériques TAP qui permettent de créer des segments ethernet virtuels, --ifconfig est utilisé pour définir une adresse IP et un masque de sous réseau, exactement comme une interface ethernet classique. Si vous voulez vous connecter à un pont ethernet distant, l'adresse IP et le masque doivent avoir des valeurs valides pour ce pont ethernet (notez que vous pourriez utiliser DHCP pour définir automatiquement les bonnes valeurs sans recourir à cette option).

Cette option est un proxy pour la commande ifconfig(8) , et permet de simplifier la configuration de tunnels TUN/TAP en fournissant une interface standard, indépendante des variations d'implémentation d'ifconfig sur les différentes plates-formes.

Les paramètres de --ifconfig qui correspondent à des adresses IP peuvent également être spécifiés par des noms de domaines qui seront résolus par DNS ou dans /etc/hosts.

--ifconfig-noexec
Ne pas exécuter les commandes ifconfig/netsh, mais simplement passer les paramètres de --ifconfig à des scripts qui utiliseront les variables d'environnement.
--ifconfig-nowarn
Ne pas afficher sur cet hôte les alertes de vérification de la validité des paramètres de --ifconfig, lorsque les paramètres de l'hôte en vis-à-vis ne correspondent pas. Cette option est utile si vous souhaitez conserver la fonction globale de vérification de la conformité des paramètres (voir également l'option --disable-occ), mais que vous voulez supprimer la vérification pour l'option ifconfig seulement.

Si par exemple vous avez une configuration telle que l'hôte local utilise --ifconfig tandis que l'hôte distant ne l'utilise pas, vous pouvez spécifier --ifconfig-nowarn sur l'hôte local.

--route réseau [masque réseau] [passerelle] [metrique]
Ajouter une route à la table de routage après l'établissement de la connexion. De multiples routes peuvent être spécifiées. Les routes seront automatiquement supprimées, dans l'ordre inverse, lorsque le périphérique tun/tap sera désactivé.

Cette option est un proxy pour la commande route(8), qui fournit une interface standard sur les différentes plates-formes.

masque réseau défaut -- 255.255.255.255

passerelle défaut -- défini par --route-gateway ou par le second paramètre de --ifconfig lorsque --dev tun est utilisé.

La valeur par défaut peut être spécifiée en ne précisant pas de paramètre pour une option ou en utilisant la valeur "default".

Les paramètres réseau et passerelle peuvent être aussi spécifiés comme des noms résolus par DNS ou /etc/hosts, ou en utilisant l'un des 3 mots-clés spéciaux suivants :

vpn_gateway -- L'adresse de l'extrémité distante du VPN (dérivant soit de --route-gateway, soit du second paramètre de --ifconfig lorsque --dev tun est utilisé).

net_gateway -- La passerelle IP par défaut préexistante, obtenue dans la table de routage (Linux et Windows seulement).

remote_host -- L'adresse définie par --remote, ou bien l'adresse d'un client se connectant si OpenVPN est exécuté en mode serveur.

--route-gateway gw
Spécifie la passerelle par défaut gw à utiliser avec --route.
--route-delay [n]
Attendre n secondes (défaut=0) après la connexion initiale avant d'ajouter les routes. Si n vaut 0, les routes sont ajoutées immédiatement après la connexion. Si --route-delay n'est pas défini, les routes sont ajoutées immédiatement après la création de l'interface tun/tap et l'exécution du script --up, et avant la prise en compte des options --user ou --group qui réduisent les privilèges d'exécution (ou avant l'exécution de --chroot.)

Cette option est utile dans le cas où l'adresse du périphérique TAP est fournie par DHCP. Le délai spécifié permettra au dialogue DHCP d'avoir lieu avant que les routes soient ajoutées.

La solution optimale dans ce scénario consisterait à scruter l'adresse IP de l'interface virtuelle, et d'attendre qu'elle soit définie. Malheureusement il n'y a pas de moyen portable sur toutes plates-formes de réaliser cela.

--route-up cmd
Exécuter la commande cmd une fois les routes ajoutées (passé --route-delay.)

Reportez-vous à la section "Variables d'Environnement" ci-dessous pour les paramètres additionnels passés en environnement.

Notez que cmd peut être une ligne de commande avec des arguments multiples.

--route-noexec
Ne pas ajouter ou supprimer les routes automatiquement, mais passer les routes en environnement du script --route-up.
--redirect-gateway
Exécuter automatiquement les commandes de routage en sorte que la totalité du trafic IP sortant soit redirigée vers le VPN. Actuellement disponible sur Linux et Windows uniquement.

Cette option s'exécute en trois étapes :

(1) Créer une route statique pour l'adresse --remote qui renvoie les paquets vers la passerelle par défaut préexistante. Ceci évite que l'étape (3) ne créée une boucle de routage.

(2) Effacer la route vers la passerelle par défaut.

(3) Définir comme nouvelle passerelle par défaut l'adresse de l'extrémité du VPN (dérivée de --route-gateway ou du second paramètre de --ifconfig lorsque --dev tun est défini).

Lorsque le tunnel est supprimé, les étapes ci-dessus sont réalisées à l'inverse de manière à restaurer la route par défaut initiale.

--link-mtu n
Définir le MTU du lien réseau à la valeur n et en dériver la valeur TUN MTU (défaut=1300 pour les interfaces TUN). Cette valeur par défaut est prudente, elle a été choisie car elle maximise les chances de bon fonctionnement de la liaison. Dans la majorité des cas toutefois, la valeur de 1472 maximisera la performance des interfaces TUN sous IPv4.

Fondamentalement, --link-mtu définit la borne haute de la taille des paquets UDP envoyés entre les hôtes OpenVPN.

Pour les versions antérieures à OpenVPN 1.5, cette option se nomme --udp-mtu. L'usage de ce nom est désormais découragé, mais reste supporté pour assurer la compatibilité entre versions.

Le MTU (Maximum Transmission Units) représente la taille maximale en octets du datagramme qui peut être envoyé sans fragmentation sur le lien réseau. Les paquets envoyés par OpenVPN sur les canaux de contrôle ou de données ne doivent pas être fragmentés.

Classiquement, la valeur du MTU devrait être définie entre 1300 et 1500. La taille optimale pour le MTU est le plus petit dénominateur commun à l'ensemble des routeurs présents sur le chemin réseau. La valeur de MTU doit être la même pour les deux hôtes en vis-à-vis.

Un problème de MTU se concrétise fréquemment par une connexion qui se bloque lorsque le trafic est intense. Les options --fragment et --mssfix permettent de régler ce type de problème. Lorsque vous utilisez l'une ou l'autre de ces options, il est préférable de définir --tun-mtu à 1500.

OpenVPN surcharge légèrement chaque paquet destiné au tunnel sécurisé avant de l'envoyer via l'interface TUN. Cette surcharge est constituée de champs de données comme la signature HMAC, l'ID du paquet, le remplissage des blocs de chiffrement, etc. En raison de cette surcharge, le MTU de l'interface TUN devrait être légèrement inférieur au MTU du lien réseau pour qu'OpenVPN puisse rajouter ces octets supplémentaires aux paquets du canal de données. OpenVPN vous permet de spécifier soit le TUN MTU soit le MTU du lien, mais pas les deux. OpenVPN détermine à partir de la valeur spécifiée celle qui n'a pas été définie, en calculant le montant exact de la surcharge qui est nécessaire. Si vous utilisez un script --up , OpenVPN passera les valeurs de TUN MTU et MTU du lien en paramètres de la ligne de commande.

--tun-mtu n
Définir le MTU de l'interface TUN à la valeur n et en dériver la valeur MTU du lien réseau (défaut= 1500 pour les interfaces TAP).

Reportez-vous à l'option --link-mtu ci-dessus pour plus d'information concernant le MTU.

--tun-mtu-extra n
Prévoir que l'interface TUN/TAP sera susceptible de récupérer jusqu'à n octets de plus que le --tun-mtu lors de la lecture. La valeur par défaut de ce paramètre est de 0, elle convient à la majorité des interfaces TUN. Les interfaces TAP peuvent surcharger les paquets au-delà du MTU, aussi la valeur par défaut est de 32 si vous utilisez un périphérique TAP. Ce paramètre ne contrôle que le dimensionnement du tampon interne d'OpenVPN, augmenter sa valeur ne crée pas de surcharge aux données transmises.
--mtu-disc type
Essayer de découvrir le MTU du chemin réseau sur le canal UDP/TCP. Cette option n'est supportée que sous Linux et les systèmes d'exploitation qui fournissent les interfaces nécessaires.

'no' -- Ne jamais envoyer de trames DF (Don't Fragment)
'maybe' -- Deviner pour chaque route
'yes' -- Toujours envoyer en DF (Don't Fragment)

--mtu-test
Pour tester empiriquement le MTU au démarrage de la connexion, ajoutez l'option --mtu-test à votre configuration. OpenVPN enverra des paquets ping de différentes tailles en direction du vis-à-vis et définira la taille maximale d'un paquet pour qu'il soit reçu avec succès. L'exécution du test --mtu-test prend normalement 3 minutes.
--fragment max
Autorise la fragmentation interne des datagrammes en sorte qu'aucun datagramme UDP n'excède la taille de max octets.

Le paramètre max est interprété de la même façon que le paramètre --link-mtu : il définit la taille du paquet UDP mesurée après la surcharge liée à son encapsulation, mais avant l'ajout de l'en-tête UDP lui-même.

L'option --fragment n'a de sens que si vous utilisez le protocole UDP pour la communication entre les hôtes OpenVPN, c'est-à-dire si l'option --proto udp est utilisée.

--fragment rajoute 4 octets de surcharge par datagramme.

Voyez l'option --mssfix ci-dessous en complément de l'option --fragment.

Notez aussi que cette option n'est pas destinée à remplacer la fragmentation qui intervient au niveau de la pile IP. Elle ne constitue qu'un dernier recours lorsque la recherche du MTU du chemin réseau ne fonctionne pas. Utiliser cette option est moins efficace que de découvrir correctement le MTU du chemin réseau et d'utiliser la fragmentation IP native.

Cela dit, il y a aussi des circonstances dans lesquelles utiliser la fragmentation interne d'OpenVPN est la seule solution, comme dans le cas d'un flux de multidiffusion UDP qui requiert de la fragmentation.

--mssfix max
Prévenir les sessions TCP qui se créent dans le tunnel qu'elles doivent limiter la taille de leurs paquets de telle manière qu'une fois encapsulés par OpenVPN, la taille du paquet UDP résultant n'excède pas max octets.

Le paramètre max est interprété de la même façon que le paramètre --link-mtu : il définit la taille du paquet UDP mesurée après la surcharge liée à son encapsulation, mais avant l'ajout de l'en-tête UDP lui-même.

L'option --mssfix n'a de sens que si vous utilisez le protocole UDP pour la communication entre les hôtes OpenVPN, c'est-à-dire si l'option --proto udp est utilisée.

--mssfix et --fragment sont conçus pour s'utiliser conjointement : --mssfix va tenter d'éviter que TCP ne fragmente les paquets, et si de grands paquets sont transmis malgré tout (provenant de protocoles autres que TCP), --fragment procèdera à leur fragmentation en interne.

Les options --fragment et --mssfix sont un recours lorsque la découverte du MTU du chemin réseau entre deux hôtes OpenVPN en vis-à-vis ne fonctionne pas.

Un problème de MTU se concrétise fréquemment par une connexion qui se bloque lorsque le trafic est intense.

Si --fragment et --mssfix sont utilisés ensemble, --mssfix prendra par défaut la valeur max provenant de l'option --fragment max.

Par exemple, pour limiter la taille maximum des paquets UDP à 1300 (une bonne valeur de base pour régler les problèmes de connexion liés au MTU), on peut simplement définir :

--tun-mtu 1500 --fragment 1300 --mssfix

--shaper n
Limiter la bande passante dédiée aux données partant vers le tunnel à n octets par seconde sur le port TCP/UDP. Si vous souhaitez limiter la bande passante dans les deux directions, vous devez utiliser cette option sur les deux hôtes en vis-à-vis.

OpenVPN implémente le bridage du trafic par l'algorithme suivant : étant donné un seuil de n octets par seconde, attendre un minimum de (b / n) secondes entre deux opérations d'écriture de datagrammes de b octets sur le port TCP/UDP.

Il convient de noter qu'OpenVPN accepte des tunnels multiples entre deux hôtes, ce qui vous permet de créer deux tunnels, l'un dont la bande passante est bridée, et l'autre non, de manière à transmettre les données de basse priorité comme une sauvegarde distante par le tunnel bridé, tandis que les autres données passeront par le tunnel normal.

Notez aussi que pour les tunnels à faible bande passante (moins de 1000 octets par seconde), vous devriez probablement abaisser aussi les valeurs de MTU (voir ci-dessus), sans quoi le temps de latence entre deux paquets deviendrait si grand que vous attendriez les délais d'expiration au niveau de la couche TLS et des connexions TCP du tunnel.

OpenVPN accepte n entre 100 octets/seconde et 100 Mo/seconde.

--inactive n
Oblige OpenVPN à quitter après n secondes d'inactivté de l'interface TUN/TAP. La durée d'inactivité est mesurée à partir du moment où l'on a reçu le dernier paquet par le tunnel.
--ping n
Ping l'hôte distant sur le canal de contrôle TCP/UDP si aucun paquet n'a été envoyé depuis au moins n secondes (spécifiez --ping dans la configuration des deux hôtes en vis-à-vis pour que les pings soient envoyés dans les deux directions, car à l'inverse du ping IP classique, OpenVPN ne fait pas écho à son ping). Lorsque utilisé dans l'un des modes sécurisés d'OpenVPN (quand soit --secret, --tls-server, ou --tls-client sont définis), le paquet du ping sera chiffré.

Cette option est conçue pour répondre à deux besoins :

(1) Compatibilité avec les pare-feux dynamiques. Le ping périodique permet de s'assurer que la règle du pare-feu permettant aux paquets UDP d'OpenVPN de passer ne va pas expirer.

(2) Pour fournir un moyen à l'hôte distant de vérifier la présence de son vis-à-vis, en utilisant l'option --ping-exit .

--ping-exit n
Oblige OpenVPN à quitter après n secondes passées sans avoir reçu de ping ni d'autre paquet provenant de l'hôte distant. Cette option peut se combiner avec --inactive, --ping, et --ping-exit pour créer une règle de déconnexion sur inactivité à deux niveaux.

Par exemple, en utilisant

openvpn [options...] --inactive 3600 --ping 10 --ping-exit 60

sur les deux hôtes en vis-à-vis, OpenVPN quittera dans les 60 secondes suivant la déconnexion de l'un des hôtes, mais attendra une heure avant de quitter dans le cas où aucune donnée n'est échangée entre les deux.

--ping-restart n
Similaire à --ping-exit, mais déclanche un signal de redémarrage SIGUSR1 après n secondes passées sans avoir reçu de ping ni d'autre paquet provenant de l'hôte distant.

Cette option est utile dans les configurations où l'hôte distant possède une adresse IP dynamique et où un nom DNS volatile est utilisé pour pointer vers cette adresse, comme avec un service tel que http://dyndns.org/ et un client DNS dynamique comme ddclient.

L'impossibilité de joindre l'hôte déclanchera un redémarrage, ce qui a pour conséquence de résoudre à nouveau le nom d'hôte défini par --remote (à condition que --resolv-retry soit également spécifié).

Reportez-vous à la section sur les signaux ci-dessous pour plus d'information sur SIGUSR1.

Notez que le comportement de SIGUSR1 peut être modifié grâce aux options --persist-tun, --persist-key, --persist-local-ip, et --persist-remote-ip.

Notez aussi que les options --ping-exit et --ping-restart sont exclusives l'une de l'autre. Vous ne devez pas les utiliser en même temps.

--ping-timer-rem
N'exécuter le compteur --ping-exit / --ping-restart que si nous avons acquis une adresse pour l'hôte distant. Utilisez cette option si vous démarrez le démon en mode "écoute" (c'est-à-dire sans un hôte --remote explicite), et que vous ne voulez pas prendre en compte le délai d'expiration tant qu'un hôte ne s'est pas connecté.
--persist-tun
Ne pas fermer et rouvrir le périphérique TUN/TAP ou exécuter les scripts up/down suite au redémarrage sur signal SIGUSR1 ou sur --ping-restart.

SIGUSR1 est un signal de redémarrage similaire à SIGHUP, mais il offre un contrôle plus fin sur la remise à zéro des options.

--persist-key
Ne pas relire les fichiers de clés cryptographiques suite au redémarrage sur signal SIGUSR1 ou sur --ping-restart.

Cette option peut se combiner avec --user nobody pour autoriser le redémarrage sur signal SIGUSR1. Normalement, si vous réduisez les privilèges d'exécution d'OpenVPN, le démon ne peut pas redémarrer car il n'a pas le droit de relire les fichiers de clés qui sont protégés.

Cette option résout ce problème en rendant les clés persistantes au redémarrage sur signal SIGUSR1, ce qui fait qu'il n'y a plus besoin d'accéder de nouveau aux fichiers.

--persist-local-ip
Préserver l'adresse IP locale résolue initialement ainsi que le numéro de port suite au redémarrage sur signal SIGUSR1 ou sur --ping-restart.
--persist-remote-ip
Preserver la dernière adresse IP distante résolue ainsi que le numéro de port suite au redémarrage sur signal SIGUSR1 ou sur --ping-restart.
--mlock
Désactiver la pagination de la mémoire par appel à la fonction POSIX mlockall. Cette option nécessite le lancement initial d'OpenVPN en tant que root (mais il est possible de réduire ensuite ses privilèges par l'option --user).

L'utilisation de cette option vous permet d'être sûr que des données comme les clés ou celles qui transitent par le tunnel ne seront jamais écrites sur le disque dur de l'hôte à la suite d'une opération de gestion de la mémoire comme en font la plupart des systèmes d'exploitation récents. Elle vous garantit que dans le cas où un attaquant serait capable d'accéder à la machine qui fait tourner OpenVPN, il ne pourrait pas retrouver des clés en scrutant le fichier d'échange. La durée de validité des clés est contrôlée par les options --reneg (voir ci-dessous).

Le défaut de l'option --mlock est de réduire le montant de mémoire physique disponible pour les autres applications.

--up cmd
Ligne de commande à exécuter après la création (réussie) de l'interface TUN/TAP (préalablement au changement d'UID --user ). Le script up est pratique pour spécifier les commandes de route qui permettent de router via le tunnel le trafic IP destiné aux sous-réseaux privés présents à l'autre extrémité du tunnel VPN.

Pour --dev tun, s'exécute ainsi :

cmd tun_dev tun_mtu link_mtu ifconfig_ip_locale ifconfig_ip_distante [ init | restart ]

Pour --dev tap, s'exécute ainsi :

cmd tap_dev tap_mtu link_mtu ifconfig_ip_locale ifconfig_masque_réseau [ init | restart ]

Reportez-vous à la section "Variables d'Environnement" ci-dessous pour d'autres paramètres qui sont passés sous forme de variable d'environnement.

Notez que cmd peut être une commande avec plusieurs arguments, auquel cas les arguments générés par OpenVPN seront ajoutés à la fin de cmd pour former une ligne de commande complète.

Traditionnellement, cmd lancera un script qui ajoute des routes vers le tunnel.

Normalement, le script up est appelé après que l'interface TUN/TAP soit ouverte. Dans ce contexte, le dernier paramètre de la ligne de commande passée au script sera init. Si l'option --up-restart est également présente, le script up sera aussi appelé lors des redémarrages. Un redémarrage est une réinitialisation partielle d'OpenVPN lors de laquelle l'interface TUN/TAP existante est conservée (via l'option --persist-tun option). Un redémarrage peut être déclanché par un signal SIGUSR1, l'expiration du délai --ping-restart, ou une réinitialisation de la connexion lorsque le protocole TCP est utilisé (via l'option --proto ). Si un redémarrage intervient et que --up-restart est défini, le script up sera appelé avec restart en dernier paramètre.

L'exemple suivant vous montre comment utiliser le script --up dans les contextes d'initialisation et de redémarrage. (NOTES : Pour des raisons de sécurité, n'exécutez cet exemple que si votre pare-feu bloque le port UDP 9999. Cet exemple doit être interrompu par contrôle-c sinon il tournera indéfiniment).

openvpn --dev tun --port 9999 --verb 4 --ping-restart 10 --up 'echo up' --down 'echo down' --persist-tun --up-restart

Notez qu'OpenVPN dispose de l'option --ifconfig pour configurer automatiquement les périphériques TUN. Vous n'avez donc pas besoin de script --up , sauf si vous voulez également configurer des routes dans un tel script.

Si --ifconfig est également défini, OpenVPN passera les extrémités locales et distantes de ifconfig au script --up de manière à ce qu'on puisse configurer une route ainsi :

route add -net 10.0.0.0 netmask 255.255.255.0 gw $5

--up-delay
Attendre pour crééer l'interface TUN/TAP (et éventuellement exécuter le script --up) que la connexion TCP/UDP soit établie avec l'hôte en vis-à-vis.

En mode --proto udp , cette option demande à utiliser --ping pour que la connexion soit reconnue malgré l'absence de trafic de données, puisque UDP est un protocole "non connecté".

Sous Windows, cette option temporise le changement d'état du media à "connecté" jusqu'à ce que la connexion soit établie, c'est-à-dire jusqu'à la réception du premier paquet authentifié provenant de l'hôte distant.

--down cmd
Ligne de commande à exécuter après la suppression de l'interface TUN/TAP (postérieurement au changement d'UID --user et/ou au --chroot ). Cette option s'utilise avec les mêmes paramètres et variables d'environnement que l'option --up ci-dessus.
--up-restart
Autoriser les scripts --up et --down à être exécutés lors des redémarrages, en plus de l'exécution initiale. Reportez-vous à l'option --up pour plus de détail.
--setenv nom valeur
Définir une variable d'environnement nom=valeur spécifique à passer aux scripts.
--disable-occ
Ne pas afficher de message d'alerte en cas d'incohérence entre les options utilisées par les hôtes. Un exemple d'incohérence serait d'utiliser --dev tun pour un hôte, tandis que l'autre spécifierait --dev tap.

Cette option ne devrait pas être utilisée normalement. Elle constitue une solution temporaire aux situations où une version récente d'OpenVPN doit se connecter à une version plus ancienne.

--user utilisateur
Changer pour user l'ID du processus OpenVPN après l'initialisation afin de réduire ses privilèges d'exécution. Cette option permet de protéger le système dans le cas où un tiers serait capable de prendre le contrôle d'une session OpenVPN. Bien que cette éventualité soit très faible en raison de la sécurisation d'OpenVPN, cette option fournit une ultime ligne de défense contre les attaquants.

En spécifiant user à la valeur nobody (ou un autre utilisateur sans privilèges), l'attaquant ne pourrait provoquer que des dommages limités au système. Bien entendu, lorsque OpenVPN a perdu ses privilèges, il ne peut pas les retrouver au cours de la même session. Ceci signifie par exemple que si vous voulez redémarrer un démon OpenVPN avec un signal SIGUSR1 (par exemple suite à un rafraîchissement DHCP), vous devriez utiliser une ou plusieurs options --persist pour que le redémarrage ne demande pas à exécuter des opérations privilégiées, comme par exemple relire les fichiers de clés ou exécuter ifconfig sur l'interface TUN.

--group groupe
A l'instar de l'option --user, cette option change vers groupe l'ID du groupe du processus OpenVPN après l'initialisation.
--cd répertoire
Se localiser dans le répertoire répertoire avant de lire les fichiers de configuration, de clés, etc. répertoire doit être un chemin absolu (commençant par "/") et ne doit pas contenir de référence au répertoire courant comme "." ou "..".

Cette option est utile lorsque vous exécutez OpenVPN en mode --daemon et que vous voulez disposer tous les fichiers qui contrôlent l'exécution d'OpenVPN dans un unique répertoire.

--chroot répertoire
Exécuter un chroot sous répertoire après l'initialisation. --chroot redéfinit répertoire comme étant la racine (/) du système. Ainsi, OpenVPN ne pourra en aucun cas accéder à des fichiers présents en dehors de cette arborescence. Du point de vue de la sécurisation, cette option est utile.

Etant donné que le chroot a lieu postérieurement à l'initialisation, la plupart des options d'OpenVPN qui font référence à des fichiers seront exécutées dans le contexte normal.

Dans la plupart des cas, le paramètre répertoire peut pointer vers un répertoire vide. Des difficultés peuvent cependant survenir lorsque des scripts sont exécutés postérieurement au chroot, ou lors du redémarrage.

--daemon [prognom]
Convertir en démon après la fin de l'initialisation. Cette option a pour effet de router vers syslog (ex. : /var/log/messages) tous les messages et traces d'erreurs, à l'exception des traces des fichiers de script et de la commande ifconfig qui vont vers /dev/null par défaut. La redirection vers syslog intervient dès que l'option --daemon est rencontrée sur la ligne de commande, même si le passage en mode démon se fait en réalité plus tard. Si l'une des options --log est présente, elle prend la main sur la redirection vers syslog.

Le paramètre optionnel prognom fait apparaître OpenVPN sous le nom prognom dans les traces. Ceci peut être utile pour identifier les messages spécifiques à un tunnel particulier. Lorsqu'il n'est pas spécifié, l'argument prognom vaut par défaut "openvpn".

Lorsque OpenVPN est lancé avec l'option --daemon, le passage en mode démon n'interviendra pas avant que la plupart des fonctions d'initialisation qui sont susceptibles de déclancher des erreurs fatales ne soient exécutées. Ceci veut dire que des scripts d'initialisation peuvent obtenir une information relativement fiable concernant le démarrage effectif d'OpenVPN en testant la valeur de retour de la commande openvpn.

Dans OpenVPN, la grande majorité des erreurs pouvant intervenir postérieurement à l'initialisation n'est pas fatale.

--passtos
Définir le champ TOS du paquet entrant dans le tunnel selon le TOS du paquet encapsulé.
--inetd [prognom]
Utilisez cette option lorsque OpenVPN est exécuté depuis inetd ou xinetd(8). Cette option interdit l'utilisation des options --daemon, --local, ou --remote. Notez que cette option a pour effet de rediriger les messages et traces d'erreur de la même manière que l'option --daemon. Le paramètre optionnel prognom est également traité comme pour --daemon.

Notez également que chaque tunnel OpenVPN requiert sa propre entrée dans inetd ou xinetd, ainsi que son propre port UDP/TCP. Reportez-vous au HOWTO OpenVPN pour un exemple d'utilisation d'OpenVPN sous xinetd : http://openvpn.sourceforge.net/howto.html

Lorsque vous démarrez OpenVPN via inetd ou xinetd, vous devez utiliser "wait" ou "wait = yes" dans l'entrée correspondante.

--log fichier
Diriger les traces vers fichier, y compris ce que les scripts appelés impriment normalement vers stdout/stderr. Si fichier existe déjà, il est tronqué. Cette option prend effet dès que l'option est lue sur la ligne de commande, et remplace la sortie vers syslog qui est prévue par défaut pour les options --daemon ou --inetd. Cette option est valable pour la durée de vie du processus OpenVPN, et ne sera pas relue après un redémarrage sur SIGHUP, SIGUSR1, ou --ping-restart.
--log-append fichier
Rajouter les traces à fichier. Si fichier n'existe pas, il sera créé. Cette option fonctionne exactement comme --log, sauf que le fichier de traces n'est pas tronqué.
--writepid fichier
Ecrire l'ID du processus principal d'OpenVPN dans le fichier fichier.
--nice n
Changer la priorité du processus après l'initialisation ( n plus grand que 0 pour réduire la priorité, n moins grand que 0 pour augmenter la priorité).
--nice-work n
Change la priorité de la tâche de fond ("background thread") TLS. La tâche de fond TLS est disponible si OpenVPN est compilé avec le support pour pthread, et que vous exécutez OpenVPN en mode TLS (c'est-à-dire en ayant spécifié --tls-client ou --tls-server ).

L'utilisation d'une tâche séparée pour TLS permet d'exécuter en tâche de fond le processus d'échange de clés basé sur SSL/TLS qui demande beaucoup de ressources de calcul, en sorte qu'il ne devienne jamais une cause de latence dans l'envoi des données vers le tunnel.

Le paramètre n est interprété de la même manière que pour l'option --nice ci-dessus, mais concerne seulement la tâche TLS et non la tâche principale.

--verb n
Régler le niveau de traces à n (par défaut=1). Chaque niveau rajoute de l'information au niveau précédent. Le niveau 3 est recommandé si vous souhaitez un bon résumé de ce qu'il se passe, sans être inondé de traces.

0 -- Pas de trace, sauf erreur fatale.
1 -- Informations de démarrage + d'initialisation de la connexion + erreurs non-fatales de chiffrement et de réseau.
2 -- Affiche les dialogues SSL/TLS
3 -- Eléments SSL/TLS complémentaires + alertes réseau --gremlin + changement d'état de la compression dynamique (arrêtée/démarrée).
4 -- Affiche la valeur de tous les paramètres de réglage.
5 -- Imprime les lettres R et W sur la console pour chaque paquet lu (R) ou écrit (W). Les majuscules sont utilisées pour les paquets TCP/UPD, les minuscules pour les paquets TUN/TAP.
6 à 11 -- Affiche des traces de déboguage de plus en plus nombreuses (voyez errlevel.h pour plus d'information sur les niveaux de trace de déboguage).

--mute n
Imprime au plus n messages consécutifs de la même catégorie. Cette option permet de limiter la répétition de traces similaires.
--gremlin
Simuler la perte et la corruption de paquets + des interruptions réseau (pour le test et le déboguage). Cette option est un outil puissant pour valider la robustesse du protocole OpenVPN, particulièrement en mode TLS. Lorsque cette option est utilisée avec les paramètres TLS qui forcent la re-négociation fréquente des clés comme --reneg-sec 10, elle permet de tester la capacité d'OpenVPN à conserver un tunnel actif malgré les défaillances réseau. Actuellement, --gremlin provoque la perte de 2% des paquets et la corruption de 2% des paquets transmis. La corruption consiste à donner une valeur au hasard à un octet choisi au hasard dans un paquet; il est aussi possible que le paquet voit sa taille augmentée ou réduite d'un octet. --gremlin simule également des interruptions du service réseau sur des périodes de 10 à 60 secondes. Entre les pertes réseau simulées, le réseau reste actif pour des périodes de 10 à 300 secondes. Pour obtenir l'affichage des messages gremlin, il faut régler --verb à 3 ou plus. Pour changer le comportement de gremlin, reportez-vous au fichier gremlin.c inclus dans le code source d'OpenVPN.
--comp-lzo
Utiliser la compression dynamique LZO. Cette option peut rajouter aux données incompressibles jusqu'à un octet par paquet.
--comp-noadapt
Utilisée conjointement avec --comp-lzo, cette option interdit l'adaptation dynamique de la compression. La compression dynamique est normalement activée par --comp-lzo.

La compression dynamique permet d'optimiser la communication dans le cas où vous utilisez la compression, mais que vous transmettez par le tunnel des paquets incompressibles ou déjà compressés, comme par exemple lors du transfert d'un gros fichier compressé par FTP ou rsync. Avec la compression dynamique, OpenVPN va régulièrement faire un test de compression pour mesurer son efficacité. Pour les données déjà compressées, l'efficacité sera très basse, et OpenVPN suspendra la compression jusqu'à la prochaine mesure d'efficacité.

 

Options de Chiffrement du Canal de Données

Ces options sont utiles en mode Statique comme en mode TLS (des options compatibles doivent être utilisées sur les 2 hôtes en vis-à-vis).
--secret fichier [direction]
Active le mode de chiffrement statique (sans TLS) par secret partagé. Le secret partagé fichier doit avoir été généré par l'option --genkey.

Le paramètre optionnel direction permet d'utiliser 4 clés distinctes (envoi-HMAC, chiffrement-données, réception-HMAC, déchiffrement-données) en sorte que chaque direction du flux de communication possède son propre ensemble de clés d'authentification HMAC et de chiffrement. Cette fonction présente de nombreuses qualités du point de vue de la sécurité, notamment elle élimine le risque de certains types d'attaques par déni de service ("Denial of Service" - DoS) et par rejeu ("replay attack").

Lorsque le paramètre direction n'est pas défini, 2 clés sont utilisées de manière bidirectionnelle, l'une pour le HMAC et l'autre pour le chiffrement/déchiffrement des données.

Le paramètre direction doit toujours être utilisé de manière cohérente entre les 2 extrémités du tunnel. Ainsi, soit le premier hôte spécifie "0" et l'autre spécifie obligatoirement "1", soit le paramètre ne doit pas être défini sur aucun des deux.

Le paramètre direction requiert que le fichier fichier contienne une clé à 2048 octets. Les versions antérieures à OpenVPN 1.5 ne génèrent que des clés à 1024 octets, tandis que toutes les versions d'OpenVPN qui supportent le paramètre direction sont capables de générer une clé à 2048 octets par l'option --genkey .

Le mode de chiffrement statique présente certains avantages, le premier étant probablement sa facilité de mise en oeuvre.

Il ne nécessite ni certificats ni autorité de certification, ni protocole élaboré de négociation de la connexion. L'unique contrainte qu'il suppose est de disposer au préalable d'un moyen sécurisé pour copier la clé vers l'hôte en vis-à-vis, par exemple ssh. Cette contrainte, ajoutée au fait que les clés ne sont jamais remplacées sauf si vous en générez manuellement de nouvelles, rend ce mode probablement moins sécurisé que le mode TLS (voir ci-dessous). Si un attaquant parvient à voler la clé, la sécurité de toutes les données qui ont été ou qui seront échangées avec cette clé est compromise. En revanche, le mode TLS (avec échange de clés Diffie Hellman) offre la caractéristique de "Perfect Forward Secrecy" (PFS), puisque si l'attaquant vole votre clé privée, il sera incapable de déchiffrer des données échangées lors de sessions précédentes.

Un autre interêt du mode de chiffrement statique est que le protocole ne demande pas de négociation. Comme il ne porte aucune marque distinctive (comme un en-tête ou un dialogue d'initialisation), il est impossible de deviner la présence d'OpenVPN depuis l'extérieur. Quiconque espionnerait sur la ligne ne verrait passer qu'un flot de données indistinctes.

--auth algo
Authentifier les paquets grâce à leur empreinte HMAC en utilisant l'algorithme algo. (Par défaut : SHA1). HMAC est un algorithme de Code d'Authentification de Message (MAC) qui utilise un champ de données, un algorithme de hachage sécurisé et une clé pour créer une empreinte numérique.

OpenVPN chiffre les paquets puis leur applique le traitement HMAC.

En mode de chiffrement statique, la clé HMAC est inclue dans le fichier de clé généré par --genkey. En mode TLS, la clé HMAC est générée et échangée dynamiquement entre les hôtes à travers le canal de contrôle TLS. Si OpenVPN reçoit un paquet dont l'empreinte HMAC est incorrecte, il ignore le paquet. HMAC surcharge traditionnellement les paquets de 16 à 20 octets. Pour supprimer l'authentification, choisissez algo=none.

Pour plus de détails sur HMAC, reportez-vous à http://www.cs.ucsd.edu/users/mihir/papers/hmac.html

--cipher algo
Chiffrer les paquets avec l'algorithme algo. L'algorithme par défaut est BF-CBC, pour "Chiffrement avec Chaînage de Blocs par Blowfish". Blowfish a l'avantage d'être rapide et très sécurisé, et de permettre d'utiliser des clés allant jusqu'à 448 octets. Blowfish est conçu pour les situations ou les clés ne sont pas changées régulièrement.

Pour plus de détails sur Blowfish, reportez-vous à http://www.counterpane.com/blowfish.html

Pour la liste des autres algorithmes disponibles avec OpenVPN, utilisez l'option --show-ciphers.

OpenVPN supporte les modes de chiffrement CBC, CFB, et OFB.

Pour supprimer le chiffrement, choisissez algo=none.

--keysize n
Taille de la clé de chiffrement, en octets (optionnel). Si l'option n'est pas définie, la taille choisie est la taille par défaut pour l'algorithme de chiffrement choisi. L'option --show-ciphers (voir ci-dessus) liste les algorithmes disponibles via OpenSSL, la taille par défaut de leur clé, et la possibilité ou non de faire varier cette taille. Ne changez pas la taille par défaut sans précaution. De nombreux chiffres n'ont été analysés en profondeur qu'avec leur taille de clé par défaut. En fait, surdimensionner une clé ne garantit pas obligatoirement une sécurité améliorée, et peut même parfois la dégrader.
--no-replay
Désactive la protection d'OpenVPN contre les attaques par rejeu. En utilisant cette option, vous sacrifiez la sécurité au profit de la performance.

OpenVPN offre par défaut une protection contre la répétition de datagrammes.

Cette protection est obtenue en étiquetant chaque datagramme sortant avec un identifiant unique généré avec la clé courante. Le vis-à-vis qui reçoit le datagramme vérifie l'unicité de l'identifiant du paquet. Si un identifiant a marqué un datagramme déjà reçu, OpenVPN ignore le paquet. La protection contre le rejeu est efficace contre les attaques du type "SYN flood" où l'attaquant espionne sur la ligne, intercepte un paquet TCP SYN (identifiable par le contexte dans lequel il apparaît), et ensuite submerge l'hôte cible avec des copies de ce paquet.

La protection contre le rejeu est implémentée dans OpenVPN de manière un peu différente selon le mode de chiffrement que vous avez choisi.

En mode à clé statique ou lorsque vous utilisez les modes de chiffrement CFB ou OFB, OpenVPN utilise un identifiant unique a 64 bits composé d'un horodatage et d'un compteur qui s'incrémente.

En mode TLS et avec le chiffrement par CBC, OpenVPN utilise uniquement un numéro de séquence sur 32 bits sans horodatage, car OpenVPN peut garantir l'unicité de cette valeur pour chaque clé. Comme avec IPSec, OpenVPN procède au renouvellement des clés avant que le numéro de séquence n'atteigne le maximum et ne revienne à zéro.

Pour identifier les rejeux de messages, OpenVPN utilise l'algorithme à fenêtre glissante ("sliding window") utilisé par IPSec.

--replay-window n [t]
Utiliser une fenêtre glissante de taille n et une fenêtre temporelle de t secondes.

Par défaut, n vaut 64 (valeur par défaut d'IPSec) et t vaut 15 secondes.

Cette option n'a de sens qu'en mode UDP, c'est-à-dire lorsque --proto udp est défini, ou si l'option --proto n'est pas définie.

Quand OpenVPN envoie ses paquets IP sur UDP, il existe une possibilité que les paquets soient perdus en chemin ou qu'ils arrivent dans le désordre. Etant donné qu'OpenVPN émule la couche physique du réseau comme IPSec, il va accepter les paquets en désordre, et les transmettra tel quel à la pile TCP/IP, à condition que :

(a) Le paquet ne soit pas rejoué (sauf si --no-replay est défini, ce qui supprime la protection contre le rejeu de paquets).

(b) Si un paquet arrive dans le désordre, il ne sera accepté que si la différence entre son numéro de séquence et le plus haut numéro reçu jusqu'à cet instant est inférieure à n.

(c) Si un paquet arrive dans le désordre, il ne sera accepté que s'il arrive au maximum t secondes après un paquet qui contenait un numéro de séquence plus élevé.

Si vous utilisez un réseau qui a un grand pipeline (c'est-à-dire que le produit de la bande passante par le temps de latence est élevé), vous pourrez avoir intérêt à augmenter la valeur de n. Les liaisons par satellite, par exemple, requièrent souvent cela.

Si vous exécutez OpenVPN sous --verb 4, vous verrez le message "Replay-window backtrack occurred [x]" à chaque fois que le retard maximum rencontré dans la séquence de numéros s'accroît. Ce message permet donc de calibrer la valeur de n.

La méthode adéquate de gestion de l'ordonnancement des paquets au niveau de la couche de sécurité est sujette à débat : jusqu'à quel point la couche de sécurité qui encapsule le protocole doit-elle détecter des attaques dissimulées sous la forme de pertes et de réordonnancements de paquets, qui sont des phénomènes normaux sur les réseaux IP ?

L'approche proposée par IPSec et OpenVPN est d'autoriser le réordonnancement, dans la limite d'une certaine fenêtre.

OpenVPN rajoute au modèle IPSec la limite par fenêtre temporelle en plus de la limite liée au numéro de séquence.

OpenVPN offre aussi, à la différence d'IPSec, l'option d'utiliser TCP comme couche de transport. Dans ce cas, OpenVPN interdit tout réordonnancement. Puisque TCP garantit la fiabilité de la communication, tout paquet perdu ou arrivant dans le désordre est interprété comme une attaque.

On peut donc proposer que le tunnel TCP devrait être utilisé pour transporter les protocoles applicatifs non-IP ou UDP qui pourraient être sensibles à des pertes ou réordonnancements de messages tels que ceux rencontrés dans des conditions normales d'utilisation d'un réseau IP.

Je propose ainsi la règle suivante : ne jamais transporter par tunnel UDP un protocole non-IP ou un protocole applicatif UDP si ce protocole peut être vulnérable à des attaques par perte ou réordonnancement de messages qui resteraient dans la limite normale de ces phénomènes pour un réseau IP. En utilisant le transport par TCP pour le tunnel VPN, le dilemme disparaît et le problème est résolu.

--replay-persist fichier
Rendre persistante la protection contre le rejeu de messages d'une session sur l'autre en utilisant le fichier fichier pour enregistrer et recharger son état.

Cette option renforce la protection contre les attaques par rejeu, notamment lorsque vous utilisez OpenVPN de manière dynamique (comme avec --inetd), et que les sessions sont fréquemment démarrées et interrompues.

Cette option conserve une copie sur le disque dur de l'état de la protection contre le rejeu (le cachet horodateur et le numéro de séquence du dernier paquet reçu) en sorte qu'OpenVPN sera capable d'identifier un paquet rejoué, même s'il a été reçu lors de la session précédente.

Cette option n'a de sens que lorsque la protection contre les attaques par rejeu de messages est activée (par défaut) et que vous utilisez soit le chiffrement par secret partagé --secret , soit le mode TLS avec --tls-auth.

--no-iv
Désactiver l'utilisation du vecteur d'initialisation du chiffrement (IV). En utilisant cette option, vous sacrifiez la sécurité au profit de la performance.

OpenVPN utilise un IV par défaut. Son utilisation est requise pour les modes de chiffrement CFB et OFB (qui seraient totalement vulnérables sans). L'utilisation d'un IV est un facteur de sécurité important lorsque de nombreux messages sont chiffrés/déchiffrés en utilisant la même clé.

L'implémentation de l'IV varie en fonction du mode de chiffrement utilisé.

En mode CBC, OpenVPN utilise un IV pseudo-aléatoire pour chaque paquet.

En modes CFB ou OFB, OpenVPN utilise un numéro de séquence unique et un horodatage en tant qu'IV. En fait, en mode CFB/OFB, OpenVPN réalise une optimisation qui consiste à utiliser en guise d'IV l'identifiant unique de protection contre la rejeu de messages ajouté au datagramme.

--test-crypto
Lance l'auto-test des fonctions cryptographiques d'OpenVPN en chiffrant et déchiffrant des paquets de test selon les options choisies ci-dessus. Cette option fonctionne sans vis-à-vis, elle peut donc être spécifiée sans les options --dev ou --remote.

L'utilisation classique de --test-crypto ressemble à ceci :

openvpn --test-crypto --secret key

ou à cela :

openvpn --test-crypto --secret key --verb 9

Cette option est très utile pour tester OpenVPN après son portage vers une nouvelle plate-forme, ou pour identifier des problèmes au niveau de la compilation, de la bibliothèque cryptographique OpenSSL, ou du code cryptographique d'OpenVPN. S'agissant d'un auto-test, vous pouvez déboguer les problèmes de chiffrement et d'authentification en étant libre d'éventuels problèmes liés au réseau et au tunnel.

 

Options du Mode TLS

Le mode TLS est le mode de chiffrement le plus puissant fourni par OpenVPN tant du point de vue de la sécurité que de celui de la flexibilité. Le mode TLS fonctionne par le multiplexage, sur un unique port TCP/UDP, d'un canal de données et d'un canal de contrôle. OpenVPN initialise une session TLS sur le canal de contrôle, et l'utilise pour échanger les clés de chiffrement et d'authentification HMAC qui sont utilisées pour protéger le canal de données. Le mode TLS utilise une solide couche de fiabilisation de la connexion UDP pour le canal de contrôle, et passe tel quel le trafic chiffré sur le canal de données. Au final, c'est rien que du bonheur : un canal de données rapide en UDP qui ne surcharge la communication que pour le chiffrement/déchiffrement et l'authentification HMAC, et un canal de contrôle bénéficiant de toutes les fonctions de sécurisation offertes par TLS, notamment l'authentification par certificats et la PFS Diffie Hellman.

Pour activer le mode TLS, chaque hôte en vis-à-vis doit posséder en local sa propre paire clé/certificat ( --cert et --key ), signés par le certificat racine défini par l'option --ca.

Lorsque deux hôtes OpenVPN se connectent, chacun présente son certificat à l'autre. Chacun vérifie alors que ce certificat est bien signé par le certificat racine spécifié par --ca.

Si c'est bien le cas des deux côtés, la négociation TLS est réussie et les hôtes OpenVPN vont s'échanger des clés temporaires qui sont utilisées pour le transfert des données dans le tunnel.

La distribution d'OpenVPN contient un ensemble de scripts pour gérer des certificats et clés RSA, localisé dans le répertoire easy-rsa.

Vous trouverez la même information sur le web ici : http://openvpn.sourceforge.net/easyrsa.html

--tls-server
Active le mode TLS, avec le rôle de serveur durant la négociation TLS. Notez qu'OpenVPN est une application destinée à des hôtes en vis-à-vis ("peer-to-peer"). La notion de serveur et de client n'est liée qu'à la phase de dialogue TLS sur le canal de contrôle.
--tls-client
Active le mode TLS, avec le rôle de client durant la négociation TLS.
--ca fichier
Fichier de l'Autorité de Certification (CA) au format .pem, couramment dénommé certificat racine. Le fichier peut contenir plusieurs certificats au format .pem concaténés. Pour créer votre propre certificat racine et sa clé privée, vous pouvez utiliser une commande OpenSSL comme :

openssl req -nodes -new -x509 -keyout tmp-ca.key -out tmp-ca.crt

Ensuite, éditez votre fichier de configuration openssl.cnf et faites pointer la variable certificate vers votre nouveau certficiat racine tmp-ca.crt.

A des fins exclusives de test, la distribution OpenVPN inclut un exemple de certificat racine d'Autorité de Certification (tmp-ca.crt). Vous ne devez absolument jamais utiliser les clés et les certificats distribués en standard avec OpenVPN dans un environnement de production : étant à la libre disposition de quiconque, ces clés ne procurent aucune sécurité.

--dh fichier
Fichier au format .pem contenant les paramètres Diffie Hellman (requis pour --tls-server seulement). Lancez

openssl dhparam -out dh1024.pem 1024

pour générer vos propres paramètres, ou utilisez le fichier dh1024.pem existant dans la distribution d'OpenVPN. Les paramètres Diffie Hellman peuvent être considérés comme des données publiques.

--cert fichier
Certificat au format .pem de l'hôte local. Doit être signé par l'autorité de certification dont le certificat est spécifié par --ca fichier. Chaque hôte OpenVPN qui participe à un tunnel en mode TLS doit posséder son propre certificat et sa propre clé privée. En complément, le certificat de l'autorité de certification qui a signé le certificat de l'hôte doit être dans le fichier --ca . Vous pouvez créer facilement votre propre autorité de certification (voir ci-dessus) ou bien acheter les services d'une entité commerciale comme thawte.com (et financer les vacances du deuxième touriste spatial au monde :). Pour générer un certificat, vous pouvez utiliser une commande OpenSSL comme :

openssl req -nodes -new -keyout mycert.key -out mycert.csr

Si la clé privée de votre Autorité de Certification réside sur un autre ordinateur, copiez la demande de certificat ("CSR") mycert.csr jusqu'à cette machine. Ceci peut être réalisé sans sûreté particulière, par exemple par courriel. Ensuite, signez le certificat par une commande comme :

openssl ca -out mycert.crt -in mycert.csr

Maintenant, copiez en retour le certificat (mycert.crt) sur l'hôte qui avait servi à générer le fichier .csr. Ceci peut être réalisé sans sûreté particulière, par exemple par courriel. Notez que la commande openssl ca obtient l'emplacement de la clé de l'Autorité de Certification à partir d'un fichier de configuration, comme /usr/share/ssl/openssl.cnf. Notez également que pour que l'Autorité de Certification fonctionne, vous devez créer les fichiers index.txt (peut être initialement vide) et serial (initialisez à 01 ).

--key fichier
Clé privée au format .pem de l'hôte local. Vous devez utiliser la clé privée qui a été générée lorsque vous avez obtenu le certificat de cet hôte (voir -cert fichier ci-dessus).
--key-method m
Utiliser la méthode de négociation m pour les clés du canal de données. La même méthode doit être spécifiée sur les deux hôtes en vis à vis.

Après qu'OpenVPN a négocié une session TLS, un ensemble de clés neuves est généré et échangé au sein de la session TLS, pour chiffrer le tunnel des données.

Selon la méthode 1 (par défaut), les deux hôtes génèrent leurs clés aléatoires de chiffrement et d'authentification HMAC-send, et les envoient à leur vis-à-vis par le canal TLS.

Selon la méthode 2, le client génère une clé aléatoire. Le client et le serveur fournissent également divers germes de générateur aléatoire. Ces éléments sont échangés sur le canal TLS. Les clés réelles sont générées en utilisant la fonction TLS PRF qui prend sa source d'entropie sur le client et sur le serveur. La méthode 2 est conçue pour ressembler de près à la méthode de génération de clés de TLS 1.0.

--tls-cipher l
Une liste l des algorithmes de chiffrement TLS acceptés, séparés par point-virgule (":"). Si vous souhaitez un haut niveau de sécurité, vous pouvez définir cette option afin d'éviter une attaque du type "rollback" où un intercepteur ("man-in-the-middle") tenterait de pousser les deux hôtes en vis-à-vis à négocier entre eux le niveau de chiffrement le plus faible qu'ils puissent accepter. Utilisez --show-tls pour afficher la liste des algorithmes de chiffrement disponibles pour TLS.
--tls-timeout n
Delai de n secondes (par défaut : 2) avant retransmission sur le canal TLS si l'hôte distant n'a pas acquitté le dernier paquet. Lorsque OpenVPN envoie un paquet de contrôle à son vis-à-vis, il s'attend à recevoir sous n secondes un acquittement, sinon il retransmet le paquet selon un algorithme similaire à celui de TCP ("exponential backoff"). Ce paramètre ne concerne que les paquets du canal de contrôle. Les paquets du canal de données (qui contiennent les données chiffrées) ne sont jamais acquittés, ordonnées ou retransmis par OpenVPN puisque ce rôle est celui des protocoles de plus haut niveau présents dans le tunnel, comme par exemple TCP.
--reneg-bytes n
Renégocier les clés du canal de données après que n octets ont été reçus ou envoyés (désactivé par défaut). OpenVPN autorise la durée de vie d'une clé à être exprimée en fonction du volume d'octets chiffré/déchiffré, d'un nombre de paquets ou d'un nombre de secondes. La renégociation de clés sera déclanchée par l'un des hôtes dès que l'un de ces critères est atteint.
--reneg-pkts n
Renégocier les clés du canal de données après que n paquets ont été reçus ou envoyés (désactivé par défaut).
--reneg-sec n
Renégocier les clés du canal de données après n secondes (défaut=3600).
--hand-window n
Fenêtre de négociation -- l'échange de clés TLS doit se conclure dans les n secondes suivant le début de la négociation par l'un des hôtes (défaut = 60 secondes). Si la négociation échoue, OpenVPN tente de redémarrer la connexion avec son vis-à-vis et recommence. Même si la négociation échoue, la clé courante continuera à être valide pour une période maximale de --tran-window secondes, afin de préserver la continuité de la transmission des données dans le tunnel.
--tran-window n
Fenêtre de transition -- la clé courante reste valide n secondes après le début de la négociation d'une nouvelle clé (défaut = 3600 secondes). Cette option garantit que la transition d'une clé vers la nouvelle n'a pas d'impact sur le flot de données transmises par le tunnel.
--single-session
Interdire toute nouvelle connexion après la connexion initiale à un hôte. Cette option signifie qu'un hôte ne peut se connecter, se déconnecter, puis se reconnecter.

Si le démon est redémarré par un signal ou par --ping-restart, il autorisera une nouvelle connexion.

--single-session peut être spécifié avec --ping-exit ou --inactive pour créer une session dynamique unique, qui s'interrompt lorsqu'elle est terminée.

--tls-auth fichier [direction]
Ajoute une couche d'authentification HMAC au canal de contrôle TLS pour contrer les attaques de type déni de service.

En essence, --tls-auth active une sorte de "pare-feu HMAC" sur le port TCP/UDP utilisé par OpenVPN, où les paquets de contrôle TLS porteurs d'une signature HMAC invalide sont ignorés.

fichier (requis) est un fichier de clé qui peut être fourni sous l'un des deux formats :

(1) Une clé statique OpenVPN générée par --genkey (requise si le paramètre direction est spécifié).

(2) Un fichier de mot de passe au format libre. Dans ce cas la clé HMAC sera dérivée du fichier en en calculant un hachage sécurisé, à l'instar des commandes md5sum(1) ou sha1sum(1) .

OpenVPN essaie d'abord le format (1), et s'il ne parvient pas à obtenir une clé, le format (2) sera utilisé.

Reportez-vous à l'option --secret pour plus d'information sur le paramètre optionnel direction.

L'utilisation de --tls-auth est recommandée dans le cas où OpenVPN serait paramétré pour répondre à des paquets provenant de n'importe quelle adresse IP, comme lorsque --remote n'est pas spécifié ou que --remote est spécifié avec --float.

La justification de cette option est la suivante : la négociation TLS nécessite l'échange de plusieurs paquets avant que le vis-à-vis soit authentifié. Durant cette période préalable à l'authentification, OpenVPN alloue des ressources (mémoire, processeur) au bénéfice de son vis-à-vis potentiel. Ce vis-à-vis ouvre également des portions d'OpenVPN et de la bibliothèque OpenSSL aux paquets qu'il expédie. La plupart des attaques réseau efficaces à ce jour consiste à exploiter les bogues d'un programme (attaques par dépassement de tampon) ou à forcer un programme à consommer tant de ressources qu'il devient inutilisable. La première réponse à ce risque consiste bien sur à écrire et à auditer sérieusement un programme. OpenVPN a ainsi été écrit avec la préoccupation permanente de contrer les attaques par dépassement de tampon. Cependant l'histoire a démontré que même les applications réseau les plus utilisées peuvent être sensibles aux attaques par dépassement de tampon.

Par conséquent, OpenVPN offre une seconde ligne de défense par cette couche d'authentification rajoutée au canal de contrôle TLS, qui le protège contre les attaques par rejeu de message via l'empreinte HMAC et l'identification des paquets. L'empreinte offre également une protection contre les attaques par déni de service : la stratégie de base de lutte contre ces attaques consiste à limiter le montant de ressources qui peut être dédié à un vis-à-vis potentiel, mais non identifié.

--tls-auth atteint cet objectif en scellant les paquets du canal de contrôle TLS avec un HMAC, y compris les paquets qui sont envoyés avant que la couche TLS ne soit en mesure d'identifier le vis-à-vis. Le résultat est que les paquets porteurs d'une empreinte incorrecte sont ignorés avant de pouvoir engager des ressources système comme celles nécessitées par la négociation TLS. L'effet de --tls-auth peut être renforcé par l'option --replay-persist qui préserve l'état de la protection contre les attaques par rejeu dans un fichier qui est réutilisé d'un redémarrage à un autre.

Il est important de noter que cette fonctionnalité est optionnelle et que le fichier de mot de passe ou la clé spécifiée par --tls-auth ne permet à un hôte rien d'autre que d'initialiser un dialogue TLS. Ce fichier n'est pas utilisé pour chiffrer ou authentifier les données dans le tunnel.

--askpass
Demander le mot de passe du fichier .pem avant de passer en mode démon. Pour une sécurité maximale, il est possible de protéger votre clé privée par un mot de passe. Ceci implique qu'à chaque démarrage d'OpenVPN, vous devez fournir le mot de passe. L'option --askpass vous permet alors de démarrer OpenVPN en ligne de commande : il vous demande le mot de passe avant d'entrer en mode démon. Pour protéger une clé privée avec un mot de passe, il faut omettre l'option -nodes dans la ligne de commande openssl relative à la gestion de votre certificat.
--tls-verify cmd
Exécute la commande shell cmd pour valider le nom X509 présenté par une nouvelle connexion TLS, sachant que tous les autres tests de validité ont été réussis. cmd doit retourner 0 pour autoriser le dialogue SSL à se poursuivre, 1 pour l'interrompre. cmd s'exécute comme :

cmd certificate_depth X509_name_oneline

Voyez la section "Variables d'Environnement" ci-dessous pour plus d'information sur les variables passés en paramètres aux scripts.

Notez que cmd peut être une ligne de commande comportant des arguments multiples, auquel cas les arguments générés par OpenVPN sont rajoutés à la fin de cmd pour constituer une ligne de commande passée au script.

Cette fonction est utile si le vis-à-vis auquel vous souhaitez accorder votre confiance possède un certificat qui a été signé par une Autorité de Certification qui a déjà signé un nombre astronomique de certificats. Dans ce cas, vous voudrez spécifier finement le certificat que vous acceptez. Cette fonction vous autorise à écrire un script qui testera le nom X509 d'un certificat, et de décider si vous devez l'accepter ou non. Pour un script Perl simple que teste le nom commun contenu dans un certificat, voyez le fichier verify-cn fourni dans la distribution d'OpenVPN.

--tls-remote nomx509
N'accepter que les connexions provenant d'un hôte ayant pour nom X509 nomx509. L'hôte distant doit par ailleurs passer avec succès tous les autres tests d'authentification.

Cette option remplace opportunément --tls-verify pour valider l'hôte distant, car --tls-remote fonctionne même dans un environnement limité par --chroot.

--crl-verify crl
Valider le certificat de l'hôte par rapport au fichier des révocations crl au format PEM.

Une CRL (liste des certificats révoqués) est utilisée lorsque qu'une clé est compromise, mais que globalement votre Infrastructure à Clé Publique (PKI) reste sécurisée.

Supposons que votre PKI soit constituée d'une Autorité de Certification, d'un certificat racine, et d'un nombre de certificats clients. Supposons encore qu'un ordinateur portable, contenant un certificat client et sa clé privée associée, soit volé. En ajoutant le certificat volé au fichier de CRL, vous pouvez rejeter toute connexion qui en ferait usage, sans rien changer à votre PKI.

Le seul cas où il faudrait reconstituer une nouvelle PKI de zéro est celui où la clé racine de l'autorité de certification elle-même serait compromise.

 

Informations sur la Bibliothèque SSL

--show-ciphers
Affiche les algorithmes de chiffrement disponibles pour l'option --cipher.
--show-digests
Affiche les algorithmes de calcul d'empreintes disponibles pour l'option --auth.
--show-tls
Affiche les algorithmes de chiffrement disponibles pour TLS (TLS n'est utilisé que pour le canal de contrôle). Les algorithmes sont classés par ordre de préférence décroissante (du plus sécurisé au moins sécurisé).
 

Générer une Clé Aléatoire

N'est utile qu'en mode de chiffrement statique (sans TLS).
--genkey
Génère une clé aléatoire à employer comme secret partagé par l'option --secret. Ce fichier doit être transmis à l'hôte en vis-à-vis de manière sécurisée, comme par exemple par scp(1).
--secret fichier
Ecrire la clé dans le fichier fichier.
 

Configurer un Tunnel TUN/TAP Persistant

Ce mode de fonctionnement est disponible sous Linux 2.4.7+. Ces options constituent un mode autonome d'OpenVPN qui peut être utilisé pour créer ou supprimer des tunnels persistants.
--mktun
Créer un tunnel persistant sur les plates-formes qui le supportent, comme Linux. Normalement les tunnels TUN/TAP n'existent que tant qu'une application les garde ouverts. Cette option utilise la fonction de tunnel persistant du pilote TUN/TAP pour créer des tunnels qui survivent aux arrêts ou démarrage d'OpenVPN. Ils ne sont effacés que de manière explicite ou au réamorçage de l'hôte.

L'un des avantages des tunnels persistants est qu'ils éliminent le besoin de scripts --up et --down pour lancer les commandes ifconfig(8) et route(8) appropriées. Ces commandes peuvent être simplement placées dans le script qui lance ou arrête une session OpenVPN.

Un autre avantage est que les connexions ouvertes dans le tunnel TUN/TAP ne seront pas interrompues si OpenVPN redémarre. Ceci permet de fournir une continuité de connexion dans le cas ou l'adresse IP public de l'hôte distant est changée par DHCP (voir l'option --ipchange ci-dessus).

Un défaut des tunnels persistants est qu'il est plus difficile de configurer automatiquement leur valeur de MTU (voir --link-mtu et --tun-mtu ci-dessus).

Sur certaines plates-formes comme Windows, les tunnels TAP-Win32 sont persistants par défaut.

--rmtun
Supprimer un tunnel persistant.
--dev tunX | tapX
Périphérique TUN/TAP
 

Options Spécifiques à Windows

--ip-win32 method
Lors de l'utilisation de --ifconfig sous Windows, définir l'adresse de l'interface TAP-Win32 et son masque de réseau en utilisant la méthode method.

manual -- Ne pas définir l'adresse IP ou le masque réseau automatiquement, mais afficher un message indiquant à l'utilisateur de configurer l'interface lui-même, accompagné de l'IP et du masque réseau qu'OpenVPN attend pour l'interface.

netsh -- Définit automatiquement l'adresse IP et le masque réseau en utilisant la ligne de commande Windows "netsh". Cette méthode semble fonctionner correctement sous Windows XP, mais pas sous Windows 2000.

ipapi -- Définit automatiquement l'adresse IP et le masque réseau en utilisant l'API Windows d'Aide IP (méthode par défaut). Cette approche n'a pas une sémantique parfaite, mais les tests ont démontré qu'elle fonctionne correctement. Si vous utilisez cette option, il est préférable de laisser les propriétés TCP/IP de l'interface TAP-Win32 à leur valeur par défaut, c'est-à-dire "Obtenir une adresse IP automatiquement."

dynamic -- Cette option n'est pas implémentée. Elle est réservée à un usage futur.

--tap-sleep n
Oblige OpenVPN à faire une pause de n secondes juste après que l'état du périphérique TAP-Win32 soit passé à "connecté".

Cette option est destinée à régler des problèmes liés aux options --ifconfig et --ip-win32, elle donne le temps au périphérique TAP-Win32 de s'activer avant que l'API Windows d'Aide IP ne procède à sa configuration.

--show-adapters
Affiche la liste des périphériques TAP-Win32 disponibles, qui peuvent être sélectionnés avec l'option --dev-node. Sur les systèmes autres que Windows, la commande ifconfig(8) fournit la fonctionnalité équivalente.
--show-valid-subnets
Affiche les sous-réseaux valides pour l'émulation --dev tun. Etant donné que le pilote TAP-Win32 exporte un interface ethernet vers Windows et que les périphériques TUN représentent, par définition, des liaisons point-à-point, le pilote TAP-Win32 doit imposer certaines contraintes sur les adresses disponibles pour un périphérique TUN.

Les adresses de la liaison point-à-point pour le périphérique TUN émulé doivent ainsi être les adresses médianes d'un sous-réseau /30 (masque réseau 255.255.255.252).

--pause-exit
Affiche le message "press any key to continue" et attendre une entrée clavier avant de quitter. Cette option est utilisée automatiquement par l'Explorateur Windows lorsque OpenVPN est lancé via le menu flottant (clic-droit) sur un fichier de configuration sélectionné.
 

SCRIPTS ET VARIABLES D'ENVIRONNEMENT

A partir de la version 1.5-beta7, OpenVPN exporte un ensemble de variables d'environnement qui peuvent être utilisées dans les scripts --up, --down, --ipchange, --tls-verify ou --route-up.  

Ordre d'Exécution des Scripts

--up
Exécuté après l'activation de la socket TCP/UDP et l'ouverture du périphérique TUN/TAP.
--tls-verify
Exécuté lorsque l'hôte en vis-à-vis n'est pas encore authentifié.
--ipchange
Exécuté après l'authentification de la connexion ou le changement de l'adresse IP de l'hôte distant.
--route-up
Exécuté après l'authentification de la connexion, soit immédiatement après, soit après le nombre de secondes défini par l'option --route-delay.
--down
Exécuté après la fin de la connexion TCP/UDP et la fermeture du périphérique TUN/TAP.
 

Variables d'Environnement

Une fois définie, une variable persiste jusqu'au prochain redémarrage ou jusqu'à ce qu'elle soit explicitement redéfinie. Par exemple un script --ipchange pourrait utiliser des variables qui ont été définies avant l'exécution du script --up. Ceci est possible même s'il n'y a en fait pas de script --up, étant donné que toutes les variables sont définies, que les scripts soient utilisés ou non.
config
Le nom du premier fichier de configuration --config. Défini à l'initialisation et redéfini au redémarrage (SIGHUP).
dev
Le nom du périphérique TUN/TAP, avec son numéro s'il existe. Défini avant l'exécution des scripts --up ou --down.
ifconfig_broadcast
L'adresse de diffusion pour le segment ethernet virtuel, dérivée de l'option --ifconfig lorsque --dev tap est défini. Défini avant qu'OpenVPN n'appelle les commandes ifconfig ou netsh (la version Windows de ifconfig) qui interviennent normalement avant l'exécution du script --up.
ifconfig_local
Adresse IP de l'extrémité locale du VPN spécifiée par l'option --ifconfig (premier paramètre). Défini avant qu'OpenVPN n'appelle les commandes ifconfig ou netsh (la version Windows de ifconfig) qui interviennent normalement avant l'exécution du script --up.
ifconfig_remote
Adresse IP de l'extrémité distante du VPN spécifiée par l'option --ifconfig (second paramètre) lorsque --dev tun est spécifié. Défini avant qu'OpenVPN n'appelle les commandes ifconfig ou netsh (la version Windows de ifconfig) qui interviennent normalement avant l'exécution du script --up.
ifconfig_mask réseau
Masque de sous-réseau du segment ethernet virtuel spécifié en second paramètre de --ifconfig lorsque --dev tap est spécifié. Défini avant qu'OpenVPN n'appelle les commandes ifconfig ou netsh (la version Windows de ifconfig) qui interviennent normalement avant l'exécution du script --up.
link_mtu
Taille maximum des paquets (hors en-tête IP) de données en mode tunnel UDP. Défini avant l'exécution des scripts --up ou --down.
local
Le paramètre --local. Défini à l'initialisation et au redémarrage sur signal SIGHUP.
local_port
Le numéro du port local, spécifié par --port ou --lport. Défini à l'initialisation et au redémarrage sur signal SIGHUP.
proto
Le paramètre --proto. Défini à l'initialisation et au redémarrage sur signal SIGHUP.
remote
Le paramètre --remote. Défini à l'initialisation et au redémarrage sur signal SIGHUP.
remote_port
Le numéro du port distant, spécifié par --port ou --rport. Défini à l'initialisation et au redémarrage sur signal SIGHUP.
route_net_gateway
Route par défaut préexistante dans la table de routage IP. Défini avant l'exécution du script --up.
route_vpn_gateway
La route par défaut utilisée dans les options --route, définie soit par l'option --route-gateway soit dans le second paramètre de --ifconfig lorsque --dev tun est défini. Défini avant l'exécution du script --up.
route_{parm}_{n}
Un ensemble de variables définissant chaque route à ajouter, défini avant l'exécution du script --up.

parm peut prendre les valeurs : "network" pour le réseau, "netmask" pour le masque réseau, "gateway" pour la passerelle, ou "metric".

n est le numéro de la route OpenVPN, commençant à 1.

Si le réseau ou la passerelle sont définis sur la ligne de commande ou dans le fichier de configuration par des noms résolus par DNS, c'est leur adresse IP qui est conservée, pas le nom.

script_context
Vaut "init" ou "restart" avant l'exécution des scripts up/down. Pour plus d'information reportez-vous à la documentation relative à --up.
script_type
Peut prendre les valeurs up, down, ipchange, tls-verify, ou --route-up. Défini avant l'exécution du premier script.
signal
La cause pour laquelle le démon stoppe ou redémarre. Peut prendre pour valeur : sigusr1, sighup, sigterm, sigint, inactive (subordonnée à l'option --inactive), ping-exit (subordonnée à l'option --ping-exit), ping-restart (subordonnée à l'option --ping-restart), connection-reset (sur réinitialisation de la connexion TCP), error (erreur), ou unknown (signal inconnu). Cette variable est définie juste avant l'exécution du script down. Elle est persistante, ce qui permet de la communiquer à l'exécution suivante du script --up qui serait appelé sur redémarrage.
tls_id_{n}
Ensemble de champs du certificat de l'hôte distant, n représentant le niveau de vérification. N'est défini que pour le mode TLS, avant l'exécution du script --tls-verify.
tun_mtu
MTU de l'interface TUN/TAP. Défini avant l'exécution des scripts --up ou --down.
trusted_ip
Adresse IP courante de l'hôte qui se connecte ou qui a été identifié. Défini avant l'exécution du script --ipchange.
trusted_port
Numéro courant du port utilisé par l'hôte qui se connecte ou qui a été identifié. Défini avant l'exécution du script --ipchange.
untrusted_ip
Adresse IP courante de l'hôte qui se connecte, avant son identification. Peut être utilisée dans un script --tls-verify pour valider avec nmap la configuration de pare-feu de l'hôte qui se connecte.
untrusted_port
Numéro courant du port utilisé par l'hôte qui se connecte, avant son identification. Défini avant l'exécution du script --tls-verify.
 

SIGNAUX

SIGHUP
Oblige OpenVPN à fermer toutes ses connexions réseau et ses périphériques TUN/TAP, à redémarrer, relire le fichier de configuration (s'il existe), à rouvrir les périphériques TUN/TAP et enfin ses connexions.
SIGUSR1
Similaire à SIGHUP, avec les différences suivantes : ne pas relire le fichier de configuration, relire les fichiers de clés, préserver le port et l'IP locaux ou préserver le dernier port et adresse IP de l'hôte distant identifié, selon les options --persist-tun, --persist-key, --persist-local-ip, et --persist-remote-ip (voir ci-dessus).

Ce signal peut aussi être généré en interne sur expiration de délai, selon l'option --ping-restart.

Ce signal, combiné avec l'option --persist-remote-ip, est susceptible d'être envoyé lorsque les paramètres réseau de base de l'hôte distant changent, comme par exemple lorsque l'hôte est un client DHCP et qu'il se voit attribué une nouvelle adresse. Pour plus d'information reportez-vous à l'option --ipchange ci-dessus.

SIGUSR2
Oblige OpenVPN à afficher ses statistiques courantes sur la sortie standard, ou sur le fichier de syslog si --daemon est spécifié.
SIGINT, SIGTERM
Obligent OpenVPN à quitter proprement.
 

INSTALLATION DU PILOTE TUN/TAP

Si vous utilisez Linux version 2.4.7 ou ultérieure, le pilote TUN/TAP est probablement pré-installé. Dans ce cas, il vous reste quelques opérations à faire :

Créer le périphérique : mknod /dev/net/tun c 10 200

Charger le pilote : modprobe tun

Si vous utilisez Linux version 2.2 ou précédentes, vous devez récupérer le pilote TUN/TAP ici http://vtun.sourceforge.net/tun/ et suivre les instructions d'installation.  

EXEMPLES

Avant de lancer ces exemples, vous devriez avoir installé OpenVPN sur deux machines reliées par un réseau. Si vous n'avez pas encore installé OpenVPN, consultez le fichier INSTALL inclus dans la distribution d'OpenVPN.  

Configuration TUN/TAP

Si vous utilisez Linux version 2.4 ou ultérieure, créez le périphérique et chargez le module tun :

mknod /dev/net/tun c 10 200


modprobe tun

Si vous installez depuis un RPM, vous pouvez sauter l'étape mknod car l'installation du RPM la réalise pour vous.

Si vous utilisez Linux version 2.2, vous devez récupérer le pilote TUN/TAP en version 1.1 ici http://vtun.sourceforge.net/tun/ et suivre les instructions d'installation.

Pour les autres plates-formes, reportez-vous au fichier INSTALL : http://openvpn.sourceforge.net/install.html .  

Configuration Pare-Feu

S'il existe des pare-feu entre les deux hôtes, ils doivent être réglés pour laisser passer le trafic UDP sur le port 5000, dans les deux directions. Si vous ne contrôlez pas les pare-feu entre les deux machines, vous pourrez probablement quand même utiliser OpenVPN en ajoutant l'option --ping 15 à chacune des commandes openvpn présentées ci-dessous en exemple. Ce rajout fera que chaque hôte va envoyer toutes les 15 secondes un ping UDP à son vis-à-vis, ce qui ce qui a pour effet sur la plupart des pare-feux dynamiques d'ouvrir le port dans les deux sens sans avoir à définir une règle explicite.

Si vous utilisez un pare-feu Linux basé sur iptables, les commandes suivantes vous seront peut-être utiles pour autoriser l'entrée de paquets sur le périphérique TUN :


iptables -A INPUT -i tun+ -j ACCEPT

Reportez-vous à la section sur les pare-feux ci-dessous pour plus d'information sur leur configuration pour OpenVPN.  

Définition d'Adresses du VPN

Dans notre exemple, nos deux machines seront appelées may.kg et june.kg. Si vous constituez un VPN sur Internet, remplacez may.kg et june.kg par leur nom sur Internet, ou par l'adresse IP qui vous permet de les connecter depuis Internet.

Maintenant, choisissons les extrémités du tunnel. Les extrémités de tunnel sont des adresses IP privées qui n'ont de sens que dans le contexte du VPN. Chaque machine va s'adresser à l'extrémité de tunnel de l'autre machine pour communiquer sur le VPN. Dans notre exemple, l'extrémité du tunnel pour sera 10.4.0.1 pour may.kg et 10.4.0.2 pour june.kg.

Lorsque le VPN est établi vous obtenez, en essence, un nouveau chemin sécurisé qui relie les deux hôtes que vous emprunterez en utilisant les adresses définies pour les extrémités du tunnel. Vous pouvez contrôler le trafic réseau qui passe entre les hôtes (a) par le tunnel ou (b) indépendamment du tunnel, en utilisant soit (a) l'adresse de l'extrémité distante du tunnel, soit (b) l'adresse Internet publique de l'hôte distant. Par exemple, si vous étiez sur may.kg et que vous vouliez accéder à june.kg par ssh sans passer par le VPN (puisque ssh possède sa propre couche de sécurité), vous utiliseriez la commande ssh june.kg. Mais vous pourriez aussi utiliser dans le même but la commande telnet 10.4.0.2 pour obtenir un session telnet avec june.kg à travers le VPN. Dans ce cas précis, c'est le VPN qui apporterait la sécurité à la place de ssh.

Pour les extrémités du tunnel, vous pouvez utiliser n'importe quelles adresses, à condition que ce soient des adresses privées (comme celles qui commencent par 10. ou par 192.168.), et qu'elles n'appartiennent pas à un sous-réseau utilisé par le réseau d'aucun des deux hôtes. Si vous utilisez une adresse qui fait partie de votre sous-reseau pour l'une ou l'autre des extrémités du tunnel, vous créez une boucle réseau qui produit des effets étranges.  

Exemple 1 : Un tunnel simple sans sécurité

Sur may :


openvpn --remote june.kg --dev tun1 --ifconfig 10.4.0.1 10.4.0.2 --verb 9

Sur june :


openvpn --remote may.kg --dev tun1 --ifconfig 10.4.0.2 10.4.0.1 --verb 9

Maintenant vérifiez que le tunnel est fonctionnel en faisant un ping à travers le tunnel.

Sur may :


ping 10.4.0.2

Sur june :


ping 10.4.0.1

L'option --verb 9 produit des traces abondantes, similaires à celle du programme tcpdump(8). N'ajoutez pas --verb 9 pour qu'OpenVPN s'exécute sans traces.  

Exemple 2 : Un tunnel sécurisé par clé statique (secret partagé)

Commencez par créer une clé statique sur may.

openvpn --genkey --secret key

Cette commande créée une clé aléatoire (au format ASCII) dans un fichier nommé key. Ensuite copiez le fihier key vers june en utilisant un moyen sécurisé tel que le programme scp(1).

Sur may :


openvpn --remote june.kg --dev tun1 --ifconfig 10.4.0.1 10.4.0.2 --verb 5 --secret key

Sur june :


openvpn --remote may.kg --dev tun1 --ifconfig 10.4.0.2 10.4.0.1 --verb 5 --secret key

Maintenant vérifiez que le tunnel est fonctionnel en faisant un ping à travers le tunnel.

Sur may :


ping 10.4.0.2

Sur june :


ping 10.4.0.1
 

Exemple 3 : Un tunnel avec sécurisation complète par TLS

Dans ce test, may sera le client TLS tandis que june sera le serveur TLS. Notez que la notion client/serveur n'a de sens que pour la fonction TLS. OpenVPN dans son ensemble est bien un système pour la communication UDP de poste-à-poste ("peer-to-peer").

Commencez par créer les certificats et clés pour may et pour june (reportez-vous à --cert ci-dessus pour plus d'information). Ensuite, obtenez les paramètres Diffie Hellman (reportez-vous à --dh ci-dessus pour plus d'information). Vous pouvez également utiliser pour cet exemple les fichiers de test client.crt, client.key, server.crt, server.key et tmp-ca.crt inclus dans la distribution OpenVPN. Les fichiers .crt sont des certificats (ou clés publiques), les fichiers .key son des clés privées, et tmp-ca.crt est le certificat de l'Autorité de Certification qui a signé les certificats client.crt et server.crt. Pour les paramètres Diffie Hellman, vous pouvez utiliser le fichier dh1024.pem. Notez bien que les certificats et clés fournis avec OpenVPN ne procurent aucune sécurisation. Ils sont destinés aux tests et ne doivent pas être utilisés en production.

Sur may :


openvpn --remote june.kg --dev tun1 --ifconfig 10.4.0.1 10.4.0.2 --tls-client --ca tmp-ca.crt --cert client.crt --key client.key --reneg-sec 60 --verb 5

Sur june :


openvpn --remote may.kg --dev tun1 --ifconfig 10.4.0.2 10.4.0.1 --tls-server --dh dh1024.pem --ca tmp-ca.crt --cert serveur.crt --key serveur.key --reneg-sec 60 --verb 5

Maintenant vérifiez que le tunnel est fonctionnel en faisant un ping à travers le tunnel.

Sur may :


ping 10.4.0.2

Sur june :


ping 10.4.0.1

Remarquez que nous utilisons ci-dessus l'option --reneg-sec 60. Cette option commande à OpenVPN de négocier de nouvelles clés pour le canal de données chiffré toutes les minutes. En utilisant --verb 5, vous voyez se dérouler la négociation des nouvelles clés.

En environnement de production, une fréquence de renouvellement d'une minute est probablement trop elevée. Si vous ne définissez pas --reneg-sec 60, OpenVPN utilise la fréquence par défaut d'une heure pour le renouvellement des clés.  

Routage

Si le ping traverse le tunnel, votre prochaine étape consiste à router vers le tunnel sécurisé un sous-réseau existant. Supposons que may et june ont chacune deux cartes réseau, l'une connectée à Internet, l'autre à un réseau interne. Notre objectif est de raccorder de manière sécurisée ces deux réseaux privés. Dans cet exemple, nous considérons que le réseau privé de may est 10.0.0.0/24, celui de june 10.0.1.0/24.

D'abord vérifiez que le routage IP est activé sur les deux hôtes. Sous linux :


echo 1 > /proc/sys/net/ipv4/ip_forward

Ensuite autorisez les paquets TUN à passer à travers le pare-feu :


iptables -A FORWARD -i tun+ -j ACCEPT

Sur may :


route add -net 10.0.1.0 netmask 255.255.255.0 gw 10.4.0.2

Sur june :


route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.4.0.1

Maintenant, n'importe quelle machine du sous-réseau 10.0.0.0/24 peut se connecter de manière sécurisée à n'importe quelle machine du sous-réseau 10.0.1.0/24, et vice-versa.

En environnement de production, vous pourriez inclure les commandes route à un script qui serait exécuté via l'option --up.  

PARE-FEUX

OpenVPN n'utilise qu'un unique port UDP, ce qui le rend assez facile à utiliser avec un pare-feu. Vous devrez ajouter une règle dans votre pare-feu pour autoriser les connexion entrantes vers OpenVPN. Sous Linux 2.4+ :

iptables -A INPUT -p udp -s 1.2.3.4 --dport 5000 -j ACCEPT

Cette règle autorise les paquets UDP à arriver sur le port 5000 (port UDP d'OpenVPN par défaut) s'ils proviennent de l'hôte distant OpenVPN d'adresse IP 1.2.3.4.

Si vous utilisez l'authentification de paquets HMAC (par défaut pour tous les modes sécurisés d'OpenVPN), le filtrage sur l'adresse IP source peut être considéré comme superflu puisque HMAC est un moyen beaucoup plus sûr d'identifier la source d'un paquet. La règle devient alors :


iptables -A INPUT -p udp --dport 5000 -j ACCEPT

ce qui permet à l'hôte distant d'utiliser une adresse IP publique dynamique.

OpenVPN fonctionne également avec les pare-feux dynamiques. Vous n'aurez normalement aucune règle à rajouter au pare-feu si celui-ci est capable de garder la trace des connexions UDP. Si vous spécifiez --ping n, vous êtes certains qu'OpenVPN va envoyer au moins un paquet vers l'hôte distant toutes les n secondes. Si n est inférieur au délai d'expiration d'une connexion pour le pare-feu dynamique, OpenVPN maintiendra la connexion indéfiniment sans qu'il y ait besoin de définir une règle de pare-feu explicite.

Vous devriez également ajouter les règles de pare-feu qui autorisent le trafic IP à entrer sur les périphériques TUN ou TAP, comme :


iptables -A INPUT -i tun+ -j ACCEPT

pour autoriser les paquets entrants sur les périphériques tun,


iptables -A FORWARD -i tun+ -j ACCEPT

pour autoriser les paquets entrants sur les périphériques tun à être routés vers les autres hôtes du réseau local,


iptables -A INPUT -i tap+ -j ACCEPT

pour autoriser les paquets entrants sur les périphériques tap,


iptables -A FORWARD -i tap+ -j ACCEPT

pour autoriser les paquets entrants sur les périphériques tap à être routés vers les autres hôtes du réseau local,

Ces règles sont suffisantes du point de vue de la sécurité si vous utilisez l'authentification des paquets puisque aucun trafic n'arrivera sur un périphérique TUN ou TAP avant que sa source ne soit authentifiée grâce au test HMAC.  

FAQ

http://openvpn.sourceforge.net/faq.html  

HOWTO

Pour un guide plus détaillé concernant l'installation et la mise en oeuvre d'OpenVPN en environnement de production, voyez le HOWTO OpenVPN : http://openvpn.sourceforge.net/howto.html  

PROTOCOLE

Pour une description du protocole sous-jacent à OpenVPN, reportez-vous au fichier ssl.h inclus dans le source de la distribution d'OpenVPN, ou retrouvez-le dans le référentiel CVS sur Internet : http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/openvpn/openvpn/ssl.h  

WEB

L'adresse du site web d'OpenVPN est : http://openvpn.sourceforge.net/

Vous pourrez y télécharger la dernière version d'OpenVPN, vous abonner aux listes de discussion, lire les archives des listes de discussion et naviguer le référentiel CVS.  

BOGUES

Déclarez les bogues d'OpenVPN sur la liste des utilisateurs <openvpn-users@lists.sourceforge.net>. Pour vous abonner à la liste ou en lire les archives, allez sur http://sourceforge.net/mail/?group_id=48978  

VOIR AUSSI

dhcpcd(8), ifconfig(8), openssl(1), route(8), scp(1) ssh(1)  

NOTES

Ce développement inclut du logiciel développé par le Projet OpenSSL ( http://www.openssl.org/ )

Pour plus d'information sur le protocole TLS : http://www.ietf.org/internet-drafts/draft-ietf-tls-rfc2246-bis-01.txt

Pour plus d'information sur le pilote TUN/TAP : http://vtun.sourceforge.net/tun/

Pour plus d'information sur la bibliothèque de compression dynamique LZO : http://www.oberhumer.com/opensource/lzo/  

COPYRIGHT

Copyright (C) 2002 by James Yonan. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.  

AUTEURS

James Yonan <jim@yonan.net>
Traduction française : JP Moins <jp.moins-at-bigfoot.com> et Guillaume Lehmann <lehmann-at-free.fr>.


 

Index

NOM

SYNOPSIS

DESCRIPTION

OPTIONS
Options du Tunnel

Options de Chiffrement du Canal de Données

Options du Mode TLS

Informations sur la Bibliothèque SSL

Générer une Clé Aléatoire

Configurer un Tunnel TUN/TAP Persistant

Options Spécifiques à Windows

SCRIPTS ET VARIABLES D'ENVIRONNEMENT
Ordre d'Exécution des Scripts

Variables d'Environnement

SIGNAUX

INSTALLATION DU PILOTE TUN/TAP

EXEMPLES
Configuration TUN/TAP

Configuration Pare-Feu

Définition d'Adresses du VPN

Exemple 1: Un tunnel simple sans sécurité

Exemple 2: Un tunnel sécurisé par clé statique (secret partagé)

Example 3: Un tunnel avec sécurisation complète par TLS

Routage

PARE-FEUX

FAQ

HOWTO

PROTOCOLE

WEB

BOGUES

VOIR AUSSI

NOTES

COPYRIGHT

AUTEURS


Copyright (C) 2002-2003 by James Yonan <jim@yonan.net>
          This Document is released under the GNU Free Documentation License Version 1.2.
          Traduction J-P Moins
          Relecture <>