2024. április 20., szombat

Gyorskeresés

Virtuális magán hálózat szerver házilag (Home VPN)

Írta: | Kulcsszavak: vpn . openwrt . virtuális . network . hálózat . magán . server . openvpn

[ ÚJ BEJEGYZÉS ]

Ú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!

Hozzászólások

(#1) CaNNa3IS


CaNNa3IS
senior tag

Csak átfutottam és lehet nem vettem észre de otthon fix IP-t használsz vagy honnan tudod távolról az IP-d ?

Stay up Stay humble Ride hard Get stoked

(#2) CHIPman válasza CaNNa3IS (#1) üzenetére


CHIPman
nagyúr

Mindhárom leírást végigpróbáltam, és a végeredmény az lesz, hogy csatlakozik, de nincs net. Messenger megy, mert valószínűleg p2p, az általános dolgok viszont nem. Mit ronthatok el?
Linuxos gépen és rpi3-on is gond nélkül futtatok openvpnt, de a routeren kényelmesebb lenne.

Bocsi, nem válasz akart lenni.

[ Szerkesztve ]

Eladó Thrustmaster TCA Sidestick Airbus Edition - hardverapro.hu/tag/chipman

(#3) btz válasza CaNNa3IS (#1) üzenetére


btz
addikt

Üdv!
Dyndns szolgáltatás fut a fő routeren (azaz a szolgáltatói HGW eszközön).

ⓑⓣⓩ

(#4) btz válasza CHIPman (#2) üzenetére


btz
addikt

Openwrt-s routert használsz?
Hanigen rakd ki képernyő mentésben, hogy mik a konfigok. Ha Luci is van, akkor arról is rakd be a képernyő mentéseket. Interfészekről, tűzfal szabályokról, zónákról.

ⓑⓣⓩ

(#5) btz


btz
addikt

Ha valakit érdekel, hogy mi az a VPN (Virtuális magánhálózat), mire használható, mire nem, akkor [itt] egy kicsit régi, de mindenféleképpen hasznos leírás.

ⓑⓣⓩ

(#6) btz


btz
addikt

Azoknak akik nem szeretnek terminálon mókolni, de a konfig fájl szerkesztéses módszereket jobban szeretik, azoknak letöltöttem a konfig fájlokat a routerről. (/etc/config könyvtárban találhatók ezek)

Firewall fájl

config defaults
option syn_flood '1'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'REJECT'

config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option network 'lan WLAN'
option masq '1'
option mtu_fix '1'

config include
option path '/etc/firewall.user'

config rule 'Allow_OpenVPN_Inbound'
option target 'ACCEPT'
option src '*'
option proto 'udp'
option dest_port '50015'

config zone
option input 'ACCEPT'
option forward 'REJECT'
option output 'ACCEPT'
option name 'vpn'
option network 'vpn0'

config forwarding
option dest 'lan'
option src 'vpn'

config forwarding
option dest 'vpn'
option src 'lan'

Openvpn fájl. (Szerver konfigurációs fájl)

config openvpn 'myvpn'
option enabled '1'
option verb '3'
option port '50015'
option proto 'udp'
option dev 'tun'
option server '192.168.2.0 255.255.255.0'
option keepalive '10 120'
option ca '/etc/openvpn/ca.crt'
option cert '/etc/openvpn/my-server.crt'
option key '/etc/openvpn/my-server.key'
option dh '/etc/openvpn/dh2048.pem'
list push 'route 192.168.1.0 255.255.255.0'
list push 'redirect-gateway def1'

Network fájl

config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'

config globals 'globals'
option ula_prefix 'fd9c:7178:739e::/48'

config interface 'lan'
option force_link '1'
option type 'bridge'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
option ipaddr '192.168.1.250'
option gateway '192.168.1.4'
option dns '8.8.8.8 192.168.1.4'
option _orig_ifname 'eth1 tap0 radio0.network1'
option _orig_bridge 'true'
option ifname 'eth1'
option delegate '0'

config switch
option name 'switch0'
option reset '1'
option enable_vlan '1'

config switch_vlan
option device 'switch0'
option vlan '1'
option ports '0 1 2 3 4'

config switch_vlan
option device 'switch0'
option vlan '2'
option ports '5 6'

config interface 'vpn0'
option ifname 'tun0'
option proto 'none'
option auto '1'

Ezek az én konfigjaim, természetesen mindenki a sajátjához igazítsa hozzá, ne egy az egyben írassa fellül a sajátját, mert abból gond lehet.

[ Szerkesztve ]

ⓑⓣⓩ

(#7) CaNNa3IS válasza btz (#3) üzenetére


CaNNa3IS
senior tag

a dyndns már fizetős lett ugye?

nekem synology van az openwrt után. VPN-t nem használok mert synologynál nem kell. Bár VPN van benne és egyszer kipróbáltam.

DNS-re nekem freedns van amit be tudtam állitani openwrt-ben

[ Szerkesztve ]

Stay up Stay humble Ride hard Get stoked

(#8) btz válasza CaNNa3IS (#7) üzenetére


btz
addikt

Az is megfelelő, ha a wrt támogatja

ⓑⓣⓩ

(#9) KaiotEch


KaiotEch
nagyúr

Tovább fogom olvasni, csak könyörgöm írjuk már helyesen azt, hogy egyelőre, mert az egyenlőre baromira mást jelent!

Egy helyesírásellenőrzőt azért az egészen futtatni kéne, nagyon sok hiba van!

[ Szerkesztve ]

(#10) btz válasza KaiotEch (#9) üzenetére


btz
addikt

Nálunk nem csak így írják, hanem így is mondják, szóval jó lesz az.

ⓑⓣⓩ

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.