You have your PKI (Public Key Infrastructure) all set up, and clients keys copied to your clients. Now, how do you configure your server and clients?
Follow these examples:
## server3.conf local 192.168.3.10 port 1194 proto udp dev tun daemon server 10.0.0.0 255.255.255.0 push "route 192.168.1.0 255.255.255.0" push "dhcp-option DNS 192.168.1.50" max-clients 25 ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/xena.crt key /etc/openvpn/keys/xena.key dh /etc/openvpn/keys/dh1024.pem tls-auth /etc/openvpn/keys/ta.key 0 cipher BF-CBC comp-lzo keepalive 10 120 log-append /var/log/openvpn.log status /var/log/openvpn-status.log ifconfig-pool-persist /etc/openvpn/ipp.txt mute 20 verb 4 ## client3.conf client pull dev tun proto udp remote 192.168.3.10 1194 ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/xena.crt key /etc/openvpn/keys/xena.key tls-auth /etc/openvpn/keys/ta.key 1 cipher BF-CBC comp-lzo verb 4 mute 20 ns-cert-type server
Fire up OpenVPN in the usual way:
root@xena:~# openvpn /etc/openvpn/server3.conf
root@stinkpad:~# openvpn /etc/openvpn/client3.conf
Copy the client configuration file to as many Linux clients as you want and try connecting. Your OpenVPN server should welcome all of them.
You now have an excellent, strong, genuine Virtual Private Network up and running. Now, your remote clients can access your network almost as if they were physically present. There are a few limitations: remote clients cannot see each other, and broadcast traffic, with Samba being the most famous example, cannot cross a router.
I like to keep different versions of configuration files, like server2.conf and server3.conf, for quick and easy testing different setups. You are welcome to call them anything you want.
Let's take a quick cruise over the configuration options. The manpage is thorough, so we'll hit the high points.
The server line tells OpenVPN to run in server mode, and to
automatically configure routing and client addressing. The syntax is
server network netmask
. The server assigns
itself the .1 address for its end of the tunnel, automatically
reserves a pool of client addresses, and pushes out the correct VPN
route to clients. You can see this when you run the route command on
the clients.
The push "route"
option sends
the correct route so that VPN clients can access the LAN behind the
OpenVPN server.
push "dhcp-option DNS"
tells
your remote clients where your DNS server is, which is a very nice thing for them to
know.
The ns-cert-type server
option in client files prevents clients from connecting to a server
that does not have the nsCertType=server
designation in its
certificate. The build-key-server script does
this for you. It's an extra bit of prevention that helps prevent
man-in-the-middle attacks.
To add another layer of verification, use the tls-remote
option in client configuration
files. This takes the Common Name from the server certificate, like
this:
tls-remote xena.alrac.net
If the client doesn't see the correct Common Name, it won't connect.
OpenVPN How-to: http://openvpn.net/howto.html