VPN otthonra

Tipikus helyzet, otthon ül egy Debian router dinamikus IP-n (nincs NAT), és szeretnék vele VPN-ezni Windows 7-ről. PPTP-ben ugyebár már nem bízunk, adja magát az L2TP+IPsec. Találtam howtokat, de maradt bennem pár kérdés.

Külön kell egy IPsec daemon, pl. openswan, és külön az L2TP daemon, pl. xl2tpd. Ezek honnan tudnak egymásról? Az a tippem, hogy sehogy, tűzfalon csak az IPsec-et engedem be, és az L2TP csomagok az IPsec-en át jönnek, de ezt a tűzfalazást nem részletezte a howto, amit találtam.

Csak alapszinten tudom, mi az az IPsec, és azt nem értem, hogy ha már van egy IPsec kapcsolat, minek az L2TP egyáltalán? Eljut a csomag A-ból B-be biztonságosan, mit ad nekem az L2TP? Vagy talán pont erre találták ki az IKEv2-t, mert a Windows 7 olyan VPN-t is tud, ott nincs melléírva semmi egyén protokoll.

Végül pedig el kellene érnem a dinamikus IP-s routert, dinamikus DNS izékkel nincs kedvem szórakozni, arra gondoltam, menjen az egész IPv6-on. Igénylek valami jófajta tunnelt, így megvan a fix IP cím, és még az extra tapasztalatszerzés is megvan. Elvileg mennie kellene, nem?

UPDATE: megcsináltam

Hozzászólások

újévet!

megcsináltam a fenti (legelső) link alapján.
ha a vpn server router mögött van, és elvileg minden port jol van forwardolva, akkor miért nem mukodik?

iylen hibát kapok:

cannot respond to IPsec SA request because no connection is known for 87.242.2x.xxx/32===192.168.0.2:4500[192.168.0.2]:17/1701...84.225.15x.1xx:4500[84.225.15x.1xx]:17/%any

a 84.225... a laptop mobilnettel, a 87.242... az itthoni ip, a 192.168.0.2 a vpn gép...

mi lehet a megfejtés? milyen portokat kell pontosan dobni a 0.2-re?

ha lanon csatlakozok, akkor működik...

nem ma kezdtem(igazándiból tegnap... :D)

köszönöm.

először de. :)

egyébként ha a titkositást kiveszem(win7), akkor mukodik.
ilyenkor ki van remelve a ipsec.confbol a keyexchange=ikev1. asszem ilyenkor ikev2 a default.
ebben az esetben ha titkositva kérem(PSK), akkor ez a hibaüzenet:

packet from 84.225.xx.xxx:500: initial Main Mode message received on 192.168.0.2:500 but no connection has been authorized with policy=PSK

ha lanon akarok csatlakozni titkositással, akkor is.

ipsec.secretsben ez van:

192.168.0.2 %any : PSK "elkepzelhetetlenjelszo"

tplink 1043 gyári fw-s router, de ott kiprobáltam van vmi ipseces beállitás, ha letiltom, egyáltalán nem megy, engedélyezve van már minden.


------------------------
Jézus reset téged

visszatértem ehhez a megoldáshoz, de a joistennek nem akar műkodni, a googleben már minden linket visitednek mutat, annyit néztem, valakinek van ötlete?

amit még nem írtam le, hogy titkositás nélkül mukodik, csak PSK esetén nem akar menni kintről, de lanon megy. tehát a NAT felé lehet gond. elvileg a WR1043ND-nél ezt írja az oldalán:

VPN Pass-Through PPTP, L2TP, IPSec (ESP Head)

tehát támogatja...

köszi


------------------------
Jézus reset téged

mérgembe a linuxból dobtam össze routert, 2 eth, wan az egyik, lan a másik, és be tudtam lőni szépen, tűzfallal együtt. opensuse. de ezzek a kiszabott 1043as tplinkkel az uristennek nem megy...

na jó, hajlandó vagyok érte fizetni :D


------------------------
Jézus reset téged

Nem ilyen egyszerű a helyzet. Az ipsec egy bonyolult protokollkészlet és az ikev1-hez ráadásul sokan saját nem kompatibilis kiegészítéseket írtak. Lásd xauth,modecfg,hybrid auth,unity stb. Ezeket nem mindenki támogatja, sőt általában csak aki kitalálta őket.
Szóval például a Windows ikev1-el a többszintű authentikációt (xauth), továbbá a cím/paraméter (pl dns) allokációt (modecfg) nem támogatja natív módon. Persze ha a megfelelő third party vpn klienst feltelepíted akkor az akkor a saját szerver megoldásával működni fog. (Cisco, Juniper, Checkpoint stb)
Szóval a Microsoft választása az volt az ikev2 előtt, hogy az ilyen jellegű dolgokat az l2tp(azon beül a ppp)-vel valósítja meg. És igen l2tp használata esetében az ipsec transport módban működik Windowson.

Az ikev2-ben jelentősen továbbfeljesztették a protokollt és szabványosítottak egy csomó dolgot.

Ennek jobban utánanéztem. Nagyon tetszik az IKEv2-ben, hogy elvileg modern és szabványos, tudja a Windows 7, elég hozzá egy démon (vs. L2TP 2 démon), és tud mobility-t is. De nem tetszik benne az, hogy csak egy szintű auth van (legalábbis Windows 7 kliens nem tud külön machine+user authot, mint az L2TP), és Android sem ismeri (de az L2TP-t igen, mondjuk ez távlati terv csak). Úgyhogy az L2TP áll nyerésre.

Ugyanakkor strongswan-nal tudok olyat, hogy rightsourceip=%dhcp, ekkor a DHCP szerveremtől kér IP-t és DNS-t, de xl2tpd-ben ezt még nem találtam meg.

--

Android-ra van Strongswan kliens, sajnos csak 4.0+-os készülékeken megy:

https://play.google.com/store/apps/details?id=org.strongswan.android&hl…

A strongswan természetesen tud 2 szintű authot, de hogy a windows7 tudja-e ezt azt nem tudom.

Egy példa konfig :

http://www.strongswan.org/uml/testresults/ikev2/mult-auth-rsa-eap-sim-i…

Nyilván, nem csak eap-sim-id lehet a második auth.

Köszönet godot-nak, végül a javaslatára IKEv2-t építettem ki strongSwan-nel.

Nagyon kulturáltnak tűnik az egész, rendesen csomagból felmegy Debianra egész friss verzió, könnyű beállítani, nagyon sok mindent tud, és főleg nagyon jól dokumentált. A kliensnek tud DHCP-vel IP-t és DNS-t adni, ezt Windows 7 nagyon szépen kezeli, és persze a routing is automatikus mindkét oldalon.

Az IPSec-ben maximálisan bízok, az is tök jó (habár eleinte megzavart), hogy a nyers és a tunnelezett adatforgalom is külön-külön átmegy a tűzfalon. (Egy fokkal szebb lenne, ha a két forgalom nem egy interfészen menne, de úgy látom, a Linux kernel IPSec stackjének adottsága, hogy nincs ipsec0 interfész.)

Egyszerű kis PKI-t építettem ki, Windows is szereti. No-ip.org-nál regisztráltam magam, pársoros saját dhcp hook scripttel tartom frissen az IP címet (megfelelően paraméterezett wget, bőven jó, nem kell semmit telepíteni). Saját updown scripttel állítok tűzfal szabályt, és innen emailt is küldök magamnak audit célból, így nem zavar, hogy csak egyszintű az autentikáció (vö. L2TP).

Külön nagy plusz a mobilitynek, és minden más mellett ezt is tökéletesen kezeli a Windows 7.

IPv6-ot végül mellőztem, legalábbis egyelőre, mert dinamikus IP-kkel is tök jól megy az egész, de akár IPv6-on is menne elvileg.

--

A tűzfalazáshoz javaslom nézd meg az iptables policy match -et ezzel kiválóan lehet kezelni a tunnelezett és a plain forgalmat külön-külön.

Pl., ha nem épül ki az ipsec kapcsolat (nincs a kernelben ipsec policy), akkor nem jó dolog ha az amúgy tunnelezett hálózatból valami enkapszuláció nélkül elhagyja a default gw-n keresztül a szervert, akkor ezt le lehet tiltani kb így:

iptables -A OUTPUT --dst 10.0.0.0/8 --out-interface wan ! -m policy --dir out --pol ipsec -j REJECT --reject-with icmp-net-unreachable
iptables -A FORWARD --dst 10.0.0.0/8 --out-interface wan ! -m policy --dir out --pol ipsec -j REJECT --reject-with icmp-net-unreachable

Továbbá az enkapszuláció előtti forgalmat is lehet nézni nflog targeten keresztül a MANGLE INPUT, OUTPUT láncokon, hasonlóan mintha lenne ipsec0 intefész, ez hibakereséshez jól jön.

Pl.:

iptables -t mangle -A INPUT -m policy --pol ipsec --dir in --src 10.0.0.0/8 -j NFLOG --nflog-group 30

dumpcap -i nflog:30 -w ipsec.pcap

Szintén OpenVPN-em van, de engem is érdekel az IKEv2. Visszatérek.

Apró kérdés, de tényleg VPN kell?
Egy routeren keresztüli ssh tunneling-gel sokkal egyszerűbben lehetne ugyanis biztonságos kapcsolaton keresztül "átfűzni" az egymással beszélgetni akaró alkalmazásokat, miközben "kifelé" csak egy ssh session látszik.