2011
02.15

Hverdagens problemstillinger stiller i højere grad krav til at vi kan få fat i de informationer, som vi har brug for på de tider vi har brug for dem. VPN = “Virtual Private Network” er en måde at kunne få fat i netop det vi ønsker, når vi ønsker det. Lad os eksempelvis sige at du sidder på arbejde og vil hente noget fra din NAS-disk, hurtigt lige tjekke dit IP-kamera – eller måske logge ind på din hjemme computer via RDP, VNC eller andet. Her kommer VPN ind i billedet. For der er ikke mange, der ønsker at have deres internet-services direkte ude på nettet uden nogen former for beskyttelse. Cisco leverer nogle gode VPN-løsninger – de har deres gamle VPN-klient kendetegnet med den gule hængelås – og sidste år lancerede de AnyConnect, som er en VPN direkte integreret i deres ASA-firewalls. Problemet med Cisco-udstyr er somregelt at det er dyrt at købe cisco-licenser og cisco-grej, hvorfor Cisco for det private segment ikke er så interessant. OpenVPN er en direkte konkurrent til Cisco’s VPN-løsninger, som udemærker sig ved at være gratis. Jeg vil nedenstående beskrive, hvordan jeg satte VPN op gratis på min Buffalo WZR-G300NH dd-wrt modificerede router. Denne guide kræver basal viden i brugen af DD-WRT.

Først skal der laves certifikater.

Vi starter med at hente seneste stabile udgave af OpenVPN til windows. Hent og installer OpenVPN fra http://openvpn.net/index.php/open-source/downloads.html#latest-stable

Vi skal til serveren bruge 4 filer : ca.crt , dh.pem , cert.pem og key.pem

Til klienten skal vi bruge 3 filer: ca.crt,client.crt og client.key

Start MS-DOS-Prompt (start -> kør -> cmd)

Naviger til C:\<>\OpenVPN\easy-rsa via “cd” kommandoen. (<> er i mit tilfælde Programmer – udskift med din Programmer-folder)

skriv: init-config og tryk enter

Rediger vars.bat i “easy-rsa”-folderen med din yndlingseditor – indtast korrekte informationer – og gem filen.

Ret samtlige .bat filer til, så openssl bliver den fulde sti til openssl (eller eksporter path til openssl i environment) – I mit tilfælde rettede jeg openssl i samtlige bat-filer til: C:\Programmer\OpenSSL\bin\openssl.exe

Herefter kører du i din commandprompt følgende kommandoer:

vars
clean-all
build-ca

(Under build-ca bliver certifikatet lavet – det er her ekstremt vigtigt at du skriver “OpenVPN-CA” under Common Name)

Efterfølgende skal vi have genereret et certifikat for serveren og en private.key for serveren:

Følgende kommandoer køres i prompten:

vars
build-key-server server

vi har nu alt, som vi skal bruge for serveren (dd-wrt routeren) og går nu igang med client-certifikatet:

du kører derfor kommandoerne:

vars
build-key client

Til sidst skal vi have lavet Diffie Hellman parameters for serveren og klienten.

Kommandoerne eksekveres:

vars
build-dh

Samtlige filer skulle nu gerne være i “C:\Programmer\OpenVPN\easy-rsa\keys”-folderen

OpenVPN aktiveres i DD-WRT routeren

Gå ind i fanen Services -> VPN -> Start OpenVPN Daemon (enabled) – vælg system som startop metode.

Nu skal indholdet fra de 3 serverfiler og den ene klient nøgle placeres rigtigt i dd-wrt-gui’en. indsæt billede. Afslut med Save og Apply.

Det er også vigtigt at få konfigureret VPN’en rigtigt. Min router er konfigureret som gateway på 10.0.1.0 – og har altså selv ip’en 10.0.1.1 . Konfigurationen tager udgangspunkt i at VPN-klienterne vil få ip’er tildelt i 10.0.10.0-området:

push "route 10.0.1.0 255.255.255.0"
server 10.0.10.0 255.255.255.0
dev tun0
proto tcp-server
keepalive 10 600
dh /tmp/openvpn/dh.pem
ca /tmp/openvpn/ca.crt
cert /tmp/openvpn/cert.pem
key /tmp/openvpn/key.pem
management localhost 5001

Det er vigtigt at management-porten er 5001, idet DD-WRT gui’en ellers ikke virker.

Afslutningsvis skal Firewall-regler tilføjes til DD-WRT.

Det gøres under administration -> commands

iptables -I INPUT 1 -p tcp --dport 1194 -j ACCEPT
iptables -I INPUT -p tcp --dport 1194 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 1 --source 10.0.10.0 -j ACCEPT
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT

Genstart routeren. (Grunden til at jeg vælger at bruge tcp er, at jeg har erfaret at udp ikke virker over mobilt bredbånd – se min artikel omkring det)

Opsætning af klient

Vi skal nu opsætte klienten. Installer derfor samme pakke, som ovenfor på den enhed du ønsker at forbinde med.

Naviger herefter til din installationsmappe – og bevæg dig ind i config-mappen.

Vi skal nu have lavet din OpenVPN-konfiguration

Lav en fil med din editor og navngiv den client.ovpn – filen skal indeholde:

client
dev tun
dev-node OpenVPN      <-- Det er vigtigt at du her navngiver dev-node dét, som din netkort-adapter hedder.
proto tcp
remote <> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
verb 3

læg de 3 filer i config-mappen ca.crt, client.crt og client.key

Du skulle nu ved højreklik på client.ovpn-filen – og et valg af “Start OpenVPN with this config-file” være i stand til at forbinde dig til dit LAN gennem VPN’en.

title=

2 comments so far

Add Your Comment
  1. FIn beskrivelse dog får jeg en fejl under build-ca: WARNING: can’t opem config file: c:\openssl\ssl\openssl.cnf.
    Jeg har rettet stien som du beskriver til c:\pogrammer\openvpn\bin\openssl.exe
    Har hentet ver. 2.2. Er der ver. 2.14 du har brugt?

  2. Hej Ole

    Jeg kan se at min openvpn-version har været 2.14 – men jeg regner bestemt ikke med at dette er grunden til at build-ca ikke kan åbne config-filen i dit tilfælde.
    Istedet formoder jeg grunden skyldes at settings i din vars.bat-ikke stemmer overens med din maskines konfiguration. Her tænker jeg på:

    set HOME=%ProgramFiles%\OpenVPN\easy-rsa
    set KEY_CONFIG=openssl.cnf

    Da jeg lavede guiden pegede min %ProgramFiles på C:\Programmer , men på din maskine peger %ProgramFiles nok på C:\Program Files (X86)\
    Det er nok her årsagen ligger.
    Du kan bare erstatte %ProgramFiles% med den korrekte sti – så burde ALT virke efter hensigten.
    Hvis du er interesseret i at vide, hvor %ProgramFiles% peger, kan du åbne en msdosprompt og skrive: echo %ProgramFiles% – så får du den sti, som %ProgramFiles% peger på.

    Med venlig hilsen
    Asger

*