
Ich habe die unten beschriebene Situation: 1 – Ich habe 2 OpenVPN-Server (Server A und Server B).
2 – Clients stellen über VPN eine Verbindung zu jedem Server her, keine direkten LANs.
3- Server B ist als VPN-Client mit Server A verbunden.
4- Server B führt 2 OpenVPN-Instanzen aus
5- Asuume-Laptop B ist über VPN mit Server B verbunden, ich muss damit (zumindest) Server A erreichen.
6- Server A VPN DHCP ist 10.8.0.0/24
7- Server B VPN DHCP ist 172.30.0.0/16
8- Server B hat eine statische IP 10.8.0.101 (VPN-Client)
- Das Problem besteht darin, dass ich Server A von Laptop B aus nicht erreichen kann. Und Server A kann Server B nicht über die IP des VPN-Servers erreichen, nicht über die IP des Clients.
Die Netzwerkkonfiguration ist wie folgt:
Server A-Konfiguration
[root@localhost ~]# ifconfig
eth0 inet addr:X.X.X.X Bcast:X.X.X.255 Mask:255.255.255.0
eth0:0 inet addr:X.X.X.X Bcast:X.X.255.255 Mask:255.255.0.0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:629066 errors:0 dropped:0 overruns:0 frame:0
TX packets:416252 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:136006302 (129.7 MiB) TX bytes:114377768 (109.0 MiB)
Server B
[root@vps8887 ~]# ifconfig
eth0 inet addr:X.X.X.X Bcast:X.X.X.255 Mask:255.255.255.0
eth0:0 inet addr:X.X.X.X Bcast:X.X.X.255 Mask:255.255.255.0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.30.0.1 P-t-P:172.30.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:69 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:4140 (4.0 KiB) TX bytes:240 (240.0 b)
tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.101 P-t-P:10.8.0.102 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:34 errors:0 dropped:0 overruns:0 frame:0
TX packets:105 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:2856 (2.7 KiB) TX bytes:8820 (8.6 KiB)
Routing für Server A:
[root@localhost ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.8.0.2 * 255.255.255.255 UH 0 0 0 tun0
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
Das Routing für Server B:
[root@vps8887 ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.8.0.102 * 255.255.255.255 UH 0 0 0 tun1
172.30.0.2 * 255.255.255.255 UH 0 0 0 tun0
X.X.X.0 * 255.255.255.0 U 0 0 0 eth0
10.8.0.0 10.8.0.101 255.255.255.0 UG 0 0 0 tun1
X.X.X.0 * 255.255.255.0 U 0 0 0 eth0
172.30.0.0 172.30.0.2 255.255.0.0 UG 0 0 0 tun0
link-local * 255.255.0.0 U 0 0 0 eth0
default X.X.X.1 0.0.0.0 UG 0 0 0 eth0
default X.X.X.1 0.0.0.0 UG 0 0 0 eth0
Beim Versuch, Routing auf Server A hinzuzufügen, tritt ein Problem auf, wenn ich den folgenden Befehl eingebe:
route add -net 172.30.0.0/16 gw 10.8.0.101
Dieser Fehler wird angezeigt:
„SIOCADDRT: Netzwerk ist nicht erreichbar“
OpenVPN-Konfiguration für ServerA, Port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
client-to-client
duplicate-cn
server 10.8.0.0 255.255.255.0
client-config-dir ccd
push "dhcp-option DNS 10.8.0.1"
status openvpn-status.log
keepalive 10 120
comp-lzo
persist-key
persist-tun
crl-verify /etc/openvpn/crl.pem
verb 3
================ Server B Client ccd ================
push "dhcp-option DNS 8.8.8.8"
ifconfig-push 10.8.0.101 10.8.0.102
=====================================================
OpenVPN-Konfiguration für Server B
======================= Server B ( Server Config )========================
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
client-to-client
duplicate-cn
server 172.30.0.0 255.255.0.0
push " route 10.8.0.0 255.255.255.0 "
status openvpn-status.log
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3
==============================================================================
================= Server B ( Client Config )==============================
client
dev tun
proto udp
remote serverA 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
route-nopull
route 10.8.0.0 255.255.255.0 10.8.0.101
comp-lzo
verb 5
===============================================================================
Und schließlich: Ich brauche die Kommunikation zwischen diesen Sites.
Antwort1
OpenVPN-Routing-Befehle im Allgemeinen
Route
Der route
Befehl wird in die Serverkonfiguration eingefügt und weist den Server an, eine Route zu seiner eigenen Kernel-Routingtabelle hinzuzufügen. Sie müssen der Direktive keinen route
Befehl für das Subnetz hinzufügen server
, aber Sie müssen einen route
Befehl für jedes andere Subnetz hinzufügen, das der Server verarbeiten soll. Im Wesentlichen weist dies den Kernel an, diese Subnetze an den OpenVPN-Server zu senden. Beispiel:
# serverA.conf (just a fragment)
server 10.8.0.0 255.255.255.0
...
route 172.30.0.0 255.255.255.0 # Add a route to the kernel routing table
ichroute
Der iroute
Befehl erstellt Routen, die "intern" zu OpenVPN sind, so dass der OpenVPN-Server weiß, welche Clients für Subnetze verantwortlich sind, wie beschriebenHierUndHier. Bevor Pakete in die Kernel-Routingtabelle gelangen, entschlüsselt OpenVPN sie, wenn sie vom Tun/Tap-Gerät eingehen, und untersucht sie, um zu sehen, was mit ihnen zu tun ist. Ohne einen iroute-Befehl erkennt der Server sie nicht.
# ccd/ServerB.conf
iroute 172.30.0.0
pushen " Route ... "
Der push
Befehl wird auch für andere Dinge verwendet, aber für das Routing müssen Sie push
die Routen für Subnetze an Clients senden. Dadurch werden die Clients angewiesen, ihre Kernel-Routingtabelle zu ändern, um Datenverkehr an den VPN-Server zu senden. Ohne diese Anweisung wissen die Clients nicht, wie sie Pakete vom privaten Subnetz 10.8.0.0 an 172.30.0.0 senden können. Diese sollten in den ccd/client oder einfach in die Serverkonfiguration gehen, wenn sie für alle Clients universell ist.
# ServerA.conf (more of the fragment)
server 10.8.0.0 255.255255.0
...
route 172.30.0.0 255.255.255.0 # add the route to the server's kernel
push "route 172.30.0.0 255.255.255.0" # add the route to the clients
Kunde zu Kunde
Der client-to-client
Befehl teilt dem Server mit, dass Clients miteinander kommunizieren dürfen. Ich glaube, dies ist standardmäßig kommentiert und wird notwendig sein.
Kernel-IP-Weiterleitung
Dies ist keine OpenVPN-Konfiguration und das Folgende ist spezifisch für Linux. Dies ist jedoch für jeden wichtig, der einen OpenVPN-Server betreibt. Jeder Server muss die IP-Weiterleitung im Kernel aktiviert haben, wieDas. Stellen Sie außerdem sicher, dass die Firewall-Regeln die Weiterleitung nicht verhindern.
Bezüglich deines Setups
Es sieht so aus, als ob Ihnen Anweisungen fehlen iroute
. Server B benötigt einen Eintrag in seiner CCD-Datei. Der iroute
Befehl teilt dem OpenVPN-Server mit, welcher Client dieses Subnetz kennt.
# ccd/ServerB
iroute 172.30.0.0 255.255.255.0
EDIT: Wenn ich noch einmal hinschaue, fällt mir noch etwas auf.
Es scheint auch, dass Server A die Route zu Server B nicht an seine Clients weitergibt:
# ServerA config
push " route 172.30.0.0 255.255.255.0 "
Ich mache das mit zwei Servern, auf denen ich OpenVPN laufen habe. Sie müssen keiner der Maschinen manuell Routen hinzufügen. Wenn Sie die OpenVPN-Konfigurationen richtig machen, teilt Server B Server A mit, dass er 172.30.0.0 mit verarbeitet iroute
. Server A teilt Clients mit, dass sie 172.30.0.0 mit über Server A senden sollen push " route ... "
. Und Sie haben bereits Server B, der die Route für 10.8.0.0 pusht.
Um zu testen, ob dies funktioniert, würde ich empfehlen ping
, nicht zu versuchen, Routen hinzuzufügen.
Antwort2
Ich habe es selbst gelöst. Das wichtige "IP-Forwarding" war auf beiden Seiten nicht aktiviert. Das ist das Hauptproblem. iroute wird bei mir nicht gelöscht, ich habe mir diesen Artikel angesehen: OpenVPN und iroute Das Routing wird komplett von OpenVPN durchgeführt. Manuelles Routing ist nicht erforderlich. Wie unten gezeigt:
Abschließend möchte ich Danger Ginger für seine Hilfe danken.