Warum schlägt diese Zuweisung der statischen Client-IP in OpenVPN fehl?

8

Ich verwende einen OpenVPN-Server und möchte einem bestimmten Client eine statische IP zuweisen.

Dies ist meine server.conf. Ich denke, dies konfiguriert den Pool virtueller IPs so, dass er von 10.5.24.209 bis 10.5.24.223 reicht.

port 443
proto tcp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.5.24.208 255.255.255.240
#This netmask should span IPs .208-.223.
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 168.xx.xx.xx"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
client-to-client
client-config-dir ccd

Dies ist der Inhalt von /etc/openvpn/ccd/W7LocalVM, wobei W7LocalVM der allgemeine Name meines Clients ist. Ich verstehe nicht ganz, was diese Anweisung bewirkt, aber ich denke, die erste IP sollte die gewünschte statische IP meines Clients sein, und die zweite IP sollte die IP meines Servers sein.

ifconfig-push 10.5.24.210 10.5.24.209

Wenn ich jedoch versuche, meinen Client mit dieser Serverkonfiguration zu verbinden, wird die folgende Fehlermeldung angezeigt:

Mon Aug 07 14:07:34 2017 Set TAP-Windows TUN subnet mode network/local/netmask = 10.5.24.208/10.5.24.210/10.5.24.209 [SUCCEEDED]
Mon Aug 07 14:07:34 2017 MANAGEMENT: Client disconnected
Mon Aug 07 14:07:34 2017 ERROR: --ip-win32 dynamic [offset] : offset is outside of --ifconfig subnet
Mon Aug 07 14:07:34 2017 Exiting due to fatal error

Ich dachte, die IP 10.5.24.210 würde sich innerhalb des auf der Serverseite definierten Subnetzes befinden, und ich verstehe nicht, warum ich diesen Fehler erhalte. Könnte mir jemand dabei helfen?

Magnus
quelle
1
Ich würde vorschlagen, dies stattdessen bei Serverfehlern zu erfragen, um Feedback zu erhalten, da diese Site für Probleme mit der Serververwaltung vorgesehen ist.
EJoshuaS
OK. Vielen Dank. Ich wusste nichts über diese Community. Sollte ich erneut posten oder gibt es eine Funktion, mit der ich den Beitrag migrieren kann?
Magnus
1
Sie können die Intervention des Moderators markieren und ihn zur Migration auffordern. (Bei einigen Websites wie Super User kann die Community für die Migration stimmen, die Migration zu dieser Website muss jedoch von Moderatoren durchgeführt werden.)
EJoshuaS

Antworten:

4

Dieses Problem entsteht, weil openvpn versucht, Ihre ifconfig-Optionen als IP gefolgt von einer Subnetzmaske zu analysieren.

Laut Manpage:

- Topologiemodus

...

Subnetz - Verwenden Sie ein Subnetz anstelle einer Punkt-zu-Punkt-Topologie, indem Sie die Tun-Schnittstelle mit einer lokalen IP-Adresse und einer Subnetzmaske konfigurieren, ähnlich der im --dev Tap- und Ethernet-Bridging-Modus verwendeten Topologie. Dieser Modus weist jedem Verbindungsclient eine einzelne IP-Adresse zu und funktioniert auch unter Windows. Nur verfügbar, wenn Server und Clients OpenVPN 2.1 oder höher oder OpenVPN 2.0.x sind, das manuell mit dem Direktivencode --topology gepatcht wurde. Für die Verwendung unter Windows ist Version 8.2 oder höher des TAP-Win32-Treibers erforderlich. Bei Verwendung unter * nix muss der tun-Treiber einen ifconfig (8) -Befehl unterstützen, der ein Subnetz anstelle einer Remote-Endpunkt-IP-Adresse festlegt.

Diese Option ist in OpenVPN 2.1 oder höher vorhanden.

Hinweis: Durch die Verwendung des Subnetzes --topology wird die Interpretation der Argumente von --ifconfig so geändert, dass sie "Adressnetzmaske" und nicht mehr "lokale Fernbedienung" bedeutet.

--ifconfig l rn

Stellen Sie die TUN / TAP-Adapterparameter ein. l ist die IP-Adresse des lokalen VPN-Endpunkts. Bei TUN-Geräten im Punkt-zu-Punkt-Modus ist rn die IP-Adresse des Remote-VPN-Endpunkts. Bei TAP-Geräten oder TUN-Geräten, die mit dem Subnetz --topology verwendet werden , ist rn die Subnetzmaske des virtuellen Netzwerksegments, das erstellt oder mit dem eine Verbindung hergestellt wird . Für TUN-Geräte, die virtuelle Punkt-zu-Punkt-IP-Verbindungen ermöglichen (wenn sie im Modus --topology net30 oder p2p verwendet werden), besteht die ordnungsgemäße Verwendung von --ifconfig darin, zwei private IP-Adressen zu verwenden, die nicht Mitglied eines vorhandenen Subnetzes sind welches in Gebrauch ist. Die IP-Adressen können fortlaufend sein und sollten auf dem Remote-Peer in umgekehrter Reihenfolge angezeigt werden. Nachdem das VPN eingerichtet wurde, pingen Sie durch Pingen von rn über das VPN.

Für TAP-Geräte, die die ....

In Ihrem Servercode legen Sie Ihre Topologie auf fest subnetund übertragen sie dann mithilfe der serverAnweisung an den Client .

Gemäß der obigen Dokumentation müssen Sie "/ etc / openvpn / ccd / W7LocalVM" Folgendes hinzufügen, anstatt Ihre ifconfig mit "local", "remote" zu pushen:

ifconfig-push 10.5.24.210 255.255.255.252
push route 10.5.24.210 255.255.255.252
# ifconfig 10.5.24.209 255.255.255.252

Die letzte Zeile wird wahrscheinlich nicht benötigt, bleibt aber als Beispiel übrig, was ifconfig-push auf der Serverseite tun sollte, damit die Verbindung funktioniert.

Ferrybig
quelle
Ich habe hier einen Kommentar geschrieben und gefragt, warum Sie vorgeschlagen haben, vier IPs pro Client zuzuweisen, aber ich war fleißig genug, um die Antwort darauf in den FAQ zu finden. Vielen Dank, dass Sie das Rätsel gelöst haben!
Magnus