IPCop + VPN bridge

A feladat a k0vetkező. A cégnek van egy telephelye, belső hálózata Internet eléréssel. Az Internet elérést egy router hozza létre. A router mögött a proxy szolgáltatást és egyéb funkciókat egy IPCop biztosítja (akár DMZ-ből).

VPN Bridge

Ehhez a hálózathoz akar biztonságosan csatlakozni egy gép az Interneten keresztül, mégpedig olyan módon, mintha a gép a belső hálózaton lenne. Ehhez VPN kapcsolatot kell felépítenie és ezt a VPN kapcsolatot a VPN szervernek össze kell kapcsolnia a belső hálózattal.

Hozzávalók:

  • 1 db IPCop 1.4.21-es (www.ipcop.org)
  • 1 db módosított kernel, amiben van bridge támogatás (2.4.36-os vagy 2.4.36 SMP-s)
  • brctl bináris (ki lehet másolni az embcop féle módosított ipcop-ból)
  • ZERINA (ez az OpenVPN IPCop-ba beépülő verziója)
  • bridge létrehozó és törlő script
  • és egy jó szövegszerkesztő, ha a VI nem elég kézre álló: Joe

Azt feltételezzük, hogy a router és az Internet adott és működik. A router belső címe 192.168.1.1. A külső nem érdekes jelen esetben, de elérhető az Interneten pl. a pps.gotdns.com címen. Első lépésként fel kell telepíteni az IPCop-ot majd ki kell cserélni a kernelt. Az IPCop telepítés nem része ennek a leírásnak. Ha az IPCop telepítve van és működik is (azaz a Green oldalon lévő kliensek a proxy-n keresztül tudnak pl. böngészni, az IPCop webes felülete elérhető és az SSH elérést is engedélyeztük) akkor jöhet a kernel csere. Ehhez le kell tölteni a fentebb linkelt kernelek valamelyikét, pl. a sima 2.4.36-ost. Ezt fel kell másolni az IPCop gépre (vagy azon kell letölteni), pl scp-vel (vindóz alatt winscp-vel). Az IPCop konzoljáról vagy egy SSH konzolról kell elvégezni a kitömörítést, ezzel a paranccsal:
tar xjf ipcop-1.4.21-kernel-2.4.36.6.tar.bz2 -C /
Majd ezt is le kell futtatni:
touch /var/run/need-depmod-2.4.36
Ez utóbbi ha nem megy, akkor sincs nagyobb baj. Nekem nem sikerült. Az IPCop újraindítása után már a módosított kernel fog működni. Most lehet felmásolni a brctl programot, ami a bridge létrehozásához kell majd és a ZERINA telepítőjét, ami az OpenVPN szervert adja. A brctl felmásolása után futtathatóvá kell tenni a fájlt (chmod 755 brctl). Az IPCop konzoljáról vagy egy SSH konzolról a Zerina telepítőjét ki kell csomagolni (tar xzvf ZERINA-0.9.5b-Installer.tar.tar) és le kell futtatni (./install). Ha nem fut le, az azért van mert az IPCop nem megfelelő verzióját találja. Ezzel nem kell különösebben foglalkozni, ki kell szedni az install scriptből a verzió ellenőrzést. Ez az a pár sor amit el kell távolítani a fájlból:

image

A módosított script letölthető innen (ne felejts el futtathatóvá tenni):

Ha magunk akarjuk a scriptet módosítani, akkor a vi vagy a joe használható. A joe telepítése a következő: felmásoljuk a joe35.tar.tar fájlt az IPCopunkra, majd ott a tar xzvf joe35.tar.tar paranccsal kicsomagoljuk. Belépünk a joe35 könyvtárba és ott elindítjuk a telepítést a ./install -i paranccsal. Ezután a joe már használható. A joe-val megnyitott fájlt könnyen lehet szerkeszteni. A két legfontosabb amit a joe-ról tudni kell: 1. kilépés mentés nélkül: ctrl+c, 2. kilépés mentéssel: ctrl+k majd x.

OpenVPN konfigurálás

imageAz első lépés a konfigurálásban az IPCop webes felületéről történik. A VPN menüben az OpenVPN alatt kell kezdenünk. Ami itt fontos és be kell állítani:

  1. engedélyezni kell a Red interfészen az OpenVPN-t
  2. meg kell adni a publikus nevét a szerverünknek (ahogy az Internetről is elérhető)
  3. az OpenVPN device TAP legyen
  4. a destination portot 1194-re kell állítani
  5. az LZO compression-t be kell kapcsolni
  6. Az OpenVPN Subnet mezőben mindegy mi van, mert nem ezt fogjuk használni.

image

Ha ez kész, akkor jöhet a Generate Root Certificate. Kattints a gombra!

image

Ennél a pontnál meg kell adni a szervezet nevét, a publikus elérhetőségét a szervernek (FQDN) és az országot.

image 

Ha ez is kész, akkor készíteni kell egy kliens csatlakozásához szükséges certificate és konfig fájlt. Ez az oldal legalsó részén lévő add gombbal indul:

image

Meg kell adni a kapcsolat típusát, ami Host-to-Net legyen, majd még egyszer egy Add gombra kattintva meg kell adni a többi adatot is: kapcsolat neve (PPS), Felhasználó neve (Kapcsolat1) és a jelszó, ami majd a kapcsolat felépítéséhez kell a VPN kliens program számára (PKCS12 File Password mezőbe):

imageHa ezeket sikeresen beállítottuk, akkor a VPN szerver már majdnem rajtra kész, de még nem indítjuk el. A szerver konfigurációján még reszelni kell egy kicsit, de azt már nem a webes felületről tesszük. A webes felület a későbbiekben már csak a szolgáltatás leállítására vagy újraindítására használható! Ez fontos! A certificate rész kb így néz ki:

image

Lépjünk be az IPCop konzolra és nyissuk egy szövegszerkesztővel meg a /var/ipcop/ovpn/server.conf fájlt. A fájlt tartalma ez legyen:

image

Amit erről a konfigurációról tudni kell:

  • tap interfészt használ
  • a 1194-es UDP porton kommunikál
  • a szerver bridge üzemmódban fog működni, ami azt jelenti, hogy a VPN kliensek a helyi hálózati IP cím tartományból fognak IP címet kapni.
  • a kliens megkapja a DNS és a WINS szerver IP címét.
  • a kliens megkapja a route-ot a DNS és a WINS eléréséhez, ami a helyi hálózat default gateway IP címe

Most kell lefuttatni az IPCop-on a bridge-start.sh scriptet. Ez a script létrehozza a tap0 és br0 interfészt, valamint az egészet összefogja (birdzseli) at eth0-val. Ahhoz, hogy ez működjön is, az IPCop tűzfalához is hozzá kell adni 3 új szabályt, az alábbi parancsokkal:

iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT


Elértünk ahhoz a ponthoz, ahol a VPN szervert elindíthatjuk az IPCop webes felületéről. Be kell lépni a VPN menüben az OpenVPN-be és a Start OpenVPN server gombra kell kattintani. Ha minden jó, akkor a Current OpenVPN server status zölden fog megjelenni, azaz az IPCop-unk várja a kliens bejelentkezését.



A beállítások véglegesítése az IPCop gépen



Ahhoz, hogy egy restart után is működjön minden, a /etc/rc.d/rc.local fájlba kell beírni ezeket a sorokat:



#!/bin/sh

#Added for zerina - BEGIN


echo "Starting bridge"


/root/bridge-start.sh


echo "Starting openvpn (if enabled)"


/usr/local/bin/openvpnctrl --start-daemon-only


iptables -A INPUT -i tap0 -j ACCEPT


iptables -A INPUT -i br0 -j ACCEPT


iptables -A FORWARD -i br0 -j ACCEPT


#Added for zerina - END



A kliens oldal beállítása



A kliensnél egy vindózos kliens beállítása a következő. Az IPCop webes felületéről le kell tölteni a kliens csatlakozásához előzőleg létrehozott certificate-et és konfig fájlt. Ez az OpenVPN menüből érhető el, a Client and status control résznél, az image ikonra kattintva. Erre egy zip fájlt tölt le a böngésző program. A zip fájl tartalmát kell kicsomagolni majd. A vindózos OpenVPN + GUI innen tölthető le: openvpn-2.0.9-gui-1.0.3-install.exe A kliens+GUI feltelepítése után az előbb letöltött zip fájl ki kell csomagolni a


C:\Program Files\OpenVPN\config könyvtárba. Ezután ha az óra melletti ikonra imagekattintunk jobb gombbal, akkor megjelenik egy status ablak és a jelszó bekérő ablak. Azt a jelszót kell megadni, amit a kliens oldali cetrificate létrehozásához használtunk előzőleg.



image



A helyes jelszó megadása után a kapcsolat létrejön. Ha mégsem jönne össze, akkor a példán látható ablakban meg fog jelenni az oka, pl hibás vagy ismeretlen paraméter. Tipikus, amikor tap-mtu sor van a konfig fájlban, mert a tap interfésznek nincs ilyen opciója. Ekkor a konfig fájlt meg kell nyitni egy szövegszerkesztővel (pl.: notepad) és ki kell törölni azt a sort vagy egy # jellel a sor elején ki lehet kommentezni.



image



image



Az összes szükséges fájl egyben zippelve:

Megjegyzések

Csaba üzenete…
Szia!

Nagyon jó leírás. Lenne kérdésem.
- Nekem 1.4.21-es ipcop van. Ebben van vpn az mivel rosszabb, mint az openvpn?
- Mindenképpen kell e kernelfrissítés és a többi, hogy használhassam a zerinat?
Bocs, még csak kezdő vagyok.

Csaba

Népszerű bejegyzések ezen a blogon

Asus WL-700ge firmware upgrade

Gigaset C470IP setup