OpenVPN-Routing-Befehle im Allgemeinen

OpenVPN-Routing-Befehle im Allgemeinen

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.

Netzwerkstruktur (Bild)

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 routeBefehl 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 routeBefehl für das Subnetz hinzufügen server, aber Sie müssen einen routeBefehl 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 irouteBefehl 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 pushBefehl wird auch für andere Dinge verwendet, aber für das Routing müssen Sie pushdie 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-clientBefehl 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 irouteBefehl 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:

Struktur mit Lösung

Abschließend möchte ich Danger Ginger für seine Hilfe danken.

verwandte Informationen