• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Hilfe bei statischen Routen im OpenVPN

ThomasL

Member
Ich habe zwei LAN´s (LAN A mit 10.1.1.0/24 und LAN B mit 10.1.2.0/24).

LAN A mit OpenVPN-Server unter 10.1.1.200
LAN B mit OpenVPN-Client unter 10.1.2.200

OpenVPN läuft unter 10.50.0.0/24.

Beide LAN´s gehen mit einer FritzBox als Gateway ins Netz.

Muß ich nun in der FritzBox im LAN A die statische Route 10.50.0.0/24 nach 10.1.1.200 und im LAN B die statische Route 10.50.0.0/24 nach 10.1.2.200 einrichten?

Die entsprechenden Portfreigaben sind bereits eingerichtet. Weder auf 10.1.1.200 noch auf 10.1.2.200 läuft eine Firewall.

Gruß
Thomas
 
OP
T

ThomasL

Member
Ist denn niemand da, der mir mal ein bischen helfen könnte? - Ich bekomme es einfach nicht hin ...
 

nbkr

Guru
Die OpenVPN Rechner müssen wissen welches Netz hinter dem jeweils anderen ist. D.h. OpenVPN A braucht solch eine Route:

Ziel: Netz B
Gateway: VPN IP von OpenVPN Rechner B

Rechner B entsprechend:

Ziel: Netz A
Gateway: VPN IP von OpenVPN Rechner A

Die Fritzboxen müssen das auch noch wissen:
Fritzbox in Netz A:

Ziel: Netz B
Gateway: Netz B IP von OpenVPN Rechner B

Fritzbox in Netz B:

Ziel: Netz A
Gateway: Netz A IP von OpenVPN Rechner A.
 
OP
T

ThomasL

Member
Hallo,

genau SO habe ich mir das auch gedacht, aber irgendwo ist der Knoten drinn und ich sehe ihn nicht ... könntest du unten mal nen Blick drauf werfen?


OpenVPN: 10.50.0.0 / 24

LAN „2“: Netzwerk: 10.1.2.0/24

OpenVPN-Server mit 10.1.2.121

eth0 Protokoll:Ethernet Hardware Adresse XX:XX:XX:XX:XX:XX
inet Adresse:10.1.2.121 Bcast:10.1.2.255 Maske:255.255.255.0

tun0 Protokoll:UNSPEC Hardware Adresse XX:XX:XX:XX:XX:XX
inet Adresse:10.50.0.1 P-z-P:10.50.0.2 Maske:255.255.255.255

Kernel IP Routentabelle OpenVPN-Server
Ziel Router Genmask Flags Metric Ref Use Iface
10.50.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.50.0.0 10.50.0.2 255.255.255.0 UG 0 0 0 tun0
10.1.1.0 10.50.0.2 255.255.255.0 UG 0 0 0 tun0
10.1.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.1.2.100 0.0.0.0 UG 0 0 0 eth0

FritzBox als Gateway mit 10.1.2.100

stat. Route von 10.50.0.0 / 24 --> 10.1.2.121 (= ip OpenVPN-Server)
stat. Route von 10.1.1.0 / 24 --> 10.1.2.121 (= ip OpenVPN-Server)


LAN „1“: Netzwerk: 10.1.1.0/24

OpenVPN-Client mit 10.1.1.111 und 10.1.1.112 (zwei NIC´s)

eth0 Protokoll:Ethernet Hardware Adresse XX:XX:XX:XX:XX:XX
inet Adresse:10.1.1.111 Bcast:10.1.1.255 Maske:255.255.255.0

eth1 Protokoll:Ethernet Hardware Adresse XX:XX:XX:XX:XX:XX
inet Adresse:10.1.1.112 Bcast:10.1.1.255 Maske:255.255.255.0

tun0 Protokoll:UNSPEC Hardware Adresse XX:XX:XX:XX:XX:XX
inet Adresse:10.50.0.6 P-z-P:10.50.0.5 Maske:255.255.255.255

tun1 Protokoll:UNSPEC
inet Adresse:10.50.0.6 P-z-P:10.50.0.5 Maske:255.255.255.255

Kernel IP Routentabelle OpenVPN-Client
Ziel Router Genmask Flags Metric Ref Use Iface
10.50.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.50.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun1
10.50.0.0 10.50.0.5 255.255.255.0 UG 0 0 0 tun0
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.1.2.0 10.50.0.5 255.255.255.0 UG 0 0 0 tun0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.1.1.100 0.0.0.0 UG 0 0 0 eth1

FritzBox als Gateway mit 10.1.1.100

stat. Route von 10.50.0.0 / 24 --> 10.1.1.111 (= ip OpenVPN-Client)
stat. Route von 10.1.2.0 / 24 --> 10.1.1.111 (= ip OpenVPN-Client)



VIELEN DANK !!!
 

nbkr

Guru
Auf dem VPN Rechner von LAN 1 ist was murks.

Der hat zweimal! einen Tunnel von 10.50.0.6 nach 10.50.0.5.
Dafür fehlt ihm der Tunnel von 10.50.0.2 nach 10.50.0.1. Ergo können sich die beiden Maschinen überhaupt nicht erreichen.

ping und traceroute sollten zeigen wie das Routing verläuft. Ich bin mir fast sicher das Du im jeweiligen Netz am VPN Rechner hängen bleibst.

Fazit: Auf beiden VPN Rechnern noch mal /etc/openvpn/* durchsehen. Die Konfigurationen passen nicht zusammen.
 
OP
T

ThomasL

Member
Du hast absolut recht: Über die VPN-Maschinen komme ich nicht hinaus. Ich finde den Knoten aber dennoch nicht ... die entsprechenden Teile meine server.config habe ich mal unten angehängt. Die client.config "pullt" eigentlich nur.


Könntest du nochmal draufschauen?


SERVER-CONFIG

server 10.50.0.0 255.255.255.0
push "route 10.1.2.0 255.255.255.0"

client-config-dir ccd
route 10.1.1.0 255.255.255.0

client-to-client

ENDE SERVER-CONFIG


... und in ccd/client1 steht lediglich:
iroute 10.1.1.0 255.255.255.0
 

nbkr

Guru
Für so eine Verbindung eignet sich eigentlich eine Direktverbindung besser. Die Config sieht dann auf Rechner A aus:

Code:
remote öffentliche - ip / url des VPN Rechners B
local 10.50.0.1
dev tun0
secret /pfad/zum/preshared/secret 0
ifconfig 10.50.0.1 10.50.0.2

Auf Rechner B:
Code:
remote öffentliche - ip / url des VPN Rechners A
local 10.50.0.2
dev tun0
secret /pfad/zum/preshared/secret 1
ifconfig 10.50.0.2 10.50.0.1

Entsprechendes Portforwarding auf den Fritzboxen bitte nicht vergessen!
 
OP
T

ThomasL

Member
UUPS ... das ist jetzt allerdings ganz was Neues. An und für sich sollte es so sein, daß der Server mit seinem LAN hinter einer DynDNS-IP hängt und sich dann dort (zur Zeit) zwei weitere lokale LANs (jeweils mit eigenem Client) verbinden. Hinzu kommen später natürlich noch etwa fünf Roadwarrior .... das Ganze dann mit Zertifikaten.

Das Portforwarding auf den FritzBoxen und die Zertifikate stehen für die bisherige Konfiguration ja bereits, weil Server und Client ja schon "miteinander" reden - nur habe ich wohl eben immer noch einen derartigen "Tunnelblick", sodaß ich den Routing-Knoten einfach nicht sehe.

Unabhängig von dem oben geschilderten: Da sich im Client zwei Netzwerkkarten befinden, werden wohl automatisch auch zwei tun-devices angelegt. Könnte dies zu Konflikten führen? Oder anders gefragt: Läßt sich z.B. das Anlegen von "eth1/tun1" unterbinden?


Hm ... was soll ich jetzt tun?
 

nbkr

Guru
ThomasL schrieb:
Unabhängig von dem oben geschilderten: Da sich im Client zwei Netzwerkkarten befinden, werden wohl automatisch auch zwei tun-devices angelegt. Könnte dies zu Konflikten führen? Oder anders gefragt: Läßt sich z.B. das Anlegen von "eth1/tun1" unterbinden?


Hm ... was soll ich jetzt tun?

Zeig mal bitte die komplette config von OpenVPN. Sowohl vom Server A als auch von Server B.
 
OP
T

ThomasL

Member
Hallo!

Das tue ich doch gerne ...

Server-Conf-Anfang

###############################################
#
# OpenVPN 2.0 / Multi-Client server
#
# Lan "10.1.2.0" mit OpenVPN-Server:
# Lokales Netz: 10.1.2.0 255.255.255.0
# Gateway: 10.1.2.100 255.255.255.0
# OpenVPN-Server: 10.1.2.121 255.255.255.0
# #
# Lan "10.1.1.0" mit OpenVPN-Client (client1):
# #
# Lokales Netz: 10.1.1.0 255.255.255.0
# Gateway: 10.1.1.100 255.255.255.0
# Gateway:Client 10.1.1.111 255.255.255.0
# 10.1.1.112 255.255.255.0
# #
# OpenVPN: 10.50.0.0 255.255.255.0 #
##########################################

port 1194
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key
dh dh1024.pem

mode server
server 10.50.0.0 255.255.255.0

push "route 10.1.2.0 255.255.255.0"

route 10.1.1.0 255.255.255.0
client-config-dir /etc/openvpn/ccd
# in /etc/openvpn/ccd/client1:
# iroute 10.1.1.0 255.255.255.0

client-to-client

keepalive 10 120

cipher DES-EDE3-CBC # Triple-DES

comp-lzo

max-clients 10

log /etc/openvpn/openvpn.log
verb 4

Server-Conf-Ende

was dann hierzu führt:

Kernel IP Routentabelle
ZielRouter Genmask Flags Metric Ref Use Iface
10.50.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.50.0.0 10.50.0.2 255.255.255.0 UG 0 0 0 tun0
10.1.1.0 10.50.0.2 255.255.255.0 UG 0 0 0 tun0
10.1.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.1.2.100 0.0.0.0 UG 0 0 0 eth0


Client-Conf-Anfang

client
pull
dev tun

proto udp
port 1194
remote XXXXXX.dyndns.org

ca ca.crt
cert client1.crt
key client1.key

cipher DES-EDE3-CBC # Triple-DES

comp-lzo

log /etc/openvpn/openvpn.log
verb 3

Server-Conf-Ende

... das ergibt dann dieses:

Kernel IP Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
10.50.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.50.0.0 10.50.0.5 255.255.255.0 UG 0 0 0 tun0
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.1.2.0 10.50.0.5 255.255.255.0 UG 0 0 0 tun0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.1.1.100 0.0.0.0 UG 0 0 0 eth1


Leider steht der VPN-Client runde 400 km weit weg.

Was mich wurmt ist, daß ich

mit ping 10.50.0.6 vom VPN-Server auf den VPN-Client komme
mit ping 10.50.0.1 vom VPN-Clientr auf den VPN-Server komme
vom VPN-Client alle PC´s im Server-LAN anpingen kann

ABER NICHT:

vom VPN-Server die PC´s im Client-LAN anpingen,
geschweige denn von einem Client-LAN-PC zu einem Server-LAN-PC oder umgekehrt.

Es laufen keine Firewalls, keine DHCP- und keine DNS-Server. Alle ip´s sind statisch.

Ich bin wirklich ratlos!
 
OP
T

ThomasL

Member
Ich vergaß noch zu erwähnen:

In beiden LAN´s sind FritzBoxen die Gateways:

Stat. Routen im Server-LAN:
10.1.1.0/24 nach 10.1.2.121
10.50.0.0/24 nach 10.1.2.121

Stat. Routen im Client-LAN:
10.1.2.0/24 nach 10.1.1.111
10.50.0.0/24 nach 10.1.1.111
 
OP
T

ThomasL

Member
Das sagt natürlich "1" ... auf beiden Maschinen. Das war so mitunter das erste, was ich eingestellt habe .... auch dauerhaft, man bootet ja zwischendurch immer mal wieder.

Wenn ich nur wüßte, wie ich z.B. mit tcpdump die Wege der Pakete verfolgen könnte, um mal eine Ahnung zu haben WO es klemmt ....

Das Dumme an der Sache ist, daß das VPN am Mittwoch stehen muß.
 

nbkr

Guru
Mach mal bitte die folgenden Traceroutes und poste es hier:

Vom Client-VPN zu einem Rechner im Server LAN und umgekehrt
Vom einem Client-LAN Rechner zu einem Server LAN Rechner und umgekehrt
Vom Server-VPN zu einem Rechner im Client LAN und umgekehrt.

Mich würde interessieren über welche IPs das läuft.

Mit tcpdump auf einem der beiden Server kannst Du auch noch was sehen. Dafür einfach als root tcpdump aufrufen. Man kann auch noch einige Filter setzen. Wie das geht steht in der manpage von tcpdump.

Alternativ kann man doch eine OpenVPN Punkt-zu-Punkt Verbindung aufbauen. Die ist nicht so zickig wie die Punkt-zu-Multipunkt Verbindung.
 
OP
T

ThomasL

Member
Für die traceroutes muß ich meinen Kollegen am anderen Standort ans Telefon bekommen ... sollte aber gleich möglich sein.

Beim tcpdump bin ich gerade am probieren ... dauert auch noch ein paar Minuten.

Wie sieht es denn mit dem UDP port 1194 aus? Könnte es sein, daß hier etwas dicht ist? - Obwohl, dann dürfte sich doch erst gar kein Tunnel aufbauen. Wie gesagt .. ich kann vom Server ein ping 10.50.0.6 absetzten und vom Client einen ping 10.50.1.

Was die P-z-P Verbindung anbelangt: Ginge das auch wirklich mit drei Standorten und etwa fünf "mobilen" Roadwarriors?
 

nbkr

Guru
Ich hab das hier mit 3 Standorten (A, Mitte und B) und einem Roadwarrior.
Die Standorte haben jeweils eine Punkt-zu-Punk Verbindung zu Mitte. Der Roadwarrior ist über eine Punkt-zu-Multipunktverbindung an Mitte angebunden.

Die Fritzboxen brauchen für jeden Peer eine eigene Freigabe. Mitte hat also zwei Ports weitergeleitet. Jede Weiterleitung führt zur einem der beiden anderen Standorte.

Routing mache ich zwischen den Standorten dynamisch mit quagga. Funktioniert alles ohne Probleme. Auch DNS und SMB läuft darüber. Die Verbindungen sind extrem stabil, nur eben etwas langsam da ich hier überall nur DSL 1000 habe.

Theoretisch müsste dank Quagga und Ospf auch eine Dreieckverbindung möglich sein. Dann bleiben die zwei anderen Standorte verbunden wenn Mitte mal ausfällt oder gewartet werden muss.

//Edit: Was richtig gestellt.
 
OP
T

ThomasL

Member
Das ist nun dabei herausgekommen ...

Vom VPN-Server (10.1.2.121) auf:

Tunnelende VPN-Server (10.50.0.1)
traceroute to 10.50.0.1 (10.50.0.1), 5 hops max, 40 byte packets
1 10.50.0.1 (10.50.0.1) 0.000 ms 0.000 ms 0.000 ms

Tunnelende VPN-Client (10.50.0.1)
traceroute to 10.50.0.6 (10.50.0.6), 5 hops max, 40 byte packets
1 10.50.0.6 (10.50.0.6) 61.075 ms 63.140 ms 62.556 ms

VPN-Client (10.1.1.111)
traceroute to 10.1.1.111 (10.1.1.111), 5 hops max, 40 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *

PC im VPN-Client-LAN (10.1.1.201)
traceroute to 10.1.1.201 (10.1.1.201), 5 hops max, 40 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *

Vom VPN-Client (10.1.1.111) auf:

Tunnelende VPN-Server (10.50.0.1)
traceroute to 10.50.0.1 (10.50.0.1), 5 hops max, 40 byte packets
1 10.50.0.1 (10.50.0.1) 61.751 ms 60.691 ms 60.099 ms

Tunnelende VPN-Client (10.50.0.6)
traceroute to 10.50.0.6 (10.50.0.6), 5 hops max, 40 byte packets
1 10.50.0.6 (10.50.0.6) 0.000 ms 0.000 ms 0.000 ms

VPN-Server (10.1.2.121)
traceroute to 10.1.2.121 (10.1.2.121), 5 hops max, 40 byte packets
1 10.1.2.121 (10.1.2.121) 61.234 ms 60.636 ms 60.589 ms

PC im VPN-Server-LAN (10.1.2.201)
traceroute to 10.1.2.201 (10.1.2.201), 5 hops max, 40 byte packets
1 10.50.0.1 (10.50.0.1) 62.250 ms 63.080 ms 62.406 ms
2 10.1.2.201 (10.1.2.201) 61.349 ms 61.342 ms 60.654 ms



Kein Connect bei:
- PC im VPN-Client-LAN auf komplettes VPN-Server-LAN
- PC zu PC, egal welche Richtung
 

nbkr

Guru
Seltsam. Kannst Du auf dem VPN-Server das eth1 Interface gefahrlos abschalten? Soweit ich das sehe hat das nur eine zusätzliche IP, aber der Traffic _sollte_ nur über eth0 laufen. Evtl. bringt das OpenVPN durcheinander.

Danach OpenVPN nochmal neustarten.
 
OP
T

ThomasL

Member
eth1 ist "draußen", mit eth0 alleine klappt´s aber immer noch nicht - schrei


Könntest du mir deine config´s geben? ich probier´s dann mal auf diesem Weg - Hauptsache das VPN steht bis Mittwochfrüh, wenn´s erstmal klappt, findet sich vielleicht der Feheler eher.

Besten Dank auch!!!!
 

nbkr

Guru
Server

Code:
remote client.dyndns.org
local ip_von_eth0
dev tun0
secret /pfad/zum/key 0
ifconfig 10.50.0.1 10.50.0.2

Client

Code:
remote server.dyndns.org
local ip_von_eth0
dev tun0
secret /pfad/zum/key 1
ifconfig 10.50.0.2 10.50.0.1

Musst Du halt entsprechend anpassen. Den Key generiest Du mit
Code:
openvpn --genkey --secret /pfad/zum/key

der Schlüssel ist für beide Maschinen identisch. Also Key auf einer Maschine erzeugen und dann mit SSH rüberkopieren.

Routen musst Du dann manuell hinzufügen. Ich mach das mit quagga.
 
Oben