[Megoldva] openvpn és openwrt

Fórumok

Sziasztok!

Van egy openvpn szerver, amihez a linuxos routeremmel szeretnék csatlakozni. Igazából a router csatlakozik is hozzá, pingelni is tudom a hálózatban lévő gépeket, viszont a routerhez csatlakoztatott gépről már nem. Valami forwardolás bibi lehet szerintem, de átnyálaztam mindent amit erről találtam, de semmi nem vált be.

Valakinek van esetleg ötlete?

Hozzászólások

Akkor esetleg a tűzfalból árulj el valami részletet...

hm, az nem lenne elég, ha megrouteolnád mind router mind vpn oldalról azt a távoli alhálót?
--
>'The time has come,' the Walrus said<

Az openvpn szerver tud arról, hogy az a kliens, amelyik az openwrt-n fut, egy komplett további tartománnyal is rendelkezik? Csak mert ha nem tud róla, akkor a válasz csomag nem jó irányba fog indulni és ezért nem is fog célba érni. Ebben az esetben attól függően hogy mit szeretnél, két megoldás is lehetséges:
- a fogadón a konfigot bővíted, így tudni fog arról, hogy az owrt mögött milyen subnet van. Azt viszont semmiképp nem szabad elfelejteni, hogy ezen esetben ezt a subnetet az összes többi OVPN kliens is el fogja érni, hiszen mindegyik a fogadóhoz kapcsolódik, azt meg kiokosítottad, hogy elérhesse az owrt mögötti hálót...
- az owrt esetén beállítod, hogy az ovpn-es interface-en kimenő forgalmat is lesz szíves maszkolni. EBben az esetben a belső hálós csomagok pont úgy mennek majd az ovpn-be, mint a net felé: úgy csinálnak, mintha az owrt generálta volna őket. Eredmény, hogy a fogadó vissza tudja tolni a választ a címzettnek, esetünkben az owrt-nek, az meg szépen tovább löki a csomagot az eredeti kérdezőnek.

iptables -t nat -I POSTROUTING -o $OVPNIF -j MASQUERADE
Az $OVPNIF értelemszerűen az az interface, amit az OVPN felhúz, amikor indul. Mivel nem tudom, hogy tun vagy tap hálóról van szó, ezért az interface nevét neked kell valahonnan kinyerni.
Az OWRT-ben anno mintha lett volna egy file, amibe az user kézzel beírhatta azokat a szabályokat, amelyeket a webes felületen nem tudott beállítani, de nem ugrik be a file neve és most épp nem is találom a nálam lévő OWRT eszközön.
Erre alternatív megoldás lehet, hogy az OVPN-nel futtatsz egy scriptet és abban a scriptben állítod be ezt a maszkolást. Azt viszont ne feledd, hogy ha ezt így állítod be, akkor illik down scriptet is csinálni, hogy leálló OVPN esetén ez a szabály törlésre kerüljön. (Ha szakadozik a kapcsolat és az OPVN többször újraindul, akkor mindig felrakná ezt a szabályt is, így egy idő után már nagyon sok azonos szabály lenne - fölöslegesen. Ez előzhető meg azzal, hogy szakadás esetén törlöd a fölöslegessé váló szabályt - ha meg a kapcsolat újraéled, akkor az szépen ismét élesíti a maszkolást.) (Az openvpn-ben a security levelt meg kell növelni, ha scriptet akarsz alóla futtatni!)

Az OWRT-n szokott lenni tcpdump. Érdemes megnézni, hogy az OVPN interface-n a csomagok kimennek-e és milyen feladóval?. Ha a feladó nem az OVPN IP címe, akkor a MASQUERADE nem működik. Ha nincs kimenő forgalom, akkor a belső háló és az OVPN interface közötti átmenő forgalom tiltott, tehát engedélyezni kell. Figyelj arra, hogy a válasz csomagokat is át kell engedni!

Ha még mindig nem menne...
Nem állítom, hogy ez így jó és biztonságos, szóval érdemes alaposan utánanézni, hogy ténylegesen mi is történik, de működőképes:

miután a tap0-ra sikerült felhúzni úgy az openvpn-t, hogy a routerről elérhetővé vált a VPN túlvégén lévő hálózat, irány a LuCi.
A Network/Interfaces fülön felvettem egy új interface-t VPN_DEVICE névvel.
Protocol: unmanaged
Physical settings -> Custom interface, tap0 névvel.
Firewall settings -> unspecified -or- create: VPN (új zóna)

Végül a Network/Firewall/General settings alatt mindent Accept-re állítottam és engedélyeztem a forwardot a WAN irányába. (allow forward from source LAN, to destination WAN - természetesen kizárólag a VPN interface-en)

Ettől kezdve el tudom érni az openwrt-re akaszkodó eszközökről a VPN-t is, meg az openwrt WAN lábán lévő hálót is.

Manuálisan indítod az openvpn-t vagy /etc/init.d/openvpn start (illetve automatikus indítással) ?

Előbbi esetben megmutathatnád a parancsot, ahogy indítod+a használt konfig fájlt. Utóbbi esetben a /etc/config/openvpn tartalmát.

És hát még ott van a kérdés, hogy a tűzfal... :(

Update: Zs fenti hozzászólását olvasva jutott eszembe, hogy a Firewall -> General settings lapon a Zones alatt a Masquerading is be van jelölve a VPN zónához, csak nem emlékszem, hogy ezt én jelöltem be vagy default így volt.