Saját VPN szerver

Mire is jó nekünk -mondjuk úgy- személyes használatra a VPN?
Nos, túl azon, hogy a szolgáltató nem lát bele az internetes forgalmunkba, ami valakit érdekel, valakit nem, ezzel elérhetjük az otthoni gépet/gépeket (mondjuk a saját NAS-t)  mindenféle free dns szolgáltató nélkül (amik vagy működnek vagy nem). Igaz, hogy vannak free VPN szolgáltatók, de tapasztalatom szerint szintén bizonytalan vagy lassú elérést kapunk. A fizetősökkel nincs baj, de ha már fizetni kell, akkor legyen sajátunk… 😉
Nos,  első körben vegyünk egy virtuális szervert a legalapabb funkciókkal! Nem kell megijedni, havi 600-700 forintért már kapunk olyat, ami nekünk pont elég. Én teszt jelleggel vettem egyet az axafone-nál 648 Ft bruttóért. 10GB hdd, 512 RAM és debian telepítés.
Maga a telepítés automata, az se ijedjen meg, aki nem telepített még debiant. Ha kész van kapunk egy hozzáférést (user: root, jelszó: autoamtán generált).
Ha ezek megvannak, ssh-n lépjünk be a szerverre (windows alól használd a putty-t, ipcím: amit kaptál, port: 22, felhasználó: root, jelszó: amit kaptál)
Ezt fogjuk látni (nálad nyilván más lesz a hostnév, nem vm1):

vpn01

 

Gépeljük vagy másoljuk be ezeket a  (pirossal kiemelt) sorokat:

apt-get install openvpn easy-rsa
echo 1 > /proc/sys/net/ipv4/ip_forward
nano /etc/sysctl.conf

keressük meg ezt a sort:

#net.ipv4.ip_forward=1

és töröljük ki előle a # jelet, majd mentsük el (törlés után nyomjuk le a Ctrl-t, tartsuk lenyomva és nyomjuk az x-re, ekkor megkérdezi, hogy mentse-e, csak nyomjunk egy y-t utána pedig egy enter-t és el is mentettük)
apt-get install ufw
ufw allow ssh
ufw allow 1194/udp
nano /etc/default/ufw
Itt cseréljük le a FORWARD engedélyt DROP-ról ACCEPT-re

Így néz ki alapból a sor: DEFAULT_FORWARD_POLICY=”DROP”

Erre változtatjuk: DEFAULT_FORWARD_POLICY=”ACCEPT”

ufw enable
ufw status

vm02

cp -r /usr/share/easy-rsa/ /etc/openvpn
mkdir /etc/openvpn/easy-rsa/keys
nano /etc/openvpn/easy-rsa/vars

Itt írjuk át az idézőjelben lévő adatokat nekünk tetszőre ezeket:

 

export KEY_COUNTRY=”US”
export KEY_PROVINCE=”CA”
export KEY_CITY=”SanFrancisco”
export KEY_ORG=”Fort-Funston”
export KEY_EMAIL=”me@myhost.mydomain”
export KEY_OU=””

Én ezekre változtattam:

export KEY_COUNTRY=”HU”
export KEY_PROVINCE=”Kom-Egom”
export KEY_CITY=”Tata”
export KEY_ORG=”AltGr”
export KEY_EMAIL=”info@altgr.hu”
export KEY_OU=”AltGr”

Ha kész, mentsük el!

openssl dhparam -out /etc/openvpn/dh2048.pem 2048
cd /etc/openvpn/easy-rsa
. ./vars
./clean-all
./build-ca
./build-key-server server
cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn
service openvpn start
service openvpn status
./build-key kliens-név

Ezután hozzuk létre a szerver konfigurációt a vpn-hez:

nano /etc/openvpn/server.conf
Az üres fájlba másoljuk be ezeket:
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh2048.pem
server 10.8.0.0 255.255.0.0
keepalive 10 120
comp-lzo
client-config-dir /etc/openvpn/staticclients
client-to-client # Engedélyezi, hogy a távolról felcsatlakozó kliensek „lássák egymást”
persist-key
persist-tun
verb 3
mute 20

…mentsük el és kész.

Ha létrehoztuk a kliens klucsát (./build-key kliens-név), akkor meg fognak jelenni az /etc/openvpn/easy-rsa/keys/ alatt a kliens-név.crt, kliens-név.csr, kliens-név.key fájlok.
Másoljuk a gépünkre, telefonunkra, stb. a  kliens-név.crt, kliens-név.key, ca.crt, dh2048.pem fájlokat (windows alatt pl. a total commanderrel vagy a winscp-vel tudjuk letölteni úgy, hogy a 22-es porton csatlakozunk az ipcímmel, felhasználói névvel, jelszóval)
Indítsuk el a szerveren az openvpn-t:

openvpn –config /etc/openvpn/server.conf &

Ha hibát kapunk, nézzük meg nem fut-e a háttérben

ps ax | grep open

ha látunk futó openvpn folyamatot, lőjjük ki a kill parancs és folyamat azonosítói számmal a folyamatot:

kill -9 folymat száma

példa:

root@vm1:~# ps ax | grep open
8363 ? S 0:04 openvpn –config /etc/openvpn/server.conf
9446 pts/2 S+ 0:00 grep open

Amint látszik a 8363 folyamat az openvpn, esetemben ez lenne a parancs:

kill -9 8363

Ezután próbáljuk ismét:

openvpn –config /etc/openvpn/server.conf &

Ha elindul csatlakozzunk hozzá.
A kliens oldali beállítás rendszerenként változó, nem szándékozom az összes lehetőséget leírni.
Androidon javasolt az OpenVPN Androidhoz telepítése, ubuntun a networkmanagerrel beállítható, windows-ra telepíthető az openvpn.
Mind a droidnál, mind a windows-nál kell egy kliens oldali konfigurációs fájl.

Android:

client
remote IPCÍM # a távoli server IP címe megadhatsz domaint is
port 1194
proto udp
ca /etc/openvpn/ca.crt
cert /etc/openvpn/klines_neve.crt
key /etc/openvpn/kliens_neve.key
dev tun
comp-lzo
verb 3
mute 10
persist-key
persist-tun

Windowson ha feltelepítettük az openvpn-t, akkor rendszergazdaként futtassuk a jegyzettömböt és nyissuk meg a Program File\OpenVpn\sample-config\client fájlt, majd szerkesszük. Igazából két részt kell átírni.

Az egyik rész ez, itt a szerver ip címét kell beírnunk:

 

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote IPCÍM 1194
;remote my-server-2 1194

a másik ez, ide meg a .crt és a .key fájl nevét:

 

 

# SSL/TLS parms.
# See the server config file for more
# description. It’s best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
ca ca.crt
cert kliens.crt
key kliens.key

 

Mentsük el a Program File\OpenVpn\config mappába, majd ugyan ebbe a mappába másoljuk be a ca.crt, kliens.crt, kliens.key fájlokat.

 

Ubuntun nem networkmanagerrel:

A szokásos fájlokat másoljuk az /etc/openvpn mappába, majd hozzuk létre itt a client.config fájlt ezzel a tartalommal:

 

client
remote IPCÍM# a távoli server IP címe megadhatsz domaint is
port 1194
proto udp
ca /etc/openvpn/ca.crt
cert /etc/openvpn/kliens.crt
key /etc/openvpn/kliens.key
dev tun
comp-lzo
verb 3
mute 10
persist-key
persist-tun

Így indítjuk:

openvpn –config /etc/openvpn/client.conf &

Nagyjából ennyi…. 😉