PDA

Bekijk de volledige versie : Hilfe beim Einrichten einer VPN Bridge



tobitobsen
05-02-2008, 21:35
Hiho!
Ich brauche etwas Hilfe zu OpenVpn! - Irgendwie bin ich zu doof um die VPN Bridge einzurichten.
Folgendes will ich erreichen:
Via Dyndns eine VPN-Verbindung zum Router aufbauen und danach im VPN-Netzwerk arbeiten, als sei ich zu Hause im Lan/W-Lan. Also Vollzugriff aufs komplette Netzwerk via VPN

Im Lan/W-Lan kann ich mit dem Server verbinden.
Aber wenn ich in der Client-Config anstatt der IP den Dyndns-Namen eintrage ist es vorbei.
Fehlermeldung:
Tue Feb 05 22:19:01 2008 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
Tue Feb 05 22:19:01 2008 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Tue Feb 05 22:19:01 2008 TAP-WIN32 device [LAN-Verbindung* 16] opened: \\.\Global\{CA6CE140-BE9E-4DC3-8748-E339336DEE02}.tap
Tue Feb 05 22:19:01 2008 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.8.0.2/255.255.255.252 on interface {CA6CE140-BE9E-4DC3-8748-E339336DEE02} [DHCP-serv: 10.8.0.1, lease-time: 31536000]
Tue Feb 05 22:19:01 2008 Successful ARP Flush on interface [29] {CA6CE140-BE9E-4DC3-8748-E339336DEE02}
Tue Feb 05 22:19:01 2008 UDPv4 link local (bound): [undef]:1194
Tue Feb 05 22:19:01 2008 UDPv4 link remote: 85.183.217.104:1194
Tue Feb 05 22:19:11 2008 TCP/UDP: Incoming packet rejected from 192.168.1.1:1194[2], expected peer address: 85.183.217.104:1194 (allow this incoming source address/port by removing --remote or adding --float)


Aber davon abgesehen muss man wohl für eine VPN-Bridge den Server und die Firewall entsprechend anpassen. Leider ist das OPEN-VPN Wiki an der Stelle 'zu hoch' für mich.
Kann mir das jemand 'für doofe' ;) Step by Step erklären?

fakehero
11-02-2008, 13:57
Ja da kann ich mich nur anschließen. Also wichtig zu wissen wäre, was du überhaupt benutzt. Gerät, openvpn Version etc... Und wie hast du die Bridge, bzw. das Bridge-Start-Script überhaupt konfiguriert? (ifconfig ... etc)

Ich habe hier einen 500gP mit dem neusten OpenVPN am laufen, hab mir auch schon etliche Beiträge hier durchgelesen, HowTo's etc. aber es hakt schon bei den Interfaces, die angezeigt bekomme. Oft wird eine br0 erzeugt, die ich allerdings schon habe und ferner gibt es bei mir auch kein eth2...

Ich werde mal meine momentane "Sachlage" hier schildern - vielleicht bekommen wirs ja zusammen hin. Oder kann irgendjemand uns helfen??

#ifconfig gibt mir folgendes:
br0 Link encap:Ethernet HWaddr 00:17:31:E7:58:1F
inet addr:192.168.234.1 Bcast:192.168.234.255 Mask:255.255.255.0
inet6 addr: fe80::217:31ff:fee7:581f/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:569 errors:0 dropped:0 overruns:0 frame:0
TX packets:3235 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:49519 (48.3 KiB) TX bytes:1199827 (1.1 MiB)

eth0 Link encap:Ethernet HWaddr 00:17:31:E7:58:1F
inet6 addr: fe80::217:31ff:fee7:581f/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6237 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:1531780 (1.4 MiB)
Interrupt:4 Base address:0x1000

eth1 Link encap:Ethernet HWaddr 00:17:31:E7:58:1F
inet6 addr: fe80::217:31ff:fee7:581f/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:564 errors:0 dropped:0 overruns:0 frame:2044
TX packets:787 errors:39 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:56935 (55.6 KiB) TX bytes:143425 (140.0 KiB)
Interrupt:12 Base address:0x2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MULTICAST MTU:16436 Metric:1
RX packets:5414 errors:0 dropped:0 overruns:0 frame:0
TX packets:5414 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:602130 (588.0 KiB) TX bytes:602130 (588.0 KiB)

vlan0 Link encap:Ethernet HWaddr 00:17:31:E7:58:1F
inet6 addr: fe80::217:31ff:fee7:581f/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6000 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:1392554 (1.3 MiB)

vlan1 Link encap:Ethernet HWaddr 00:17:31:E7:58:1F
inet6 addr: fe80::217:31ff:fee7:581f/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:235 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:139078 (135.8 KiB)

#brctrl showbr br0 sagt mir:

br0
bridge id 8000.001731e7581f
designated root 8000.001731e7581f
root port 0 path cost 0
max age 20.00 bridge max age 20.00
hello time 2.00 bridge hello time 2.00
forward delay 0.00 bridge forward delay 0.00
ageing time 42.30 gc interval 4.00
hello timer 0.17 tcn timer 0.00
topology change timer 0.00 gc timer 2.16
flags


vlan0 (1)
port id 8001 state forwarding
designated root 8000.001731e7581f path cost 100
designated bridge 8000.001731e7581f message age timer 0.00
designated port 8001 forward delay timer 0.00
designated cost 0 hold timer 0.17
flags

eth1 (2)
port id 8002 state forwarding
designated root 8000.001731e7581f path cost 100
designated bridge 8000.001731e7581f message age timer 0.00
designated port 8002 forward delay timer 0.00
designated cost 0 hold timer 0.17
flags

br0 versteh ich also als die Brücke zwischen den LAN Clients und den WLAN Clients. Wenn ich jetzt den tap0 device hinzufüge geht gar nichts mehr; damit lande ich soweit ich das richtig verstehe in diesem routing loop...
Ich hab auch schon versucht eine br1 zu erstellen, wie beschrieben zwischen eth0 und tap0, aber ich glaube eher bei der Variante ist die Kiste abgeschmiert.
Ich bekomm nicht in den Kopf, zwischen welchen Adaptern ich die Brücke machen muss. Wenn ich eth0 als das komplette LAN verstehen darf, würde das ganze Sinn machen. Ich möchte ja schließlich, dass alle sich sehen können, also WLAN Clients, die Clients per Kabel und natürlich alle VPN-Clients. Dann müsste ich doch eine Brücke zwischen eben diesem Adapter (eth0) und dem TAP herstellen...??! Per Befehl:

nvram show | grep "eth0"

bekomme ich "primary_ifname=eth0" - dann versteh ich aber nicht, warum es die br0 gibt, und warum mir der Kontakt zur Kiste abschmiert. Firewall ist auf meinem Gerät auch noch nicht vorhanden, also daran kann es nicht liegen. Ich bekomm irgendwie Knotem im Hirn...

tobitobsen
11-02-2008, 18:11
Also ich 'versuche' openvpn auf nem W-500g zum laufen zu bringen.

meine config


br0 Link encap:Ethernet HWaddr 00:11:D8:24:66:0C
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::211:d8ff:fe24:660c/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20082 errors:0 dropped:0 overruns:0 frame:0
TX packets:19990 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5559171 (5.3 MiB) TX bytes:11086091 (10.5 MiB)

eth0 Link encap:Ethernet HWaddr 00:11:D8:24:66:0C
inet6 addr: fe80::211:d8ff:fe24:660c/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:74707 errors:0 dropped:0 overruns:0 frame:0
TX packets:81748 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:66827133 (63.7 MiB) TX bytes:34525394 (32.9 MiB)
Interrupt:3 Base address:0x2000

eth1 Link encap:Ethernet HWaddr 00:11:D8:24:66:0C
inet6 addr: fe80::211:d8ff:fe24:660c/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14350 errors:0 dropped:0 overruns:0 frame:0
TX packets:10046 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:6926605 (6.6 MiB) TX bytes:1523151 (1.4 MiB)
Interrupt:4 Base address:0x8000

eth2 Link encap:Ethernet HWaddr 00:11:D8:24:66:0C
inet6 addr: fe80::211:d8ff:fe24:660c/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:54072 errors:0 dropped:0 overruns:0 frame:10456
TX packets:117095 errors:8 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:29675459 (28.2 MiB) TX bytes:79549026 (75.8 MiB)
Interrupt:6 Base address:0x2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MULTICAST MTU:16436 Metric:1
RX packets:51045 errors:0 dropped:0 overruns:0 frame:0
TX packets:51045 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4326138 (4.1 MiB) TX bytes:4326138 (4.1 MiB)

ppp0 Link encap:Point-Point Protocol
inet addr:XX.XXX.XX.XXX P-t-P:XXX.XXX.X.X Mask:255.255.255.255
UP POINTOPOINT RUNNING MULTICAST MTU:1492 Metric:1
RX packets:10085 errors:0 dropped:0 overruns:0 frame:0
TX packets:5788 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:6391409 (6.0 MiB) TX bytes:1267927 (1.2 MiB)

tun0 Link encap:Point-Point Protocol
inet addr:10.8.0.2 P-t-P:10.8.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


tun0 ist die virtuelle VPN-karte

server.conf:


dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key
push "route 192.168.1.0 255.255.255.0"


post-firewall


#!/bin/sh
#SSH OpenVPN WEB-Port80->70 access from WAN
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -t nat -A PREROUTING -i $1 -p tcp --dport 22 -j DNAT --to-destination $4:22
iptables -t nat -A PREROUTING -i $1 -p tcp --dport 80 -j DNAT --to-destination $4:70
iptables -t nat -A PREROUTING -i $1 -p udp --dport 1194 -j DNAT --to-destination $4:1194
iptables -t nat -A PREROUTING -i br0 -p udp --dport 1194 -j DNAT --to-destination $4:1194
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -j DROP

folgendes problem:
die firewallregeln hab ich aus dem howto von sprayfly - seit dem kann ich noch nicht mal mehr aus dem lan eine vpn-verbindung öffnen :eek:

von extern geht gar nix.
die umleitung von "ppp0 port 80" auf "router lokal port 70" für den WWW-server geht übrigens auch nicht :( wird wohl ein grundsätzlicher fehler sein...

Also was versteckt sich hinter den ganzen netzwerkanschlüssten br0 und eth-x??
und wie leite ich die ports richtig um??

tobitobsen
12-02-2008, 17:40
Ok - VPN ist wohl nen spezialgebiet - aber das routing kann doch bestimmt einer ;) *push*

fakehero
14-02-2008, 10:45
hmm deinem Post zufolge stellst du ja so aber keine Bridge her! Um eine Bridge zu machen musst du den TAP Device nehmen und nicht den TUN. Finde es dennoch merkwürdig, dass du den tun0 bei ipconfig hast. Unter /dev/net/ hab ich auch den tun, aber er wir mir nicht in ipconfig angezeigt...
So häng mich jetzt noch mal ran... dieses Thema bereitet einem echt Kopfschmerzen...
edit: mach die Firewall doch erst mal komplett aus - wenn dann alles klappt würd ich sie erst einschalten...

WLAN-Fan
14-02-2008, 12:26
Hi,

würde mich auch interessieren wie das geht.

Da hier die Frage mit den br und eth aufgetreten ist habe ich hier mal ein paar Bilder.

So und hier ein eng Tutorial. Wenn euch das was nützt könnt ihr ja hier im Forum dan die Lösung in deutsch verfassen. Frei nach dem Motto "Nehmen und Geben" :cool: .

WL-HDD OpenVPN Tutorial (englisch) (http://www.sprayfly.com/wiki/OpenVPN)

HowTo install OpenVPN Server (englisch) (http://wl500g.info/showthread.php?t=5312&highlight=VPN+HowTo)

Howto openVPN (deutsch) (http://wl500g.info/showthread.php?t=4189)
leider nicht wirklich ein komplettes HowTo :( , eventeull könnte das ja dann mal tund gemacht werden.

Noch ein Tip: nachdem das OpenVPN-Paket mit ipkg installiert wurde, müssen einige Sachen eingerichtet werden damit openvpn starten kann. Bei mir sieht das so aus (http://wl500g.info/showpost.php?p=26130&postcount=8):



# Make device if not present (not devfs)
if ( [ ! -c /dev/net/tun ] ) then
# Make /dev/net directory if needed
if ( [ ! -d /dev/net ] ) then
mkdir -m 755 /dev/net
fi
mknod /dev/net/tun c 10 200
fi

# Make sure the tunnel driver is loaded
if ( !(lsmod | grep -q "^tun") ); then
insmod tun.o
fi


## This is for standalone servers only!!!!
# Kill old server if still there
if [ -n "`pidof openvpn`" ]; then
killall openvpn 2>/dev/null
fi


Danach muss dann das Tunnel-Device erzeugt und der Bridge hinzugefügt werden:



openvpn --mktun --dev tap0

brctl addif br0 tap0

ifconfig tap0 0.0.0.0 promisc up


Danach sollte es dann schon fast funktionieren :-) Wenn eine entsprechende OpenVPN-Konfiguration vorhanden ist, kann mit



openvpn --daemon --cd /opt/etc/openvpn --config openvpn.conf


der OpenVPN-Server gestartet werden.

Da, wie gesagt, meine Netzwerkkonfiguration eine völlig andere ist, kann ich keine fertigen Lösungen anbieten. Der beschriebene Weg sollte aber der einigermaßen funktionieren.
Gruß WLAN-Fan.

thE_29
14-02-2008, 12:49
So, WLAN-Fan hat mich über ICQ aktiviert, da ich zZ kaum Zeit für andere Sachen außer Arbeit habe!

Ich gehe mal davon aus, das ihr die certs, etc.. alles nachdem HowTO erstellt habt!

Gleich mal vorweg:
Ich arbeite im 192.168.0.0 Subnetz und meine Router IP ist 192.168.0.1
Ich leite vpn über Port 9929 weiter!

Hier die openvpn.conf für den Server (liegt danach in /opt/etc/openvpn/)


mode server
tls-server
ifconfig-pool 192.168.0.70 192.168.0.90 255.255.255.0
verb 3
port 9929
proto udp
dev tap0
ca /opt/etc/openvpn/easy-rsa/keys/ca.crt
cert /opt/etc/openvpn/easy-rsa/keys/server.crt
key /opt/etc/openvpn/easy-rsa/keys/server.key # This file should be kept secret
dh /opt/etc/openvpn/easy-rsa/keys/dh1024.pem

Hier die start/stopp Datei (/opt/etc/init.d/S20openvpn)


#!/bin/sh
#
# Startup script for openvpn as standalone server
#
# Make sure IP forwarding is enabled
echo 1 > /proc/sys/net/ipv4/ip_forward

# Make device if not present (not devfs)
if ( [ ! -c /dev/net/tun ] ) then
# Make /dev/net directory if needed
if ( [ ! -d /dev/net ] ) then
mkdir -m 755 /dev/net
fi
mknod /dev/net/tun c 10 200
fi

# Make sure the tunnel driver is loaded
if ( !(lsmod | grep -q "^tun") ); then
insmod /opt/lib/modules/tun.o
fi

# I you want a standalone server (not xinetd), comment out the return statement below
# return 0


## This is for standalone servers only!!!!
# Kill old server if still there
if [ -n "`pidof openvpn`" ]; then
/bin/killall openvpn 2>/dev/null
fi
brctl delif br0 tap0
openvpn --rmtun --dev tap0

# create tap adatper
openvpn --mktun --dev tap0

# bridge the tap device with existing br0
brctl addif br0 tap0
/sbin/ifconfig -a tap0 192.168.0.1


# Start afresh - add as many daemons as you want
echo starting openvpn
/opt/sbin/openvpn --daemon --cd /opt/etc/openvpn --log-append /opt/var/log/vpn/openvpn.log --config openvpn.conf

# [EOF]

Probiert mal /opt/etc/init.d/S20openvpn & zu sagen und schaut euch die openvpn.log an, ob der Server sauber hoch kommt!


Ich habe dann noch einen Router mit dd-wrt oben und hier sieht die client conf so aus:


client
dev tap0
remote <host> 9929
ifconfig-noexec
resolv-retry infinite
nobind
persist-key
ca /jffs/etc/ca.crt
cert /jffs/etc/client.crt
key /jffs/etc/client.key
ns-cert-type server
float

Ich musste ifconfig-noexec sagen, da vpn meinte, ifconfig liefert im dd-wrt nen falschen Wert zurück und es hat sich beendet!

Hier noch das startup für den client im dd-wrt:

openvpn --mktun --dev tap0

brctl addif br0 tap0
ifconfig tap0 192.168.0.80 promisc up
ip route add 192.168.0.0/24 dev br0

sleep 1
openvpn --config /jffs/etc/client.ovpn &
Dadurch das ich dem tap0 Adapter MANUELL die Adresse zuweise, braucht ifconfig im openvpn auch nicht gesetzt werden (und dadurch klappt das ifconfig-noexec!!)

Hier die client unter Windows:

client
dev tap
remote <host> 9929
nobind
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
float

Wie gesagt, wenn ihr die certs usw, erstellt hat, müsste das ganze so Tip Top laufen (achja, die FW Regel nicht vergessen)

Mein DD-WRT Router stellt die VPN Verbindung zum Asus Oleg Router her und somit muss ich mich unter Windows net mal ins VPN einwählen ;) (also die 2 Netze sind immer verbunden)


Nachtrag: hier meine Konfig: http://www.777kb.com/vimg/router_vpn_config1.png

Ich könnte zwar direkt vom Firmen PC auf den Router in der Wohnung gehen, aber auf dem Asus hängt noch der FTP Server, etc.. Desweiteren läuft der Router in der Wohnung nicht dauernd! Der im Elternhaus aber schon!

fakehero
14-02-2008, 16:34
Also ich frag mich grade, was ich hier für ein Gerät stehen hab. Es ist weiß, 32MB Ram und Premium steht drauf - kein eth2 und vlan0 ist definitiv meine WAN Schnittstelle. Aber gut - Theorie ist ja dieselbe.
Hab die S20opvenvpn jetzt genau wie thE_29 und zumindest wird openvpn jetzt bei den Prozessen wieder angezeigt nach einem Neustart. Warum bleibt mir schleierhaft, da ich lediglich den "brctl addif br0 tap0" Befehl und die manuelle IP Vergabe hinzugefügt habe (was meinem Verständnis nach das Bridgestart-Script ersetzt -> ¿). Jenes hatte ich vorhin auch mal angepasst, nichts groß verändert, ist ausführbar aber er meint "not found" - obwohl ich im selben Verzeichnis bin & er mir über drücken der Tap-Taste das Script vervollständigt. Über ifconfig bekomme ich auch kein tap0 device und in der br0 wird auch nichts angezeigt. Langsam habe ich das Gefühl das Mistding mag mich nicht ôÔ :)

Bei der Zertifikaterstellung bekomme ich auch Fehler, obwohl die Zertifikate erstellt werden.
clean-all -> Pfad nicht gefunden aber die Dateien werden kopiert -> klar
build-ca -> selbiges
dh -> unable to write "random state"
build-key-server -> selbiges

ich werde jetzt erstmal abwarten bis wir endlich wieder unseren Internetanschluss bekommen, und da macht die Telekom grade Zicken... So macht das aber gerade nicht sooo viel Sinn weiterzumachen. ^^

tobitobsen
14-02-2008, 17:15
vielen dank, dass ihr euch mit dem problem befasst habt.

Ich hab bei mir alles nach dem englischen howto eingerichtet. also auch mit der key. datei. nicht mit cert und co..

die 'bridge' , so hab ich das im OpenVPN-wiki gefunden kann man mit
push "route 192.168.1.0 255.255.255.0" darstellen
Lokal funktioniert der verbindungsaufbau ja - nur eben von extern nicht. - gar nicht.

Da ich, wenn ich meine dyndns-adresse aufrufe auch nicht auf port 70 (php webserver auf dem router) rauskomme, sondern im config-web-if!!!!!!! hab ich das gefühl, das dem router die portweiterleitung am ar*** vorbei geht.
Daher meine frage nach der bedeutung von br0, eth0, usw...
nur finde ich den fehler beim routing einfach nicht :(

thE_29
15-02-2008, 09:38
Dieses push route ist nur dann notwendig (und sinnvoll), wenn du 2 verschiedene Netze bridgen willst!

Wenn du aber die konfig schon immer aufs gleiche Netz machst, ist es unnötig!


Wir kommentieren #push "route 192.168.0.0 255.255.255.0" im Server Script aus, dadurch hat der OpenVPN Client zugriff auf das komplette interne Netzwerk 192.168.0.0/24, dabei sollten wir beachten das das Netzwerk vom Server nicht das selbe ist wie das vom OpenVPN Client.