Kulcsszavak: Ubuntu 22.04 server, OpenVPN server, Reverse proxy, UFW
1. Bevezető
A következő leírás egy olyan megoldást vázol fel, aminek a segítségével költséghatékonyan lehet internetes szolgáltatásokat üzemeltetni, saját kézben. Egy vállalkozás vagy kisvállalat a munkavállalói vagy az ügyfelei részére üzemeltethet olyan szolgáltatást, ami nagy tárhely igényű vagy magas számítási kapacitást, avagy erős és többmagos processzor teljesítményét igényli. Az ilyen erőforrás igényes szerverek bérlése magas költségekkel járhat, ami egy induló vállalkozásnál elég megterhelő lehet.
2. Mire használható?
Az alábbi megoldás egy alapszintű VPS (Virtuális Privát Szerver) bérlésével megvalósítható VPN (Virtuális Privát Hálózat) kapcsolat létrehozását írja le, aminek a segítségével a saját telephelyen lévő kiszolgáló elérhető lesz az interneten. Egy alapszintű VPS már 5 Euró körüli áron bérelhető, ami bőven elég a VPN kapcsolat üzemeltetéséhez. További előny, hogy a VPN szerverhez több telephelyi kiszolgáló is csatlakoztatható, így számos szolgáltatást lehet nyújtani egy VPN szerveren keresztül. Például besorolható a céges weboldal kiszolgálója, a céges levelező szerver, egy céges felhő szerver több terabájt tárhellyel és még a számlázó program kiszolgálója.
3. További lehetőségek
Ez a megoldás használható komolyabb játékszerverek üzemeltetésre is. Például: Minecraft, Call of Duty, Counter Strike, Multi Theft Auto, Jedi Knight, OpenTTD, TeamSpeak, V Rising. Az ilyen játékszerverek külön-külön is sok erőforrást igényelhetnek, de ezzel a technikával akár több játékszerver is futtatható egy publikus IP címről.
4. Követelmények
A leírás a fordított proxy szerverként használt VPN szerver leírását és a telephelyi vagy otthoni kiszolgálók csatlakoztatását tartalmazza. Az alapfelállás feltételezi a telephelyen lévő Windows vagy Linux rendszert futtató számítógépet, amiről a szolgáltatások fognak futni. A jelenlegi otthoni internet szolgáltatások már elég stabilak és gyorsak a VPN kapcsolat folyamatos fenntartásához.
A VPN telepítéséhez egy alapszintű VPS szükséges. Ubuntu 22.04 server operációs rendszer, 1 VCPU, 1 GB Ram, 10 GB tárhely. A leírás igényli a frissen telepített Ubuntu 22.04 server meglétét, illetve a beállított SSH kiszolgálót a szerveren.
5. VPN szerver telepítése
5.1 Rendszer előkészítése:
Frissítsük a rendszert:
sudo apt update
sudo apt upgrade
5.2 Tűzfal telepítése:
sudo apt install ufw
5.3 Tűzfal alapvető beállítása:
Alapvető tűzfalszabályok hozzáadása:
– SSH kapcsolat engedélyezése (port 22/tcp)
– VPN szerver port engedélyezése (port 1194/udp)
sudo ufw allow ssh
sudo ufw allow 1194/udp
sudo ufw enable
A fenti parancsokkal bekapcsoltuk a szükséges portokat és aktiváltuk a tűzfalat.
5.4 A tűzfal előkészítése a későbbi szolgáltatások port továbbküldésére (port forward):
Nyissuk meg szerkesztésre ezt a fájlt:
/etc/default/ufw
Keressük meg ezt a szabályt:
DEFAULT_FORWARD_POLICY="DROP"
Írjuk át erre:
DEFAULT_FORWARD_POLICY="ACCEPT"
Nyissuk meg szerkesztésre ezt a fájlt:
/etc/ufw/sysctl.conf
Keressük meg ezt a szabályt:
#net/ipv4/ip_forward=1
Vegyük ki előle a megjegyzés karaktert:
net/ipv4/ip_forward=1
Nyissuk meg szerkesztésre ezt a fájlt:
/etc/sysctl.conf
Keressük meg ezt a szabályt:
#net.ipv4.ip_forward=1
Vegyük ki előle a megjegyzés karaktert:
net.ipv4.ip_forward=1
5.5 Az OpenVPN telepítése:
A telepítést egy script segítségével a legegyszerűbb végrehajtani.
Telepítő script letöltéséhez adjuk ki a következő parancsot:
wget https://git.io/vpn --inet4-only -O openvpn-ubuntu-install.sh
Telepítő futtatása:
chmod +x openvpn-ubuntu-install.sh
sudo ./openvpn-ubuntu-install.sh
5.6 A telepítés menete:
Először a használt protokollt kell kiválasztani. Itt válasszuk az 1-es (UDP) lehetőséget.
Második kérdés a portra vonatkozik. Itt nyomhatunk entert, amennyiben a 1194-es portot fogjuk használni.
A harmadik kérdés a DNS szerver beállítására vonatkozik. Válasszuk a 2-es számú lehetőséget, ami a Google DNS szervereire fog mutatni.
A következő kérdésnél létre kell hoznunk az első felhasználót. Írjunk be egy felhasználónevet. A felhasználónévnél mellőzzük az ékezetes betűket és speciális karaktereket, de számot tartalmazhat.
Majd megjelenik a “OpenVPN installation is ready to begin.” kiírás, amire nyomjunk entert.
A telepítő lefutása után a /root/ mappában megjelenik a megadott felhasználónévvel egy .ovpn kiterjesztésű fájl. Erre lesz szükség a kliensen a szerverhez való csatlakozáshoz.
Másoljuk át a .ovpn fájlt az aktuális felhasználónk home könyvtárába. A “user1” és a “vpnuser1” neveket helyettesítsük be az általunk használt nevekkel:
mkdir vpnusers && sudo cp /root/vpnuser1.ovpn /home/user1/vpnusers/vpnuser1.ovpn
5.7 Újraindítás, ellenőrzés:
A sikeres telepítést követően indítsuk újra a rendszert:
sudo shutdown -r now
Újraindítás után lépjünk be újra a szerverre és ellenőrizzük az OpenVPN szerver működését:
sudo systemctl status openvpn
A megjelenő adatok között az “Active: active” jelöli a szolgáltatás futását.
ip a
A megjelenő adatok között a “tun0” “inet 10.8.0.1/24” értékek jelölik a VPN hálózat működését.
5.8 További felhasználók létrehozása:
Amennyiben további VPN felhasználókat szeretnénk létrehozni, futtassuk újra a telepítő scriptet.
sudo ./openvpn-ubuntu-install.sh
A megjelenő menüben az 1-es pontot (1) Add a new client) választva adhatunk hozzá további felhasználót. A 2-es pontban (2) Revoke an existing client) törölhetünk egy már létező felhasználót. Tehát válasszuk az 1-es pontot majd adjuk meg a kívánt felhasználó nevet. Ezután az új felhasználó beállító fájlját legenerálja a rendszer.
Az elkészült felhasználó .ovpn fájlját másoljuk át az aktuális felhasználó home könyvtárába. A “user1” és a “vpnuser2” neveket helyettesítsük be az általunk használt nevekkel:
sudo cp /root/vpnuser2.ovpn /home/user1/vpnusers/vpnuser2.ovpn
6. Kliensek csatlakoztatása a VPN szerverhez
6.1 Ubuntu 22.04 kliens csatlakoztatása:
Lépjünk be a kliensre lokálisan és nyissunk meg egy terminál ablakot. Frissítsük a rendszert.
sudo apt update && sudo apt upgrade -y
Telepítsük az OpenVPN klienst:
sudo apt install openvpn
Másoljuk át a csatlakozáshoz szükséges .ovpn beállító fájlt a VPN szerverről. A “user1”, “vpnclient1” és a “vpnuser1” neveket helyettesítsük be az általunk használt nevekkel, továbbá az IP címet cseréljük ki a VPN szerverünk IP címére vagy domain nevére:
scp -P 22 user1@194.182.82.189:/home/user1/vpnusers/vpnuser1.ovpn /home/vpnclient1/vpnuser1.ovpn
Az .ovpn beállító fájlt másoljuk át a működési helyére:
sudo cp vpnuser1.ovpn /etc/openvpn/client.conf
Indítsuk el a VPN klienset. Amennyiben távolról (ssh) jelentkeztünk be a kliensre, az OpenVPN szolgáltatás indításával meg fog szakadni a kapcsolat. Ezután már csak lokálisan vagy a VPN szerveren keresztül tudunk belépni a kliensünkre:
sudo systemctl start openvpn@client
Ellenőrizzük a kapcsolatot:
ip a
A megjelenő adatok között a “tun0” hálózati vezérlőnek kell megjelennie és a hozzá tartozó 10.8.0.2/24 IP címnek.
Publikus IP cím ellenőrzése:
dig +short myip.opendns.com @resolver1.opendns.com
A megjelenő IP címnek meg kell egyeznie a VPN szerver publikus IP címével.
Sebesség méréshez telepítsük a speedtest.net scriptjét:
sudo apt-get install curl
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest
Sebesség méréshez adjuk ki a következő parancsot:
speedtest
Első indításnál el kell fogadni a felhasználási feltételeket, majd utána indul a sebesség mérés.
6.2 Windows 7/10/11 kliens csatlakoztatása:
A Windows rendszert futtató kliensünkön a Filezilla segítségével lépjünk be a VPN szerverre és töltsük le a .ovpn fájlt.
Majd az OpenVPN weboldaláról töltsük le a kliens programot és telepítsük fel.
https://openvpn.net/client-connect-vpn-for-windows/
A program megnyitása után tallózzuk ki a letöltött .ovpn fájlt és adjuk hozzá. Ezután csatlakozhatunk is a VPN szerverünkhöz. A beállításokban állítsuk be az automatikus kapcsolódást (Settings -> Launch Options -> Restore connection).
Kapcsolat ellenőrzéséhez nyissunk meg egy böngészőt és írjuk be a https://speedtest.net címet. Itt a “Go” felirat alatt láthatjuk a publikus IP címünket, aminek meg kell egyeznie a VPN szerver publikus IP címével. Ha ez stimmel, akkor a “Go” feliratra kattintva indíthatunk egy sebességmérést, amivel a kapcsolatunk sávszélességét is megtudjuk.
7. Port továbbküldés beállítása
A port továbbküldés (port forward) beállítása szükséges a VPN kliensen lévő kiszolgáló interneten történő eléréséhez és publikussá tételéhez. A következő példában szereplő portokat írjuk át a szolgáltatás által igényelt portokra.
7.1 Web szerver beállítása:
Példaként állítsunk be egy web kiszolgálót http és https protokollokkal. A VPN kliensen, amin a kiszolgáló fut, legyen nyitva a szükséges port.
A szolgáltatást futtató kliens gépen kérdezzük le a “tun0” vezérlőhöz tartozó IP címet. Ez általában 10.8.0.2. Windows rendszeren nyissunk meg egy cmd vagy PowerShell ablakot és az “ipconfig” paranccsal megkapjuk az IP címet. Ubuntu rendszeren egy terminál ablakba gépeljük be a “ip a” vagy “ifconfig” parancsot.
Lépjünk be a VPN szerverre terminálon (ssh) keresztül. Engedélyezzük a http és https portokat a tűzfalon:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Kérdezzük le a hálózati vezérlő nevét:
ip a
A példában szereplő vezérlő neve: ens192. Ezt helyettesítsük be a saját szerverünk vezérlőjével.
Nyissuk meg szerkesztésre ezt a fájlt:
/etc/ufw/before.rules
Illesszük be közvetlenül a fájl elejére a következő szabályokat. Az “ens192” értéket cseréljük ki a saját szerverünk hálózati vezérlő nevére:
# START OPENVPN RULES
# NAT table rules
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# Port továbbküldés a kliens felé
-A PREROUTING -i ens192 -p tcp --dport 80 -j DNAT --to-destination 10.8.0.2
-A PREROUTING -i ens192 -p tcp --dport 443 -j DNAT --to-destination 10.8.0.2
# Hálózati forgalom átküldése a ens192 vezérlőn
-A POSTROUTING -s 10.8.0.0/8 -o ens192 -j MASQUERADE
COMMIT
# END OPENVPN RULES
A “–dport 80” és a “–to-destination 10.8.0.2” szabályok változtatásával és újbóli hozzáadásával tudunk további szolgáltatásokat elérhetővé tenni a szerverünkön.