%20fest%3F.png)
Ich richte ein VPN-Netzwerk mit vielen kleinen Geräten ein (auf denen OpenWRT läuft). In meinem Anwendungsfall werden die Geräte alle durch eine Nummer identifiziert und ich möchte, dass ihre IP-Adressen mit ihrer ID übereinstimmen (z. B.: Das Gerät mit der Nummer 6 hat eine IP in XXX6).
Ich bin mir dessen bewusst client-config-dir
, ifconfig-push
kann sie aber nicht verwenden, da alle meine Geräte dasselbe Zertifikat verwenden ( duplicate-cn
ist aktiviert). Dies ist eine Voraussetzung, da die Generierung eines Zertifikats für jedes Gerät zu einschränkend wäre (außerdem möchten wir die Konfiguration des VPN-Servers nicht ändern, wenn wir ein Gerät zum System hinzufügen).
Ist es möglich, die IP-Adresse in der Client-Konfigurationsdatei festzulegen? Ich habe in der Dokumentation zu diesem speziellen Thema nichts gefunden ... Und alles, was ich versucht habe, war erfolglos.
Im Wesentlichen schwebt mir folgendes vor:
- Der Client stellt eine Verbindung zum VPN-Server her und fordert eine bestimmte Adresse an („Gib mir die IP: 172.16.0.22“)
- Wenn die Adresse bereits vergeben ist, schlägt der Handshake fehl. Wenn sie frei ist, erhält der Client die Adresse, die er zuvor angefordert hat.
Antwort1
Dies sollte mit der Konfigurationsoption möglich sein ifconfig-pool-persist
. Sie können die Datei vorkonfigurieren und seconds = 0
OpenVPN so einstellen, dass die Datei nur gelesen werden soll.
Wir verwenden es, um sicherzustellen, dass demselben Benutzer zu Prüfzwecken bei einer Verbindung über VPN dieselbe IP zugewiesen wird.
Von demmanpage:
--ifconfig-pool-persist file [Sekunden] Ifconfig-Pool-Daten in einer Datei speichern/entfernen, in Sekundenintervallen (Standard=600), sowie beim Starten und Herunterfahren von Programmen. Das Ziel dieser Option ist es, eine langfristige Verbindung zwischen Clients (gekennzeichnet durch ihren gemeinsamen Namen) und der virtuellen IP-Adresse herzustellen, die ihnen vom ifconfig-Pool zugewiesen wurde. Die Aufrechterhaltung einer langfristigen Verbindung ist für Clients von Vorteil, da sie dadurch die Option --persist-tun effektiv nutzen können.
Datei ist eine durch Kommas getrennte ASCII-Datei im Format ,.
Wenn Sekunden = 0, wird die Datei als schreibgeschützt behandelt. Dies ist nützlich, wenn Sie die Datei als Konfigurationsdatei behandeln möchten.
Beachten Sie, dass die Einträge in dieser Datei von OpenVPN nur als Vorschläge behandelt werden, die auf früheren Zuordnungen zwischen einem gemeinsamen Namen und einer IP-Adresse basieren. Sie garantieren nicht, dass der angegebene gemeinsame Name immer die angegebene IP-Adresse erhält. Wenn Sie eine garantierte Zuweisung wünschen, verwenden Sie --ifconfig-push
Antwort2
Angenommen, wir richten ein Firmen-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
Unser grundlegender Ansatz besteht darin, (a) jede Benutzerklasse in einen eigenen virtuellen IP-Adressbereich aufzuteilen und (b) den Zugriff auf die Rechner durch die Einrichtung von Firewall-Regeln zu kontrollieren, die sich an der virtuellen IP-Adresse des Clients orientieren.
Nehmen wir in unserem Beispiel an, dass wir eine variable Anzahl von Mitarbeitern, aber nur einen Systemadministrator und zwei Vertragspartner haben. Unser Ansatz zur IP-Zuweisung besteht darin, alle Mitarbeiter in einen IP-Adresspool aufzunehmen und dann dem Systemadministrator und den Vertragspartnern feste IP-Adressen zuzuweisen.
Beachten Sie, dass eine der Voraussetzungen für dieses Beispiel darin besteht, dass auf dem OpenVPN-Servercomputer eine Software-Firewall ausgeführt wird, mit der Sie bestimmte Firewall-Regeln definieren können. Für unser Beispiel gehen wir davon aus, dass es sich bei der Firewall um Linux iptables handelt.
Lassen Sie uns zunächst eine virtuelle IP-Adresszuordnung entsprechend der 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 Karte in eine OpenVPN-Serverkonfiguration. Stellen Sie zunächst sicher, dass Sie die oben genannten Schritte ausgeführt haben, um das Subnetz 10.66.4.0/24 allen Clients zur Verfügung zu stellen (wir konfigurieren das Routing, um Clients Zugriff auf das gesamte Subnetz 10.66.4.0/24 zu gewähren, erlegen dann aber Zugriffsbeschränkungen mithilfe von Firewall-Regeln auf, um die oben genannte Richtlinientabelle umzusetzen).
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 IP-Adresspool für Mitarbeiter:
server 10.8.0.0 255.255.255.0
Fügen Sie Routen für die IP-Bereiche des Systemadministrators und des Auftragnehmers 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 ein Client-Konfigurationsverzeichnis ccd
:
client-config-dir ccd
Platzieren Sie nun spezielle Konfigurationsdateien im ccd
Unterverzeichnis, um die feste IP-Adresse für jeden VPN-Client, der kein Mitarbeiter ist, 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 stellt die virtuellen Client- und Server-IP-Endpunkte dar. 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 fertigzustellen.
Quelle:https://openvpn.net/index.php/open-source/documentation/howto.html#policy
Antwort3
Ich hatte einige Probleme bei der Konfiguration wie @jas_raj. Jetzt mache ich Folgendes:
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 **demselben Namen erstellen, den Sie in Ihr Zertifikat geschrieben haben** und Folgendes eingeben:
ifconfig-push IP-MASKE
Zum Beispiel: ifconfig-push 10.0.0.10 255.0.0.0