web-dev-qa-db-fra.com

Comment définir une IP statique (côté client) dans OpenVPN?

J'installe un réseau VPN avec beaucoup de petits appareils (exécutant OpenWRT). Dans mon cas d'utilisation, les appareils sont tous identifiés par un numéro et je voudrais que leurs adresses IP correspondent à leur ID (par exemple: le numéro de périphérique 6 aura une IP en X.X.X.6).

Je suis conscient de client-config-dir et ifconfig-Push mais je ne peux pas les utiliser car tous mes appareils utilisent le même certificat (duplicate-cn est autorisé). C'est une exigence car la génération d'un certificat pour chaque appareil sera trop contraignante (de plus, nous ne voulons pas changer la configuration du serveur VPN si nous ajoutons un appareil dans le système)

Est-il possible de définir l'adresse IP dans le fichier de configuration client? Je n'ai rien trouvé dans la documentation sur ce sujet particulier ... Et tout ce que j'ai essayé n'a pas réussi.

Fondamentalement, ce que j'ai à l'esprit serait le suivant:

  • Client Se connecter au serveur VPN et demande une adresse spécifique ("donnez-moi l'ip: 172.16.0.22")
  • Si l'adresse est déjà prise, la prise de contact échoue. S'il est gratuit, le client reçoit l'adresse demandée auparavant
10
Morreski

Vous devriez pouvoir le faire avec le ifconfig-pool-persist option de configuration. Vous pouvez préconfigurer le fichier et définir seconds = 0 pour indiquer à OpenVPN de ne lire que le fichier.

Nous l'utilisons pour nous assurer que le même utilisateur se voit attribuer la même IP lorsqu'il est connecté via VPN à des fins d'audit.

Depuis la page de manuel :

--ifconfig-pool-persist file [secondes] Persiste/annule la persistance des données ifconfig-pool dans le fichier, à des intervalles de secondes (par défaut = 600), ainsi qu'au démarrage et à l'arrêt du programme. Le but de cette option est de fournir une association à long terme entre les clients (désignés par leur nom commun) et l'adresse IP virtuelle qui leur est attribuée à partir du pool ifconfig. Le maintien d'une association à long terme est bon pour les clients car il leur permet d'utiliser efficacement l'option --persist-tun.

fichier est un fichier ASCII délimité par des virgules, formaté comme.

Si secondes = 0, le fichier sera traité en lecture seule. Ceci est utile si vous souhaitez traiter le fichier comme un fichier de configuration.

Notez que les entrées de ce fichier sont traitées par OpenVPN uniquement comme des suggestions, basées sur des associations passées entre un nom commun et une adresse IP. Ils ne garantissent pas que le nom commun donné recevra toujours l'adresse IP donnée. Si vous voulez une affectation garantie, utilisez --ifconfig-Push

7
jas_raj

Supposons que nous mettons en place un VPN d'entreprise et que nous souhaitons établir des politiques d'accès distinctes pour 3 classes d'utilisateurs différentes:

System administrators -- full access to all machines on the network
Employees -- access only to Samba/email server
Contractors -- access to a special server only

L'approche de base que nous adopterons est (a) de séparer chaque classe d'utilisateurs dans sa propre plage d'adresses IP virtuelles, et (b) de contrôler l'accès aux machines en définissant des règles de pare-feu qui désactivent l'adresse IP virtuelle du client.

Dans notre exemple, supposons que nous ayons un nombre variable d'employés, mais un seul administrateur système et deux sous-traitants. Notre approche d'allocation IP consistera à placer tous les employés dans un pool d'adresses IP, puis à allouer des adresses IP fixes à l'administrateur système et aux sous-traitants.

Notez que l'une des conditions préalables de cet exemple est que vous disposez d'un pare-feu logiciel en cours d'exécution sur la machine serveur OpenVPN qui vous donne la possibilité de définir des règles de pare-feu spécifiques. Pour notre exemple, nous supposerons que le pare-feu est Linux iptables.

Commençons par créer un mappage d'adresses IP virtuelles en fonction de la classe d'utilisateurs:

Class   Virtual IP Range    Allowed LAN Access  Common Names  

Employees   10.8.0.0/24     Samba/email server at 10.66.4.4     [variable]

Sys Admins  10.8.1.0/24     Entire 10.66.4.0/24 subnet  sysadmin1

Contractors 10.8.2.0/24     Contractor server at 10.66.4.12     contractor1, contractor2

Ensuite, traduisons cette carte en une configuration de serveur OpenVPN. Tout d'abord, assurez-vous d'avoir suivi les étapes ci-dessus pour mettre le sous-réseau 10.66.4.0/24 à la disposition de tous les clients (alors que nous configurerons le routage pour autoriser l'accès client à l'ensemble du sous-réseau 10.66.4.0/24, nous imposerons ensuite restrictions d'accès à l'aide de règles de pare-feu pour implémenter la table de stratégie ci-dessus).

Tout d'abord, définissez un numéro d'unité statique pour notre interface tun, afin que nous puissions y faire référence plus tard dans nos règles de pare-feu:

dev tun0

Dans le fichier de configuration du serveur, définissez le pool d'adresses IP des employés:

server 10.8.0.0 255.255.255.0

Ajoutez des itinéraires pour les plages d'adresses IP de l'administrateur système et de l'entrepreneur:

route 10.8.1.0 255.255.255.0
route 10.8.2.0 255.255.255.0

Étant donné que nous allons attribuer des adresses IP fixes à des administrateurs système et des entrepreneurs spécifiques, nous utiliserons un répertoire de configuration client, ccd:

client-config-dir ccd

Placez maintenant les fichiers de configuration spéciaux dans le sous-répertoire ccd pour définir l'adresse IP fixe pour chaque client VPN non-employé, comme suit.

ccd/sysadmin1 fichier:

    ifconfig-Push 10.8.1.1 10.8.1.2

ccd/contractor1 fichier:

    ifconfig-Push 10.8.2.1 10.8.2.2

ccd/contractor2 fichier:

    ifconfig-Push 10.8.2.5 10.8.2.6

Chaque paire d'adresses ifconfig-Push représente les points de terminaison IP du client et du serveur virtuels. Ils doivent être extraits de sous-réseaux successifs/30 afin d'être compatibles avec les clients Windows et le pilote TAP-Windows. Plus précisément, le dernier octet de l'adresse IP de chaque paire de points d'extrémité doit être extrait de cet ensemble:

[  1,  2] [  5,  6] [  9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]

Ceci termine la configuration d'OpenVPN. La dernière étape consiste à ajouter des règles de pare-feu pour finaliser la stratégie d'accès.

Source: https://openvpn.net/index.php/open-source/documentation/howto.html#policy

6
Aman Juman

J'ai eu quelques problèmes de configuration comme @jas_raj. Maintenant je fais le suivant:

1) Dans/etc/openvpn, créez un nouveau dossier. Par exemple "dir"

2) server.conf add line "client-config-dir dir /"

3) Dans "dir", vous devez créer un nouveau fichier avec le ** même nom que vous avez écrit dans votre certificat ** et tapez:

ifconfig-Push IP MASK

Par exemple: ifconfig-Push 10.0.0.10 255.0.0.0

3
jdmorei