it-swarm.com.de

Wie lege ich eine statische IP (clientseitig) in OpenVPN fest?

Ich richte ein VPN-Netzwerk mit vielen kleinen Geräten ein (mit OpenWRT). In meinem Anwendungsfall sind die Geräte alle durch eine Nummer gekennzeichnet, und ich möchte, dass ihre IP-Adressen mit ihrer ID übereinstimmen (z. B. die Gerätenummer 6 hat eine IP in X.X.X.6).

Ich bin mir bewusst, dass client-config-dir und ifconfig-Push aber ich kann sie nicht verwenden, da alle meine Geräte das gleiche Zertifikat verwenden (duplicate-cn aktiviert). Dies ist eine Voraussetzung, da das Generieren eines Zertifikats für jedes Gerät zu einschränkend ist (außerdem möchten wir die Konfiguration des VPN-Servers nicht ändern, wenn wir dem System ein Gerät hinzufügen).

Ist es möglich, die IP-Adresse in der Client-Konfigurationsdatei festzulegen? Ich habe in der Dokumentation zu diesem bestimmten Thema nichts gefunden ... Und alles, was ich versucht habe, war nicht erfolgreich.

Grundsätzlich denke ich an Folgendes:

  • Client Stellen Sie eine Verbindung zum VPN-Server her und fragen Sie nach einer bestimmten Adresse ("Geben Sie mir die IP-Adresse: 172.16.0.22").
  • Wenn die Adresse bereits vergeben ist, schlägt der Handshake fehl. Wenn es kostenlos ist, erhält der Kunde die Adresse, die er zuvor gefragt hat
10
Morreski

Sie sollten dies mit der Konfigurationsoption ifconfig-pool-persist Tun können. Sie können die Datei vorkonfigurieren und seconds = 0 Setzen, um OpenVPN anzuweisen, nur die Datei zu lesen.

Wir verwenden es, um sicherzustellen, dass demselben Benutzer dieselbe IP zugewiesen wird, wenn er zu Überwachungszwecken über VPN verbunden ist.

Aus der Manpage :

--ifconfig-pool-persist file [Sekunden] Persist/unpersist ifconfig-pool Daten in Sekundenintervallen (Standard = 600) sowie beim Starten und Herunterfahren des Programms. Ziel dieser Option ist es, eine langfristige Zuordnung zwischen Clients (gekennzeichnet durch ihren gemeinsamen Namen) und der ihnen aus dem ifconfig-Pool zugewiesenen virtuellen IP-Adresse bereitzustellen. Die Aufrechterhaltung einer langfristigen Assoziation ist gut für Kunden, da sie die Option --persist-tun effektiv nutzen können.

datei ist eine durch Kommas getrennte ASCII -Datei, formatiert als ,.

Wenn Sekunden = 0 ist, wird die Datei als schreibgeschützt behandelt. Dies ist nützlich, wenn Sie eine Datei als Konfigurationsdatei behandeln möchten.

Beachten Sie, dass die Einträge in dieser Datei von OpenVPN nur als Vorschläge behandelt werden, basierend auf früheren Zuordnungen zwischen einem gemeinsamen Namen und einer IP-Adresse. Sie garantieren nicht, dass der angegebene gebräuchliche Name immer die angegebene IP-Adresse erhält. Wenn Sie eine garantierte Zuordnung wünschen, verwenden Sie --ifconfig-Push

7
jas_raj

Angenommen, wir richten ein Unternehmens-VPN ein und möchten separate Zugriffsrichtlinien für drei verschiedene Benutzerklassen festlegen:

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

Der grundlegende Ansatz besteht darin, (a) jede Benutzerklasse in ihren eigenen virtuellen IP-Adressbereich zu unterteilen und (b) den Zugriff auf Computer zu steuern, indem Firewall-Regeln eingerichtet werden, die die virtuelle IP-Adresse des Clients eingeben.

Nehmen wir in unserem Beispiel an, wir haben eine variable Anzahl von Mitarbeitern, aber nur einen Systemadministrator und zwei Auftragnehmer. Unser IP-Zuweisungsansatz besteht darin, alle Mitarbeiter in einen IP-Adresspool aufzunehmen und dann dem Systemadministrator und den Auftragnehmern feste IP-Adressen zuzuweisen.

Beachten Sie, dass eine der Voraussetzungen für dieses Beispiel darin besteht, dass auf dem OpenVPN-Server eine Software-Firewall ausgeführt wird, mit der Sie bestimmte Firewall-Regeln definieren können. In unserem Beispiel wird davon ausgegangen, dass es sich bei der Firewall um Linux iptables handelt.

Lassen Sie uns zunächst eine virtuelle IP-Adresszuordnung nach Benutzerklasse erstellen:

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

Als nächstes übersetzen wir diese Map in eine OpenVPN-Serverkonfiguration. Stellen Sie zunächst sicher, dass Sie die obigen Schritte ausgeführt haben, um das Subnetz 10.66.4.0/24 allen Clients zur Verfügung zu stellen (während wir das Routing so konfigurieren, dass der Clientzugriff auf das gesamte Subnetz 10.66.4.0/24 möglich ist, legen wir dies fest Zugriffsbeschränkungen mithilfe von Firewall-Regeln zum Implementieren der obigen Richtlinientabelle.

Definieren Sie zunächst eine statische Einheitennummer für unsere Tun-Schnittstelle, damit wir später in unseren Firewall-Regeln darauf verweisen können:

dev tun0

Definieren Sie in der Serverkonfigurationsdatei den Mitarbeiter-IP-Adresspool:

server 10.8.0.0 255.255.255.0

Fügen Sie Routen für die IP-Bereiche Systemadministrator und Auftragnehmer hinzu:

route 10.8.1.0 255.255.255.0
route 10.8.2.0 255.255.255.0

Da wir bestimmten Systemadministratoren und Auftragnehmern feste IP-Adressen zuweisen, verwenden wir das Clientkonfigurationsverzeichnis ccd:

client-config-dir ccd

Platzieren Sie nun spezielle Konfigurationsdateien im Unterverzeichnis ccd, um die feste IP-Adresse für jeden Nicht-Mitarbeiter-VPN-Client wie folgt zu definieren.

ccd/sysadmin1 Datei:

    ifconfig-Push 10.8.1.1 10.8.1.2

ccd/contractor1 Datei:

    ifconfig-Push 10.8.2.1 10.8.2.2

ccd/contractor2 Datei:

    ifconfig-Push 10.8.2.5 10.8.2.6

Jedes Paar von ifconfig-Push-Adressen repräsentiert die IP-Endpunkte des virtuellen Clients und Servers. Sie müssen aus aufeinanderfolgenden/30 Subnetzen entnommen werden, um mit Windows-Clients und dem TAP-Windows-Treiber kompatibel zu sein. Insbesondere muss das letzte Oktett in der IP-Adresse jedes Endpunktpaars aus diesem Satz entnommen werden:

[  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]

Damit ist die OpenVPN-Konfiguration abgeschlossen. Der letzte Schritt besteht darin, Firewall-Regeln hinzuzufügen, um die Zugriffsrichtlinie abzuschließen.

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

6
Aman Juman

Ich hatte einige Probleme beim Konfigurieren wie @jas_raj. Jetzt mache ich das nächste:

1) Erstellen Sie in/etc/openvpn einen neuen Ordner. Zum Beispiel "dir"

2) server.conf Zeile hinzufügen "client-config-dir dir /"

3) In "dir" müssen Sie eine neue Datei mit dem gleichen Namen erstellen, den Sie in Ihr Zertifikat geschrieben haben, und Folgendes eingeben:

ifconfig-Push IP MASK

Zum Beispiel: ifconfig-Push 10.0.0.10 255.0.0.0

3
jdmorei