Hirdetés

2021. december 1., szerda

Gyorskeresés

Útvonal

Cikkek » Számtech rovat

Fix IP cím alternatíva VPN csomóponton keresztül

Fizetős, de megbízhatóbb DynDNS, NO-IP, stb. alternatíva sok-sok kézimunkával.

[ ÚJ TESZT ]

Gyakorlati alkalmazás

Az előzőekben leírtakban használt VPN hálózati modell egy működőképes infrastruktúra, azonban feltétele, hogy a gépek a VPN hálózatra legyenek kapcsolódva. A gyakorlatban viszont nincs szükség a folyamatos VPN kapcsolatra, általában 10-20 percre van csak szükségünk egy adott gépre, vagy netán több órára. Tehát célszerűen a felhasználó határozza meg, hogy mikor kezdeményezi a kapcsolatot a privát hálózatra és mikor szakítja azt meg. Illetve azt sem szeretnénk, hogy az otthoni szerverünk folyamatosan VPN-en legyen, mert úgy minden forgalom a DigitalOcean szerverén keresztül menne. Ennek a kontrollálására készítettem egy mini alkalmazást, ami egy webservice-ből és egy .NET-es háttérben futó alkalmazásból áll. A webservice-t logikusan a DigitalOcean szerverén hostoltam, míg a .NET c# wpf-ben készült.

A mini alkalmazás célja, hogy vezérelten el tudjam indítania kliens/vendég gépről a VPN kapcsolódási kérést. Amint kiadom a VPN kapcsolódási utasítást, azt az otthoni szerver gép érzékeli és fellép a virtuális magán hálózatra és onnantól már a kliens és a szerver is közös hálózaton van. Ugyanez vonatkozik a VPN kapcsolat bontására, amint kiadom ezt az utasítást, a szerver bontja a kapcsolatot.

A webservice működéséhez 3 dolgot kell telepíteni az ubuntu 16.04-re, lehetőleg ebben a sorrendben:

1) Apache 2.4
apt-get -y install apache2
Teszteljük le böngészőben: http://yourfloatingip/ -> It works! feliratot kell látnunk.
2) PHP 7.0
apt-get -y install php7.0 libapache2-mod-php7.0
systemctl restart apache2

Hirdetés

Tesztelés: hozzuk létre ezt a fájlt /var/www/html/info.php Bitvise Tunnelierrel és Notepad++-szal, a tartalma pedig legyen ez:

<?php
phpinfo();
?>

Böngészőben: http://yourfloatingip/info.php -> a PHP info oldalnak kell bejönnie.
3) PostgreSQL és phpPgAdmin
sudo apt-get -y install postgresql postgresql-contrib phppgadmin
A PostgreSQL-hez még meg kell adni a postgres felhasználónak a jelszavát:
sudo su
su - postgres

Ezután már be tudunk lépni a postgres promptba:
\password postgres
ENTER YOUR PASSWORD

Adjuk meg kétszer egymás után az új jelszavunkat és lépjünk ki a postgres promptból:
\q
Nyissuk meg a következő fájlt: /etc/apache2/conf-available/phppgadmin.conf és szerkesszük meg az alábbi módon:

Nyissuk meg a következő fájlt: /etc/phppgadmin/config.inc.php és írjuk át az extra_login_security beállítást false-ra:
$conf['extra_login_security'] = false;
systemctl restart postgresql
systemctl restart apache2

Teszteljük böngészőben: http://yourfloatingip/phppgadmin -> az admin felületnek kell bejönnie:

A phpPgAdmin felületen hozzuk létre az alábbi táblát a public adatbázisba:

Ez a tábla fogja regisztrálni a VPN kapcsolódási és szétkapcsolási kérelmeket.

A webservice logika működéséért pedig egy darab php fájl lesz felelős, amit hozzunk létre ide: /var/www/html/digitalocean/api.php

Az api.php fájl innen is letölthető: [link]

A PHP kód a PDO drivert használja a PostgreSQL eléréséhez, ezért szükség van egy PHP PDO wrapperre, ami innen letölthető: [link] . Ezt a fájlt kell bemásolni a classes könyvtáron belülre és módosítani kell az alábbiak szerint:

A webservice kész van, de még le kell védeni a digitalocean könyvtárat, hogy azt illetéktelenül ne tudják használni, ill. hogy más ne tudjon VPN kapcsolatot kérelmezni, csak mi. Ennek a legegyszerűbb módja a Basic AUTH, vagyis egy egyszerű felhasználónév/jelszó páros

Basic AUTH beállítás lépései:
CONSOLE:
sudo apt-get install apache2-utils
sudo htpasswd -c /etc/apache2/.htpasswd webservice_user

Ezután meg kell adni egy jelszót 2x egymás után.
Bitvise Tunnelier és Notepad++-al szerkesszük meg a következő fájlt: /etc/apache2/sites-enabled/000-default.conf az alábbiak szerint:

CONSOLE:
sudo systemctl restart apache2

Ezek nem túl felhasználó-barát lépések voltak, de végül csak elkészült a webservice.

Most jöhet a .NET alkalmazás telepítése 3 lépésben: NEXT+NEXT+FINISH. Innen letölthető az installer: [link]. Telepítsük a szoftvert a szerverre és a kliensekre is.
A telepítés után a c:\Program Files (x86)\EasySoft\EasyStaticIP\EasyStaticIP.exe-vel indítsuk a programot. Indulást követően a Tray ikonok között keressük meg:

Dupla kattintással konfigurálható:

Itt már minden beállítás önmagáért beszél:
- DigitalOceanAPI: http://yourfloatingip/digitalocean (api.php nélkül!)
- Username, Password: az a felhasználónév és jelszó, amit az Apache szerver Basic AUTH könyvtár védelemnél beállítottunk
- Windows VPN: válasszuk ki a listából a DigitalOcean-t
- Windows VPN username és password: szerver gépen használjuk a "server" usert, kliens gépen használjuk a "quest" usert, hogy különböző IP-t kapjanak.
- Auto start with Windows: kapcsoljuk be, kényelmi funkció
- Server mode: csak szerveren kapcsoljuk be.

.NET alkalmazás működése
Ha mindkét gépre feltelepítettük a szoftvert (szerverre és kliensre is), akkor akár tesztelhetjük a működését is. Azon a gépen, amelyik kliensként van beállítva (nincs bekapcsolva a "Server mode"), automatikusan aktiválódik a jobb gombos menü a tray ikonon:

Az "Initailize VPN network" funkció indításával elindul a VPN kapcsolódási folyamat, majd pár másodperc múlva (max.: 30), ha mindent jól állítottunk be, a következő üzenetek jönnek fel egymást követően:

Ha a Connected üzenet is megjelenik, akkor az azt jelenti, hogy a szerver és a kliens is kapcsolódott a privát hálózatra és látják egymást. Ha hiba történt, akkor az is kiírásra kerül.

Szétkapcsolási folyamat indítása->"Close VPN network":

A Disconnected üzenet jelzi, hogy a szerver is és a kliens is problémamentesen lekapcsolódott a VPN-ről.

A cikk még nem ért véget, kérlek, lapozz!

Hirdetés

Előzmények

Hirdetés

Copyright © 2000-2021 PROHARDVER Informatikai Kft.