Openvpn on Raspberry Pi

So sommar is comming and I planning to be away as mutch as possible.
But I need an door in to my server at home for some work. When Im of i only will have an 3g/4g connections so its mutch nicer to work against my server home at a stabel 100 line.

So for making this possibel I install en openvpn server on my PI sitting in my closet.
THIS CONFIG SEND ALL TRAFFIC TROW THE VPN so be ware 🙂

Installing Openvpn

apt-get install openvpn openssl

Setting up keys used for vpn

cd /etc/openvpn
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rs
cd easy-rsa/

Open the file vars and at the buttom enter your settings

export KEY_COUNTRY="SE"
export KEY_PROVINCE="ST"
export KEY_CITY="Stockholm"
export KEY_ORG="Elino"
export KEY_EMAIL="matte@elino.se"
export KEY_EMAIL=matte@elino.se
export KEY_CN=elino.no-ip.org
export KEY_NAME=mepi
export KEY_OU=mepi
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234

make new synlink to config file

ln -s openssl-1.0.0.cnf openssl.cnf

Ok ready to make som certs first load and clean all certs (Onlye clean the first time you will delete all certs)

source vars
./clean-all
./build-ca openvpn
./build-key-server server
./build-dh
openvpn --genkey --secret ta.key

Installing the certs

cp keyscp server.crt server.key ca.crt ../ta.key dh1024.pem /etc/openvpn/

Set up the openvpn config

make the file /etc/openvpn/server.conf and past the following into the file

dev tun
proto udp
port 1194
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
user nobody
tls-auth ta.key 0
group nogroup
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
client-to-client
push "redirect-gateway def1"
#set the dns servers
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
log-append /var/log/openvpn
comp-lzo

Restart the vpn server

/etc/init./openvpn restart

look in the logfile (/var/log/openvpn) to se that the server started and do a ifconfig to make shoure you have a tun device.

Now we must enabled traffic forwarding.

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to [ipadres rpi]

Make shoure this command is run if you restart your pi.

Making some clients to the server

First lets make som certs to use.

cd /etc/openvpn/easy-rsa/
 source vars
 ./build-key mahe

Copy the certs needed

mkdir /etc/openvpn/clients
mkdir /etc/openvpn/clients/mahe
cd keys
cp mahe.crt mahe.key ca.crt ../ta.key /etc/openvpn/clients/mahe/

make an client config file nane /etc/openvpn/cleints/mahe/client.con (if used on windows call the file client.ovpn)

dev tun
client
proto udp
remote YOUR.RASPBERRYPI.IPADRESS 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert mahe.crt
key mahe.key
tls-auth ta.key 1
comp-lzo
verb 3

Now you can copy the mahe folder to you laptop and for connection run from teh mahe folder. It you make new certs and called them user you must update this hoe to and config to use the correct certs.

sudo openvpn --config client.conf

 

Make shoure you have udp port 1194 open in you firewall to your raspberry pi.

 

When you see this line in the openvpn client you are connected.

Initialization Sequence Completed

And now you are routing all you traffic trow the Raspberry Pi

Go to http://ip-lookup.net/ and se what public ip you are using.

 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: