OpenVPN schließt IP im Pool aus

OpenVPN schließt IP im Pool aus

Ich habe einen OpenVPN-Server, der auf einer Linux-Ubuntu-Box läuft. Mehrere Clients verbinden sich mit diesem Server (500+), und deshalb habe ich die Server-Bridge-Option wie folgt eingestellt:

server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254

Das funktioniert einwandfrei. Die Clients erhalten eine dynamische IP-Adresse, die vom Block 200 in den Block 201 wechselt, wenn die Anzahl der Clients 255 überschreitet.

Ich habe eine interne Anwendung, die eine Verbindung zu diesen Clients herstellt, aber diese Anwendung stürzt bei den IP-Adressen 10.0.200.255 und 10.0.201.0 ab.

Diese IP-Adressen liegen in dem von mir angegebenen Bereich, aber ich kann sie nicht verwenden.

Gibt es eine Möglichkeit, sie aus meinem Pool auszuschließen?

Oder muss ich mein Setup ändern?

Antwort1

Die Verwendung mehrerer IP-Bereiche oder der Ausschluss bestimmter IPs ist mit dem integrierten DHCP-Server von OpenVPN mithilfe einer einzelnen Konfigurationsdatei nicht direkt möglich.

Ich schlage drei mögliche Lösungen vor:

  • Problemumgehung, aber keine Garantie für die Funktion
  • DHCP-Proxy-Modus, einfach, sauber und viele andere Optionen
  • Mehrere Instanzen, komplexer, könnte Leistungsvorteile haben

Ich empfehle jedoch, die Grundursache des Problems zu beheben, nämlich die fehlerhafte interne Anwendung.

Problemumgehung

Fügen Sie in der Serverkonfigurationsdatei Folgendes hinzu:

server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254
ifconfig-pool-persist ipp.txt 0

Das 0am Ende der Direktive ifconfig-pool-persistbehandelt es ipp.txtals schreibgeschützte Konfigurationsdatei.

Erstellen Sie eine Datei /etc/openvpn/ipp.txt:

reserved-not-used-cn-1,10.0.200.255
reserved-not-used-cn-2,10.0.201.0
reserved-not-used-cn-3,10.0.201.255
...

Fügen Sie dieser Datei alle reservierten IP-Adressen im Format hinzu <Common-Name>,<IP-address>. Wählen Sie für den Wert im Feld <Common-Name>etwas, das in keinem Client-Zertifikat verwendet wird.

Wie auf der Manpage von OpenVPN angegeben, kann nicht garantiert werden, dass dies immer funktioniert:

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 Zuordnung wünschen, verwenden Sie--ifconfig-push

DHCP-Proxy-Modus

Da Sie einKLOPFENSetup, dies könnte die beste Lösung sein. Es ermöglicht die Verwendung eines voll ausgestattetenDHCP-Serverim Subnetz der Serverseite oder auf dem Server selbst, je nach Konfiguration. Um Ethernet-Bridging zu konfigurieren, müssen Sie zuerst die Bridging-Funktion Ihres Betriebssystems verwenden, um die TAP-Schnittstelle mit einer anderen Schnittstelle zu überbrücken.

OpenVPNServerkonfiguration:

server-bridge

Diese Richtlinie wird wie folgt erweitert:

mode server
tls-server
push "route-gateway dhcp"

DHCPDServerkonfiguration:

subnet 10.0.100.1 netmask 255.255.0.0 {
  range 10.0.200.1 10.0.200.254;
  range 10.0.201.1 10.0.201.254;
  range 10.0.202.1 10.0.202.254;
  range 10.0.203.1 10.0.203.254;
  ...
}

Mehrere Instanzen

Eine Alternative wäre, für jedes /24Subnetz eine separate OpenVPN-Instanz zu erstellen und dabei mehrere Konfigurationsdateien zu verwenden. Dazu muss jedoch für jede Instanz ein anderer Port verwendet werden.

Konfigurationsdatei der Instanz 1:

port 11941
server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.200.254

Konfigurationsdatei der Instanz 2:

port 11942
server-bridge 10.0.100.1 255.255.0.0 10.0.201.1 10.0.201.254

...

Dies würde erfordern:

  • entweder IP-Bereich-spezifische Client-Konfigurationen mit den entsprechenden Portnummern,
  • iptablesoder z. B. Lastverteilung für eingehende Verbindungen auf dem Port zu verwenden 1194und diese gleichmäßig auf die Instanzen zu verteilen

Diese Lösung könnte Leistungsvorteile haben, wie erklärtHier.

verwandte Informationen