Hatte dies Openvpn Konfiguration schon mal wer?

eca31112

Neuer User
Mitglied seit
29 Okt 2006
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Hallo Leute,

ich setze seit einiger Zeit schon openvpn mit zertifikaten zwischen zwei boxen recht erfolgreich ein. jetzt möchte ich es etwas erweitern und verbessern. und zwar soll sich ein pc zusätzlich auf den server einwählen können.

Code:
--------------------------------[Internet]---------------------------------------------
            192.168.200.1                   192.168.200.2		       192.168.200.3 	  
            192.168.178.1                               192.168.2.1               (Notebook)
        7170 als VPN Server               (7050 als Client )
              |  |  |  |                                  | 
       +------+  |  |  +------+                  +----+----PC-2 192.168.2.22 
       |                   |                             |                 		 
     PC-1                 PC-2                     PC-1                        
192.168.178.9         192.168.178.10       192.168.2.21

Meine aktuelle "TEST" Serverconfig sieht wie folgt aus:
Code:
# OpenVPN v2.0.5 config:
####################################################
# Authentifizierung und Verschluesselung
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem

auth SHA1
cipher AES-256-CBC

;duplicate-cn

####################################################
# Grundsaetzliches
port 1194
proto tcp-server
dev tun
dev-node /var/tmp/tun

####################################################
# Server-Einstellungen
mode server                           #kommentieren wenn kein multiclient 
tls-server
client-to-client
server 192.168.200.0 255.255.255.0     #kommentieren wenn kein multiclient
;ifconfig 192.168.200.1 192.168.200.2  #auskommentieren wenn kein multiclient
ifconfig-pool-persist ipp.txt  # assign right IP-Addresses (optional)
;mssfix 

#server:
#Routen setzen, bei route Subnetz des Clients
# bei push Subnetz des eigenen Servers eintragen
route 192.168.2.0 255.255.255.0
push "route 192.168.178.0 255.255.255.0"
;push "redirect-gateway"

#client:
#Routen setzen, bei route Subnetz der Server-Box
# bei push Subnetz der eignen Client-Box eintragen
;route 192.168.178.0 255.255.255.0
;push "route 192.168.2.0 255.255.255.0"
#iroute 192.168.2.0 255.255.255.0

# Don't close and reopen TUN/TAP device or run up/down 
# scripts across SIGUSR1 or --ping-restart restarts.
persist-tun 
persist-key
# Change process priority after initialization 
# n>0 : lower priority; n<0 : higher priority).
nice 1

####################################################
# Verbindung aufrecht halten
#-- Server:
ping 10
ping-restart 60


#-- Client:
push "ping              15" # keep firewall open
push "ping-restart      60" # 1 minute
push "resolv-retry      infinite"

####################################################
## Enable compression
## server & client entry must be the same!
comp-lzo

####################################################
# Protokollierungseinstellung
verb 3
#log ./log/status.log

####################################################
# Daemon (Wenn alles funktioniert)
#daemon

####################################################
#Allow remote peer to change its IP address and/or port number, such as due to DHCP
# float tells OpenVPN to accept authenticated packets from any address, not only the 
# address which was specified in the --remote option.
float

und die client config der fritzbox 7050:
Code:
# OpenVPN v2.0.5 config:
####################################################
# Authentifizierung und Verschluesselung
ca ca.crt
cert client1.crt
key client1.key

auth SHA1
cipher AES-256-CBC

####################################################
# Grundsaetzliches
dev tun
proto tcp-client
#for 2.4: dev-node /dev/misc/net/tun
# for 2.6:
#do not forget to insert onto shell: mknod /var/tmp/tun c 10 200
dev-node /var/tmp/tun

;nobind


####################################################
# Client-Einstellungen
tls-client
ns-cert-type server #for OVP2.0 and below: check the server.crt
ifconfig 192.168.200.2 192.168.200.1
pull    # Fetch configuration from Server


####################################################
# Server-Einstellungen
remote meinserver.de 1194    #Server IP/URI und evtl. port anpassen

####################################################
## Enable compression
## server & client entry must be equal!
comp-lzo

####################################################
# Protokollierungseinstellung
verb 3

####################################################
# Daemon
daemon #ausf³hrung im Hintergrund

#server:
#Routen setzen, bei route Subnetz des Clients
# bei push Subnetz des eigenen Servers eintragen
;route 192.168.2.0 255.255.255.0
;push "route 192.168.178.0 255.255.255.0"


#client:
#Routen setzen, bei route Subnetz der Server-Box
# bei push Subnetz der eignen Client-Box eintragen
;route 192.168.178.0 255.255.255.0
;push "route 192.168.2.0 255.255.255.0 10.0.0.1"


# Don't close and reopen TUN/TAP device or run up/down
# scripts across SIGUSR1 or --ping-restart restarts.
persist-tun

# Don't re-read key files on reconnect
persist-key

# Change process priority after initialization
# n>0 : lower priority; n<0 : higher priority).
nice 1

####################################################
# Verbindung aufrecht halten
;ping 10
;ping-restart 60

Mein Problem ist, dass wenn ich auf Multiclient umschalte folgende Fehlermeldung beim ping von pc1 des clientnetzwerks auf den server bekomme:
MULTI: bad source address from client [192.168.2.21] packed dropped

Hat jemand eine Idee? Hab schon viel gesucht auch auf openvpn.org.

Ach ja, ich setzte bei beiden Boxen den 2.6 Kernel ein. Die OpenVpn Version ??

Ich hab schon mehrmals gelesen, dass diese Konfiguration schwierig zu realisieren ist. Hat es schon jemand am laufen? Und wenn ja, was mache ich falsch.

Grüße,
Andreas
 
Hi,

bei multiclient muss der Server "wissen", ob und welche Netze "hinter einem Client" liegen. Dafür gibt es neben den "normalen" Routingbefehlen die "internen" Routingbefehle des openvpn "iroute".

The reason why two routes are needed is that the --route directive routes the packet from the kernel to OpenVPN. Once in OpenVPN, the --iroute directive routes to the specific client.
This option must be specified either in a client instance config file using --client-config-dir or dynamically generated using a --client-connect script.

Was du also brauchst ist ein sogenanntes "client-config-dir", was dann je Client eine Datei enthält. In der Server-Config steht dann z.B.:

Code:
topology subnet
client-config-dir /var/tmp/ovpn

In diesem Verzeichnis steht dann z.B., wenn die Clientbezeichnungen im Zertifikat "client01" und "client02" heißen:
Code:
/var/tmp/ovpn $ cat client01
ifconfig-push 192.168.200.2 255.255.255.0
push "topology subnet"
iroute  192.168.2.0 255.255.255.0

/var/tmp/ovpn $ cat client02
ifconfig-push 192.168.200.3 255.255.255.0
push "topology subnet"

Für Windows-Client benötigst du dabei "topology subnet", was erst ab OpenVPN 2.1 existiert.

[werbung]mit der neusten GUI für den ds-mod geht das auch "out of the Box", mit dem angehängten Makefile in make\openvpn\openvpn.mk (siehe auch hier). [/werbung]

Jörg
 

Anhänge

  • openvpn.zip
    1.4 KB · Aufrufe: 8
Zuletzt bearbeitet:
Hab das gerade ausprobiert. Bei meinem client kommt jetzt bei Verbindungsaubau folgende Fehlermelung
Sat Jan 19 13:36:14 2008 SENT CONTROL [Server]: 'PUSH_REQUEST' (status=1)
Sat Jan 19 13:36:14 2008 PUSH: Received control message: 'PUSH_REPLY,route 192.1
68.178.0 255.255.255.0,topology subnet,ping 15,ping-restart 60
,resolv-retry infinite,route-gateway 192.168.200.1,topology subnet,topology
subnet,ifconfig 192.168.200.2 192.168.200.1'
Sat Jan 19 13:36:14 2008 Options error: option 'resolv-retry' cannot be used in
this context
Sat Jan 19 13:36:14 2008 OPTIONS IMPORT: timers and/or timeouts modified
Sat Jan 19 13:36:14 2008 OPTIONS IMPORT: --ifconfig/up options modified
Sat Jan 19 13:36:14 2008 OPTIONS IMPORT: route options modified
Sat Jan 19 13:36:14 2008 OPTIONS IMPORT: route-related options modified
Sat Jan 19 13:36:14 2008 TUN/TAP device tun0 opened
Sat Jan 19 13:36:14 2008 TUN/TAP TX queue length set to 100
Sat Jan 19 13:36:14 2008 /sbin/ifconfig tun0 192.168.200.2 netmask 192.168.200.1
mtu 1500 broadcast 255.255.255.254
SIOCSIFNETMASK: Invalid argument
Sat Jan 19 13:36:14 2008 Linux ifconfig failed: shell command exited with error
status: 1
Sat Jan 19 13:36:14 2008 Exiting

und bricht ab. Ideen? Evtl. mal eine andere openvpn version testen? wie kann ich denn in erfahrung bringen welche version ich habe?

Edit: hab meine Version gefunden: auf dem client+server: Sat Jan 19 13:36:06 2008 OpenVPN 2.1_rc4 mipsel-linux [SSL] [LZO2] [EPOLL] built on Sep 26 2007

Danks schon mal.

Andreas
 
... Sorry, mein Beispiel war verkehrt, (das war für ein "Point-to-Point" Bespiel). Da müsste stehen
Code:
ifconfig-push 192.168.200.2 255.255.255.0

bzw

ifconfig-push 192.168.200.3 255.255.255.0
(Hinten die Netzwerkmaske, nicht die IP der Gegenstelle)

Jörg
 
hab dies jetzt geändert. hätte ich eigentlich selber drauf kommen können.

dies hat aber mein problem nicht gelöst. ich denke die route passt noch nicht.
auf dem server bekomme ich folgende ausgabe:

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.180.1 * 255.255.255.255 UH 2 0 0 dsl
192.168.180.2 * 255.255.255.255 UH 2 0 0 dsl
192.168.178.0 * 255.255.255.0 U 0 0 0 lan
192.168.178.0 * 255.255.255.0 U 0 0 0 eth0
192.168.200.0 * 255.255.255.0 U 0 0 0 tun0
169.254.0.0 * 255.255.0.0 U 0 0 0 lan
default * 0.0.0.0 U 2 0 0 dsl

wie bekommem ich die fehlende auf meine 192.168.2.0 in die tabelle? eigenlich sollte diese doch über ifconfig-push eingetragen werden.
 
... Ich wusste schon, warum ich mir das immer über die GUI bauen lasse, so vergesslich wie ich bin ;-)
Nimm noch das "route 192.168.2.0 255.255.255.0 192.168.200.2" mit in die Config im Config-dir auf:

Code:
ifconfig-push 192.168.200.2 255.255.255.0
push "topology subnet"
iroute  192.168.2.0 255.255.255.0
route 192.168.2.0 255.255.255.0 192.168.200.2

Jörg
 
Hallo Jörg,
hab es mit aufgenommen und jetzt noch ein bisschen rumprobiert. Leider ohne Erfolg. Meine Routingtabelle auf dem Server sieht noch gleich aus.

hab dir mal die ausgabe vom server angehängt. ein fehler beim setzen der route ist enthalten. kann diesen aber nicht wegbekommen.

Sat Jan 19 17:48:07 2008 217.231.225.191:3184 [client1] Peer Connection Initiated with 217.231.225.191:3184
Sat Jan 19 17:48:07 2008 client1/217.231.225.191:3184 OPTIONS IMPORT: reading client specific options from: /var/tmp/client1
Sat Jan 19 17:48:07 2008 client1/217.231.225.191:3184 Options error: option 'route' cannot be used in this context
Sat Jan 19 17:48:07 2008 client1/217.231.225.191:3184 MULTI: Learn: 192.168.200.2 -> client1/217.231.225.191:3184
Sat Jan 19 17:48:07 2008 client1/217.231.225.191:3184 MULTI: primary virtual IP for client1/217.231.225.191:3184: 192.168.200.2
Sat Jan 19 17:48:07 2008 client1/217.231.225.191:3184 MULTI: internal route 192.168.2.0/24 -> client1/217.231.225.191:3184
Sat Jan 19 17:48:07 2008 client1/217.231.225.191:3184 MULTI: Learn: 192.168.2.0/24 -> client1/217.231.225.191:3184
Sat Jan 19 17:48:08 2008 client1/217.231.225.191:3184 PUSH: Received control message: 'PUSH_REQUEST'
Sat Jan 19 17:48:08 2008 client1/217.231.225.191:3184 SENT CONTROL [client1]: 'PUSH_REPLY,route 192.168.178.0 255.255.255.0,ping 15,ping-restart 60,resolv-retry infinite,route-gateway 192.168.200.1,topology subnet,topology subnet,ifconfig 192.168.200.2 255.255.255.0' (status=1)

Danke schon mal für deine Hilfe.

Grüße,
Andreas

P.S.: Vielleicht muss ich doch endlich mal auf den dsmod umsteigen. aber man will ja beim moden immer etwas lernen... ;-)
 
... sorry, ich habe nicht richtig nachgesehen. Ich habe deine Config jetzt mal "bauen" lassen:

Code:
~ $ cat /mod/etc/openvpn_Config2.conf
#  OpenVPN 2.1 Config, Sat Jan 19 20:26:03 CET 2008
proto tcp-server
dev tun
ca /tmp/flash/ca.crt
cert /tmp/flash/box.crt
key /tmp/flash/box.key
dh /tmp/flash/dh.pem
tls-server
port 1194
ifconfig 192.168.200.1 255.255.255.0
mode server
client-config-dir /var/tmp/clients_openvpn_Config2
topology subnet
max-clients  3
route 192.168.2.0 255.255.255.0 192.168.200.2
tun-mtu 1500
mssfix
verb 3
daemon
cipher BF-CBC
comp-lzo
float
keepalive 10 120
status /var/log/openvpn_Config2.log
~ $ cat /var/tmp/clients_openvpn_Config2/client_01
ifconfig-push 192.168.200.2 255.255.255.0
push "topology subnet"
iroute 192.168.2.0 255.255.255.0
~ $
... und du siehst: Der "route " Befehl gehört in die "normale" Config, nicht ins Config-Dir.

Sagt einem ja auch die man-Page zum "client-config-dir":
Code:
The following options are legal in a client-specific context: --push, --push-reset, --iroute, --ifconfig-push, and --config.

Jetzt sollte es aber gehen...

Jörg
 
Danke jetzt funktioniert es. Hab mich auch gewundert diese route in die client config einzutragen...

allerdings verstehe ich den route befehl nicht. was sagt die zweite ip adresse aus (192.168.200.2), warum auch zwei und nicht 1 (dies ist doch mein server)

Danke noch mal für deine Hilfe.

Grüße,
Andreas
 
Schon, wenn es jetzt klappt!

Das ist jetzt der "normale" Routing Eintrag mit <Ziel-Netz> <Ziel-Netzmaske> <Next-Hop>. Und zum Next-Hop 192.168.200.2 muss der Router ja die Pakete für dieses Netz Routen.
Damit bekommt es dann der "OpenVPN-Prozess", der dann intern mit der "iroute" Route den passenden Client dafür raussucht.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.