OpenVPN on pfSense - Installation guide for (Windows) Dummies :-) (road-warrior)
-
January 6, 2010: UPDATE: Below process confirmed working on pfSense1.2.2 Relase with OpenVPN Client 2.1.1 on Windows7 Ultimate 64Bit
Having spend most of my day to get OpenVPN running from a Windows Vista machine to a network on a pfSense box, i feel that a guide is needed for my kind; Windows-users not familiar with OpenVPN and alike :)
A guide of how to connect a PC on the internet, to LAN behind a pfSense firewall using OpenVPN also known as a Road-Warrior setup
This guide is NOT detailed regarding different configurations, and may not be the best security practices - so use it at your own risk…
First of all you need to have keys and certificates generated in order to configure the pfSense OpenVPN service;
- Download and install the most recent software from http://openvpn.net/download.html
If you plan to connect from a PC with Windows Vista you should get version 2.1 or newer.
Use the default options
-
Start a command prompt with administrator-rights!
This is done in Vista by clicking on START and then type CMD -> CMD.EXE should appear, and you RIGHT-Click on it and select 'Run as Administrator' -
Change directory to c:\programfiles\openvpn\easy-rsa
-
run the "init-config.bat" file
-
Edit 'vars.bat' file.
I suggest using 'Wordpad' and to be able to save the file again, you need to start Wordpad in the same manner as the command-prompt (see #2)
The following things need to be edited:
"set KEY_COUNTRY=DK"
2 Letters country ID - I use DK for Denmark"set KEY_PROVINCE=na"
2 Letters Province ID - I use na as in 'Not Applicable'"set KEY_CITY=Copenhagen"
Name of cityset KEY_ORG=Frewald
Name of your companyset KEY_EMAIL=youremail@address.com
Put an email-address here. Dont use you private address, since this is the common address for the Certificate Authority (or something...)Save the file
-
Run "vars.bat"
-
Run "clean-all.bat"
-
Run "build-ca.bat"
Then you are prompted for some different things; Leave them at default, except "Common Name" - put something like "pfSense-CA" -
Run "build-key-server.bat server"
Again you are prompted; leave them on default except "Common Name" - use "server" -
Run build-dh.bat
Now its time to generate keys and certificates for the client(s)
-
Run "build-key.bat ovpn_client1"
Again you are prompted; leave them on default except "Common Name" - here you should put in "ovpn_client1" (or whatever you have called it)
The ovpn_client1 will be the name of the keys, certificate and the name you identify the connection on later. You can use whatever name you like, and generate as many as you want (with different names). -
The following files should now be copied from c:\programfiles\openvpn
easy-rsa\keys to c:\programfiles\openvpn\config
ca.crt
ovpn_client1.key
ovpn_client1.crt (if you dont see a .crt file but only a .csr file, chances are that you dont have admin priviligies. Worst case generate the keys and certificates on a NON-Vista machine) -
Make a file in the c:\programfiles\openvpn\config
called "ovpn_client1.ovpn" and the file should contain (leave out the hashes):
client
dev tun
proto udp
remote 64.233.167.99 1194
ping 10
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert ovpn_client1.crt
key ovpn_client1.key
ns-cert-type server
comp-lzo
pull
verb 3Please put in your own public IP address of you pfSense-box in the 'remote' line
If you have chosen another name than 'ovpn_client1' then change it in the lines beginning with 'cert' and 'key'
If you have more than one VPN client, you make one .ovpn-file per client (with the corresponding .key and .crt name)
Now its time to configure pfSense
-
Log into the web-gui of pfSense
-
Select VPN/OpenVPN and ad an entry in the 'server' page
Use the following settings:
Protocol: UDP
Local port: 1194
Address pool: 192.168.200.0/24 (it should be a network that you DONT currently use)
Local Network: 192.168.1.0/24 or whatever the network is that you want the VPN client to connect to !!UPDATE: Note to add this value you need to first add the server setting and the EDIT the settings again!!
Remote Network: blank
Cryptography: BF-CBC (128 bit) - or use what you want
Authentication Method: PKI
Now you need to have access to some of the files created in c:\programfiles\openvpn
easy-rsa\keys (mentioned in #12)
23) Copy the WHOLE content of ca.crt into the "CA certificate" window
24) Copy the WHOLE content of server.crt into the "Server Certificate" window
25) Copy the WHOLE content of server.key into the "Server Key" window
26) Copy the WHOLE content of dh1024.pem into the "DH parameters" window-
Tick DHCP-Opt: Disable NetBIOS (I dont use it anyway)
-
Tick LZO Compression
Now we need a few simple rules in the firewall
-
On the WAN interface you should make a rule that;
PASS
WAN
Protocol: UDP
source: any
OS type: any
Destination: any
Destination port range from: OpenVPN
Destination port range to: OpenVPN
Tick in the LOG
Leave the rest at default. -
and another rule on the interface called LAN (or whatever the name of the net defined in #22 'address pool' is);
PASS
Any protocol
Source: LAN (or whatever the name of the net defined in #22 'address pool' is)
Any destinationRemember to apply the new rules.
Now you should be able to connect from OpenVPN (rightlick on the icon in the try and select Connect).
But remember to start OpenVPN with ADMIN RIGHTS!A small trick; If you want a specific client to be able to access more than one subnet, you can add a 'Client Specific Configuration' in pfSense;
Find it in the "WebGui/VPN/OpenVPN/Client-Specific configuration", use the Common Name given in #11 (ovpn_client1) and in custom options add the following line
push "route 192.168.2.0 255.255.255.0"
if thats the subnet that you want to have connection to.Hope this small guide provides some help to those of us who isn't much into *nix and OpenVPN.
There is problably a bunch of typ'O's - please write a comment when you see one that needs to be corrected…
This setup is working on my current setup:
pfSense 1.2RC4now running on 1.2 RELASE
OpenVPN 2.1 RC7Please visit http://openvpn.net/howto.htm for much more indepth info :)
Best regards,
Frewald
–--Small update:
If you later would like to add new clients, run point 2,3,6, and continue from point 11! - dont run point 7-8-9-10!!!!
Also note you need to do this on the machine that was orignally used to issue the certificates. - Download and install the most recent software from http://openvpn.net/download.html
-
Thanks a lot for this! I'll be trying it out this week. I totally gave up on OpenVPN, solely because I couldn't figure it out in the first 10 minutes.
-
This make the thing a hole lote easier. This thread should be Sticky.
-
Thanks a lot for posting this! :)
-
thanks, great tutorial!
-
Thanks alot for this tutorial, Frewald!
Didn't have time to look into OpenVPN at all.
Just followed your tutorial the evening before leaving for holidays and now I'm relaxed, enjoying the kids in the pool and keeping an eye on the mails in the office. Again, thanks for my very relaxed week! -
Hi Frewald,
These instructions were beautifully easy! Got me up and running in no time!
Kudos,
Mantissa -
Hey Frewald,
Excellent tutorial. Any objections to me taking (some or all of) this and adding it to the wiki?
-
Frewald, you are the champ !
Thanks a lot for this "HowTo"
I love pfsense.
-
Yeah, this is great.
-
Hey Frewald,
Excellent tutorial. Any objections to me taking (some or all of) this and adding it to the wiki?
Great to hear that people like it - and feel free to post all or parts of it to the Wiki - as long as it helps ppl :)
-
Could you please add to this sticky that if your using an OPT interface as your WAN2 that you should use TCP and not UDP for the protocol, this got me stummped until I dug deep on a thread that just mentioned it.
-
What exactly does not work with UDP?
The problem with TCP is: TCP over TCP should generally not be used where it can be avoided.
–> http://sites.inka.de/~W1011/devel/tcp-tcp.html -
I found this information on this forum page http://forum.pfsense.org/index.php/topic,8297.msg46717.html#msg46717
as soon as I swapped over to using TCP and updated my WAN2 rules to use TCP I could connect to the OpenVPN service on WAN2 (OPT1)
-
followed this tutorial but can only ping and connect to the pfsense box
protocol: udp
locol port: 1194
address pool: 192.168.20.0/27
local network: 192.168.6.0/25attached two pics are firewall rules
results of ipconfig:
C:\Documents and Settings\Administrator>ipconfig Windows IP Configuration Ethernet adapter Wireless Network Connection: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.1.104 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.1.1 Ethernet adapter TAP-Win32 Adapter V9: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.20.6 Subnet Mask . . . . . . . . . . . : 255.255.255.252 Default Gateway . . . . . . . . . :
Results of Route Print:
Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.104 25 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 192.168.0.0 255.255.255.0 192.168.0.1 192.168.0.1 20 192.168.0.1 255.255.255.255 127.0.0.1 127.0.0.1 20 192.168.0.255 255.255.255.255 192.168.0.1 192.168.0.1 20 192.168.1.0 255.255.255.0 192.168.1.104 192.168.1.104 25 192.168.1.104 255.255.255.255 127.0.0.1 127.0.0.1 25 192.168.1.255 255.255.255.255 192.168.1.104 192.168.1.104 25 192.168.6.0 255.255.255.128 192.168.20.5 192.168.20.6 1 192.168.14.0 255.255.255.0 192.168.20.5 192.168.20.6 1 192.168.20.1 255.255.255.255 192.168.20.5 192.168.20.6 1 192.168.20.4 255.255.255.252 192.168.20.6 192.168.20.6 30 192.168.20.6 255.255.255.255 127.0.0.1 127.0.0.1 30 192.168.20.255 255.255.255.255 192.168.20.6 192.168.20.6 30 192.168.122.0 255.255.255.0 192.168.122.1 192.168.122.1 20 192.168.122.1 255.255.255.255 127.0.0.1 127.0.0.1 20 192.168.122.255 255.255.255.255 192.168.122.1 192.168.122.1 20 224.0.0.0 240.0.0.0 192.168.0.1 192.168.0.1 20 224.0.0.0 240.0.0.0 192.168.1.104 192.168.1.104 25 224.0.0.0 240.0.0.0 192.168.20.6 192.168.20.6 30 224.0.0.0 240.0.0.0 192.168.122.1 192.168.122.1 20 255.255.255.255 255.255.255.255 192.168.0.1 192.168.0.1 1 255.255.255.255 255.255.255.255 192.168.1.104 192.168.1.104 1 255.255.255.255 255.255.255.255 192.168.1.104 f0008 1 255.255.255.255 255.255.255.255 192.168.1.104 10007 1 255.255.255.255 255.255.255.255 192.168.20.6 192.168.20.6 1 255.255.255.255 255.255.255.255 192.168.122.1 192.168.122.1 1 Default Gateway: 192.168.1.1
-
followed this tutorial but can only ping and connect to the pfsense box
protocol: udp
locol port: 1194
address pool: 192.168.20.0/27
local network: 192.168.6.0/25attached two pics are firewall rules
Are your clients using Vista?
I had to add the following to my Vista clients config
route-method exe
mssfix 1200
route-delay 2And then in the client specifc section in the OpenVPN setup I added the following to the custom options (not the server custom options, the client)
route-delay 2; ns-cert-type server; msssfix 1200; route-method exe;
Give that a try
-
right now just using xp clients and those settings did not help :o(
i can connect to both the vpn interface of the pfsense box and its LAN ipaddress (192.168.6.45) from the laptop on the opposite end of the vpn
i just cant ping/browse/http/telnet into any other system in the 192.168.6.0/25 and to top it off there is no log in the firewall that would suspect it of any misconfiguration
its boggling the mind and body!
–--------------------------------------
got it to work, i had to change all of the gateways on the servers that i wanted to access from the vpn...that will change when i place the proxy server before the pfsense box and should just work as they are all pointing to the proxy right nowim soooooooo flipping excited that i got all of these features for the school that i work for without paying thousands on router equipment and licensing fees!
next step is to create batch files for the staff to auto create all of the client files so i do not get phone calls after hours trying to get them to vpn to the district applications....THANK YOU PFSENSE!
-
So I've followed the instructions in this discussion, by the way great job on the howto When I get a little more familiar I'll share too.
Anyway this one got me stumped completely. I'm setting up a Vista (Ultimate) roadwarrior config to a pfsense box with dual wan, opt1 wan is static, wan is dynamic
I had issues at first with UDP, switching to TCP was helpful (proto tcp), thanks for the comments on the article guys :)Anyway I've done the vista workaround in the client config:
route-method exe
route-delay 20In the server client-specific configuration I specify
route-delay 10; ns-cert-type server; route-method exe
That being said I'm still getting this error:
Thats even after attempting the same command myself using administrator mode of course.
Fri Jun 13 23:34:54 2008 Notified TAP-Win32 driver to set a DHCP IP/netmask of 192.168.200.6/255.255.255.252 on interface {C22CAE94-9A35-48E5-B606-DEF049045B02} [DHCP-serv: 192.168.200.5, lease-time: 31536000]
Fri Jun 13 23:34:54 2008 Successful ARP Flush on interface [22] {C22CAE94-9A35-48E5-B606-DEF049045B02}
Fri Jun 13 23:35:05 2008 TEST ROUTES: 2/2 succeeded len=2 ret=1 a=0 u/d=up
Fri Jun 13 23:35:05 2008 route ADD 192.168.0.1 MASK 255.255.255.0 192.168.200.5
The route addition failed: The parameter is incorrect.
Fri Jun 13 23:35:05 2008 route ADD 192.168.200.1 MASK 255.255.255.255 192.168.200.5
OK!
Fri Jun 13 23:35:05 2008 Initialization Sequence CompletedThe thing that sticks in my mind is why just the one route ADD command that fails?
Oh an before anyone asks I'm running the latest RC build (2.1 rc7) and running OpenVPN GUI in administrator mode
And thats the saga, now if one of you fine gents could spare a couple minutes I'd REALLY appreciate it :)
I'm sure its gotta be something reasonably simple that I'm just not getting.Thanks in advance,
lifethetech -
Does the Vista PC have UAC enabled on it?
I enabled UAC the other day and then tried to connect to work using OpenVPN and the routes were not added. If you have UAC on try disabling it.
-
I did have UAC on, but I've turned it off and tested again, no joy yet :(
I'm still getting the same error. Just a little more info I am on the latest release of pfsense.
And I guess it would be pertinent to tell everyone that I'm using Vista with all the latest patches and SP1
Thanks in advance,
lifethetechEDIT: I've noticed in the openvpn pfsense logs errors related to the client specific openvpn settings:
laptopxxxx/n.n.n.n:49393 Options error: option 'route-delay' cannot be used in this context
laptopxxxx/n.n.n.n:49393 Options error: option 'ns-cert-type' cannot be used in this context
laptopxxxx/n.n.n.n:49393 Options error: option 'route-method' cannot be used in this contextwith the n's being the client's IP address
Not sure if that helps or not :)
edit:
A little more info, I've tried tearing down the whole setup and redoing it all then installing the client on XP here is the error from the XP box (still the same error on vista):
The route addition failed: The specified mask parameter is invalid. (Destination & Mask) != Destination