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.

2011
02.06

Jeg satte idag en OpenVPN-forbindelse op – hvilket som standard er en service, der kører over UDP. Min tanke var at UDP var klart det mest effektive, idet routen imellem 2 umiddelbart stabile danske links ikke burde have brug for tcp’s retransmissioner. Jeg havde sat OpenVPN op på min router – og ville teste med mit 3-modem (3G-stick). Det besynderlige var, at jeg fik vildt dårlige resultater – i nogle perioder kunne jeg pinge en adresse på LAN’et – andre gange kunne jeg ikke. Asynkrone forbindelser kunne slet ikke håndteres – og jeg tænkte at noget måtte være HELT galt. Jeg prøvede forskellige ting – ændrede MTU, tjekkede routing etc. Da jeg efter lang tid uden held fik fik en idé om at sætte OpenVPN til at køre TCP istedet for UDP, gav det resultater. Forbindelsen var nu stabil – og min konklusion er derfor at 3g-netværk ikke egner sig til UDP-trafik. Jeg tænkte om jeg mon var den eneste, der havde opdaget dette issue med 3g forbindeler – og en google-søgning bekræftede mig i at det tilsyneladende er et reelt problem – tjek selv: http://lmgtfy.com/?q=UDP+in+3g+network . Det er underligt at der ikke har været mere debat om dette problem. Jeg har ALDRIG hørt at det skulle være et problem – er der andre, der har lignende erfaringer med netop dette problem ?

2011
02.06

For at få flere internationale læsere har jeg besluttet fremover at oversætte nogle af mine indlæg til engelsk. Jeg kan på mine statistikker se at jeg har besøgende fra mange forskellige dele af verden, hvorfor jeg tænker at det er en idé at oversætte de artikler, der også henvender sig til det internationale.