Úgy döntöttem, hogy létrehozok, egy virtuális magán hálózatot (VPN-t), hogy el tudjam érni az otthoni fájljaimat sftp-n (és úgy amblokk az otthoni cuccaimat, mint kapmerák stb), úgy mintha az otthoni LAN-omon lennék. Jó lenne, ha az otthoni net elérésem ip címével tudnék kapcsolódni a netre, akkor is, ha egy idegen ingyenes hotspoton vagyok.
Egyenlőre ennyi az igény. Neki is állok a megvalósításnak és ezt megosztom veletek. Egyrészt, hogy ti is tanuljatok belőle valamit, másrészt, ha én vagyok láma valamihez, tudjatok segíteni.
Openwrt-s routerrel fogom csinálni. Openwrt-n bevallom még csak egyszer csináltam ilyet, de remélem menni fog ezúttal is. Kezdjük!
Openwrt, Openvpn alapokon készítem el a szervert, ezért ebből a kezdőknek szóló írásból indulok el:
[OpenVPN Setup Guide for Beginners]
A profibbaknak itt található tananyag. Ez pedig itt egy közepes szintűeknek való leírás.
Az eszköz, aminn dolgozom egy Tplink router lesz, ami egy szolgáltatói HGW-re kapcsolódik. HGW - Tplink LAN -LAN van összekötve. A HGW lan ip címe : 192.168.1.4 a Tplink lan ip címe 192.168.1.250. A Tplink átjáró és dns címe a szolgáltatói HGW lan ip címe, azaz 192.168.1.4 Ez az átjáró az internet felé.
1. Lépés, A fent linkelt leírás szerint telepítem a kellő csomagokat, létrehozom a certifikátokat, ezeket az /etc/openvpn könyvtárba másolom. (Ezeket SSH programmal a routerbe belépve csinálom)
opkg update
opkg install openvpn-openssl openvpn-easy-rsa
build-ca
build-dh
build-key-server my-server
build-key-pkcs12 my-client
cp /etc/easy-rsa/keys/ca.crt /etc/easy-rsa/keys/my-server.* /etc/easy-rsa/keys/dh2048.pem /etc/openvpn
A build-dh parancs kiadása után, jobb ha elmész kávézni a gép mellől. Legalább egy fél órára. :)
2. Lépés, (Még mindig az SSH terminálban dolgozok). Egy TUN interfészt hozok létre, mivel az Androidos kliensem nem tud a TAP interfésszt használni. Ezeket a parancsokat adom ki:
uci set network.vpn0=interface
uci set network.vpn0.ifname=tun0
uci set network.vpn0.proto=none
uci set network.vpn0.auto=1
3. Lépés, A szolgáltáshoz szükséges port megnyitása a tűzfalon. Én a defaulttól eltérek és az 50015-ös portot használom.
uci set firewall.Allow_OpenVPN_Inbound=rule
uci set firewall.Allow_OpenVPN_Inbound.target=ACCEPT
uci set firewall.Allow_OpenVPN_Inbound.src=*
uci set firewall.Allow_OpenVPN_Inbound.proto=udp
uci set firewall.Allow_OpenVPN_Inbound.dest_port=50015
4. Lépés, A vpn tűzfalzóna létrehozása.
uci set firewall.vpn=zone
uci set firewall.vpn.name=vpn
uci set firewall.vpn.network=vpn0
uci set firewall.vpn.input=ACCEPT
uci set firewall.vpn.forward=REJECT
uci set firewall.vpn.output=ACCEPT
uci set firewall.vpn.masq=1
5. Lépés, Ha szeretném elérni a LAN-ra kapcsolódott klienseket, akkor engedélyeznem kell a vpn és a lan tűzfal zóna közötti forwardingot, azaz továbbítást. És a fordítottját is szeretném, ezért az első szabály fordítottját is megcsinálom.
uci set firewall.vpn_forwarding_lan_in=forwarding
uci set firewall.vpn_forwarding_lan_in.src=vpn
uci set firewall.vpn_forwarding_lan_in.dest=lan
uci set firewall.vpn_forwarding_lan_out=forwarding
uci set firewall.vpn_forwarding_lan_out.src=lan
uci set firewall.vpn_forwarding_lan_out.dest=vpn
Ezt akkor kéne megadnom, ha a WAN kapcsolaton lenne internet elérésem, és a vpn-en keresztül ki akarnék látni a netre. De mivel nekem a net elérésem a LAN-on keresztül történik, ezért nekem elég a fenti két variáció, de az is lehet, hogy más módosításokat kell belevinnem a történetbe. Ha végképp nem megy aklor lesz egy pppoe wan.
uci set firewall.vpn_forwarding_wan=forwarding
uci set firewall.vpn_forwarding_wan.src=vpn
uci set firewall.vpn_forwarding_wan.dest=wan
6. Lépés, Azért, hogy érvényesüljenek a beállításaim.
uci commit network
/etc/init.d/network reload
uci commit firewall
/etc/init.d/firewall reload
7. Lépés. Mostmár vannak tűzfal beállításaink, létre jött egy TUN interfész, így nekiálhatunk bekonfigolni a VPN szerverünk konfigurációs állományát. A VPN tartományom az 192.168.2.XXX tartomány lesz. A router itt az 192.168.2.1 címet veszi fel, a kliensek valószínűleg 192.168.2.100-tól jönnek majd rá (Csak tipp, majd kiderül). A parancsok végén engedélyezem és elindítom a szolgáltatást.
echo > /etc/config/openvpn # clear the openvpn uci config
uci set openvpn.myvpn=openvpn
uci set openvpn.myvpn.enabled=1
uci set openvpn.myvpn.verb=3
uci set openvpn.myvpn.port=50015
uci set openvpn.myvpn.proto=udp
uci set openvpn.myvpn.dev=tun
uci set openvpn.myvpn.server='192.168.2.0 255.255.255.0'
uci set openvpn.myvpn.keepalive='10 120'
uci set openvpn.myvpn.ca=/etc/openvpn/ca.crt
uci set openvpn.myvpn.cert=/etc/openvpn/my-server.crt
uci set openvpn.myvpn.key=/etc/openvpn/my-server.key
uci set openvpn.myvpn.dh=/etc/openvpn/dh2048.pem
uci commit openvpn
/etc/init.d/openvpn enable
/etc/init.d/openvpn start
Azt írja még az Openwrt manuál, hogy ha a forgalmat routolni akarom a LAN-ról, akkor még kell ez:
uci add_list openvpn.myvpn.push='route 192.168.1.0 255.255.255.0' #Ezt cserélheti mindenki a maga szubnetjére.
Ha minden forgalmat routolni akarunk (internet, WAN, stb), tehát effektíve egy VPN proxyt, akkor ezt:
uci add_list openvpn.myvpn.push='redirect-gateway def1'
8. Lépés, Itt már a kliens, azaz a VPN-re kapcsolódó eszközömön dolgozom. A kliens programomba ezt a konfigurációs állományt importálom. config.ovpn nevű fájlba mentem el (windowsososknak .conf kiterjesztés kell a fent linkelt leírás szerint)
dev tun
proto udp
log openvpn.log
verb 3
ca /etc/openvpn/ca.crt
cert /etc/openvpn/my-client.crt
key /etc/openvpn/my-client.key
# itt figyeljünk arra, ha a kliens gépünkön nem az etc/openvpn/* útvonalakon vannak a kulcsok, akkor fentebb írjuk át az útvonalat!
client
remote-cert-tls server
remote SERVER_IP_ADDRESS 50015
Idáig tartott a bekonfigolási rész, nézzünk szét Luci felületen (azaz az OpenWrt grafikus böngészőben elérhető felületén), hogy lássuk mit is alkottunk. Illetve megmutatom, mit is kell látni a kliensen, ha sikerült felcsatlakoztunk a VPN szerverünkre
Amennyiben a VPN-ünket konfigurálni szeretnénk lucin, akkor telepíteni kell az ehhez szükséges szoftvert vagy ssh-n vagy a luci szoftver telepítő részében. A luci-app-openvpn
csomagot kell keresni.
Mi már bekonfiguráltuk ssh-n, itt szokgáltatások oldalon már csak láthatjuk, hogy fut.
Itt láthatjuk a működő interfészeinket. Nekem csak LAN van, erről jön az internet elérés, a WAN interfészt töröltem, mert úgy sincs bedugva kábel a hozzá társított portba.
A beállított tűzfal zónák. Talán a 9. konfig lépésként lehetne említeni, hogy az álcázást és az mss clampingot állítsuk be a LAN melletti jelölő négyzeteknél.
Megnyitott tűzfal a 50015-ös port számára. Itt fontosnak tartom elmondani, ha te is ilyen AP módban használt routeren csinálsz VPN szervert, akkor a fő routeren is meg kell nyitni az alkalmazott portot, illetve port forwarding (port továbbítási) szabályt is csinálni kell.
És a végére a kapcsolódott Androidos kliensünk, az OpenVPN connect nevű program. Letöltjük a szerverünkről (ami ezesetben a router) a certifikátokat, kliens kulcsokat a kliensünkre, egy szerkesztővel létrehozzuk config.ovpn fájlt, bele írjuk a 8. Lépés szerint az adatokat. Mentjük, majd a kliens programmal beimportáljuk. Connect/Disconnect gombal fel/le kapcsolódhatunk az otthoni VPN szerverünkre.
Ezzel készen is vagyunk. Ha kérdésed van, esetleg elírást és hibát találsz a leírásban, akkor jelezd kommentekben. Amint lesznek variálások a rendszerben, azt én is lejegyzem ennek a postnak a hszeiben.
Köszönöm a figylmet!