MikroTik, L2TP VPN

 ( nagylzs | 2019. május 26., vasárnap - 7:21 )

Ez a topic a https://hup.hu/node/164422 folytatása. Ott be akartam állítani egy OpenVPN szervert. Ez sikerült, de kiderült hogy lassú. Ezért L2TP-vel próbálkozom.

A router (192.168.13.254) oldaláról ezeket csináltam:


/ppp profile add name=ipsec_vpn local-address=192.168.13.254 dns-server=192.168.13.254,8.8.8.8
/interface l2tp-server server set enabled=yes default-profile=ipsec_vpn authentication=mschap2
/ip ipsec policy set [ find default=yes ] src-address=0.0.0.0/0 dst-address=0.0.0.0/0 protocol=all proposal=default template=yes
/ip ipsec peer add exchange-mode=main passive=yes name=l2tpserver
/ip ipsec identity add generate-policy=port-override auth-method=pre-shared-key secret="****STRONG_SECRET_HERE****" peer=l2tpserver
/ip ipsec proposal set default auth-algorithms=sha1 enc-algorithms=aes-128-cbc pfs-group=modp2048
/ppp secret add name="user_name" password="****" service=l2tp profile=ipsec_vpn remote-address=192.168.13.100

Ezek után ezeket a szabályokat adtam a tűzfalhoz a legelejére, rögtön a beépített chain=forward action=passthrough után:


/ip firewall filter
add chain=input action=accept protocol=udp port=1701,500,4500
add chain=input action=accept protocol=ipsec-esp

Végül de nem utolsó sorban, kizártam a fattrack-ből ezeket:


/ip firewall mangle add action=mark-connection chain=forward comment="mark ipsec connections to exclude them from fasttrack" ipsec-policy=out,ipsec new-connection-mark=ipsec

/ip firewall mangle add action=mark-connection chain=forward comment="mark ipsec connections to exclude them from fasttrack" ipsec-policy=in,ipsec new-connection-mark=ipsec

/ip firewall filter add chain=forward action=fasttrack-connection connection-state=established,related connection-mark=!ipsec comment="Fast Track everything except IPSEC stuff"

Ezt a legutolsót a gyári fasttrack szabály helyére, amitől csak a "connection-mark=!ipsec" részben különbözik.

Ezek után Ubuntu 18.04 -ből próbáltam csatlakozni, úgy, hogy a phase1 és phase2-höz is ezt írtam be:

aes128-sha1-modp2048!

Ennek a következő lett az eredménye:

* csinált egy interface-t:

4: ppp0: mtu 1400 qdisc fq_codel state UNKNOWN group default qlen 3
link/ppp
inet 192.168.13.100 peer 192.168.13.254/32 scope global ppp0
valid_lft forever preferred_lft forever

* A route-hoz hozzáadott egy ilyen sort:

Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.13.254 0.0.0.0 255.255.255.255 UH 50 0 0 ppp0

* kiírta hogy sikeresen csatlakozott

Ezek után a router címét tudom pingelni ( 192.168.13.254 ), de más távoli LAN-on belül levő gépeket nem.

Ilyet próbáltam még:

arping -I ppp0 192.168.13.193

Eredménye:

arping: Device ppp0 not available.

Ami még az érdekes (de nem fontos), hogy először aes-256-cbc -vel próbálkoztam (Linux és MikroTik oldalról is ezt írtam ba), de úgy nem működött. phase1 negotiation hiba lett belőle, és nem értem hogy 256-tal miért nem kapcsolódik, ha 128-cal igen.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Na közben rájöttem hogy megint a proxy-arp hiányzik. Ha bekapcsolom a LAN oldali bridge-ben:

/interface bridge set arp=proxy-arp 0

akkor elkezd működni a ping és az összes TCP kapcsolat a LAN-on belüli gépekre. Hurrá!

Viszont marad még két probléma.

A fontosabb, hogy ha Windows 10-ből kapcsolódok, akkor MINDEN forgalmat ezen keresztül küld. Hogyan lehet Window-os kliensből beállítani azt, hogy csak a távoli LAN-hoz tartozó alhálózatba tartozó címekre használja a VPN kapcsolatot? A VPN kapcsolat beállításainál nem láttam ilyet, a speciális beállítások között sem. Enélkül pedig használhatatlan lesz a dolog arra, amire nekem kellene. Site-To-Site kapcsolatnál nem lenne probléma kézzel beállítani plusz egy route-ot, de itt egyénileg csatlakozó ad-hoc kliensek lesznek, akik egyébként más dolgokat is szeretnének közben csinálni az interneten. Nem szeretném, ha ezen keresztül youtube-oznának...

A kevésbé fontos, de számomra még mindig idegesítő proléma: miért nem tudok csatlakozni, ha átállítom a cipher-t és a hmac hash-t valami erősebbre? Kipróbáltam a különböző paramétereket, és azt tapasztaltam, hogy a pfs-group lehet bármi (1024, 2048, 4096). Ha viszont átállítom a HMAC hash-t sha1-ről bármi erősebbre, vagy a cipher-t bármi erősebbre (aes 192, aes 256, aes 512) akkor nem működik. Érdekes módon md5 -tel se megy, de például 3des -el igen (na de olyat meg ki használ?)

A windows-ban valami szándékosan butított kliens van?

Megnéztem Linuxon, és érdekes módon ott is egyedül és kizárólag a aes128-sha1-modp2048! beállítás működik.

Linux alatt sikerült beállítani azt is, hogy csak a csak az a forgalom menjen át VPN kapcsolaton, ami ténylegesen oda tartozik. De sajnos ezt csak úgy, hogy kézzel beírtam a route-okat. :( Hiába van olyan beállítás az nm-connection-editor -ban hogy "Csak automatikus (VPN) címek", valójában tojik rá. Vagy csak én nem tudom hogy kellene beállítani.

A linux olyan szempontból butább volt mint a windows, hogy a kapcsolat fölépítése után nem adta hozzá a szerver által küldött DNS kiszolgálót. Azt is kézzel kellett beírni (de legalább működik).

Android-ból is kipróbáltam, és ott sha512-t is elfogadja HMAC-hez. Ez fura!

További adalék a fő problémához: a Windows 10-es felület ugyan elrejti, de a "régi" felületen a Vezérlőpult\Hálózat és internet\Hálózati kapcsolatok alatt létrejön egy külön virtuális adapter minden VPN kapcsolathoz. Ha abban a kapcsolatban bemegyek a tulajdonságokba, akkor máris több a lehetőség. Le lehet tiltani az IPv6-ot és a WINS-t, lehet hozzáadni saját DNS szerver címet, és akár saját DNS utótagot is stb. De route-okat ott sem lehet megadni. :-(

A Windows 10-ben (is, ahogy a régebbiekben) azon a felületen ki lehet kapcsolni (le lehet tiltani), hogy a VPN kapcsolat legyen a default gateway, a felépülése után. Utána ugyan úgy kézzel fel lehet venni route szabályt, ahogy az OpenVPN-nél is szükséges. Igaz, az OpenVPN kliens ezt megoldja, de egy sima route -p add -net nem árt semminek (mikor nem él a VPN), és akkor nem kell többet foglalkozni vele.

> azon a felületen ki lehet kapcsolni (le lehet tiltani), hogy a VPN kapcsolat legyen a default gateway, a felépülése után.

Biztosan igazad van, de ezt én sehol nem találom. Igen, a persistent route hozzáadása már nem lenne gond, a fő problémám hogy nem tudom kikapcsolni.

Megtaláltam, de nagyon rosszul van elnevezve. A hálózat fülön van a szokásos "következő elemeket használja" azon belül a TCP/IPv4 tulajdonságaiban: Speciális gomb, ezen belül: "Alapértelmezett átjáró használata a távoli hálózaton"

Ezz véleményem szerint egy borzalmas elnevezés. Nem is biztos hogy ki tudnék találni ennél kétértelműbbet. Plusz a magyar nyelvű mellékelt leírása is mintha direkt el lenne homályosítva.

De legalább megvan és működik is.

Köszönöm a segítséget!

"Nem szeretném, ha ezen keresztül youtube-oznának..."
Ez by design van így. Azt nem szeretnéd, ha egy gép a hálózatodból a tűzfaladat megkerülve forgalmazna az internet felé.

Szerintem félreértettél valamit. Ez a VPN kapcsolat azok számára készült, akik mászkálnak az országban egy laptoppal és egy mobilnettel. Amikor el akarják érni a céges hálózatot, akkor csatlakoznak a VPN-hez. Azt semmiféle módon nem tudom megakadályozni, hogy VPN-hez való csatlakozás nélkül netezzenek. (Technikailag talán meg lehetne akkor, ha céges laptop lenne és megtiltanánk hogy bármilyen más módon elérjék az internetet, de itt nem erről van szó. Ezek egy része magántulajdonban levő gép.)

Ez nem egy nemzetbiztonsággal foglalkozó cég, és nem is egy bank. Meg tudják kerülni a tűzfalat. Az viszont sokat számítana, ha nem foglalná a sávszélességet oda-vissza a facebook meg az instagram meg ki tudja mi. Tudom hogy ez adatbiztonsági szempontból nem a legjobb, de ebben a kérdésben nem én döntök, és a felelős sem én vagyok érte.

Szóval hogy én mit szeretnék, abban tévedsz. Pontosan azt szeretném, hogy a cég belső tűzfalát, sőt az egész céget kikerülve nézegessen mindent amit csak tud, és csak akkor használja a VPN-t ha olyan tartalmat akar elérni, ami tényleg a cégen belül van.

> be akartam állítani egy OpenVPN szervert. Ez sikerült, de kiderült hogy lassú.

Kifejtened egy kicsit bovebben, hogy mennyire lassu?

Mekkora az upload a cegnel, hany gep van a halozaton belul, es hany gep van aki vpn-t hasznalna. Es mekkora sebesseggel ment.

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

Nagyon kezdő vagyok VPN szerver témában. ggallo kolléga véleményére alapoztam:

https://hup.hu/node/164422#comment-2352120

Ő azt írta, hogy OpenVPN megoldással max. 2 -3 Mbit sebességet tudok elérni, és hogy nem ez a megfelelő eszköz home office és road warrior munkára. Nem volt okom kételkedni benne. Megmondom őszintén, hogy nem mértem meg a sebességet. Dolgoztam kb. egy napot az OpenVPN szerver beállításán. Azért ennyire sokat, mert sokat kellett hozzá tanulnom, és sokat hibáztam. Mikor végre összejött akkor megláttam ezt a választ, és elhatároztam hogy kipróbálom az L2TP-t is. Azzal is elment egy napon, és most már azzal is van egy nagyon minimális tapasztalatom. Ez nekem mindenképp hasznos, még jól jöhet akkor is, ha Linux alapú OpenVPN szervert kell beállítanom.

Szóval a "kiderült hogy lassú"-t nem úgy kell érteni hogy sebesség tesztet csináltam, hanem úgy hogy elfogadtam amit más leírt. Ha 10-szeres faktorral tévedett, még akkor is nagyon messzire van a 300-400Mbit sebességtől, amit a router gyártója garantál L2TP+IPSec-re.

Ha eltérő véleményed van, akkor oszd meg! Tényleg annyira kezdő vagyok, hogy minden jól jön, amiből tanulhatok.

De csak hogy a kérdésre is válaszoljak: 500 Mbps download, 20 Mbps upload a jelenlegi sebesség. Főleg a fölfelé menő nem sok. Kevés az alkalmazott, 4-5 ember használná egyszerre távolról, különböző gépekről (később lehet hogy többen is). Ha igaz amit a kolléga írt, és 3Mbps az összes sebesség amit OpenVPN-en el lehet érni, akkor már érdemes lehet váltani L2TP-re, hogy ki lehessen használni azt a sebességet, ami van. Bár az sem sok, de nem mindegy hogy 1 percet kell várni egy file-ra vagy 10 másodpercet. A kis sávszélesség miatt akartam elkerülni azt is, hogy az összes forgalom ezen keresztül menjen.

Persze ez csak az elmélet, és tudom hogy még tesztelni kell. De nem bántam meg, hogy mindkettőt kipróbáltam. Kell a tapasztalat.

Az adott eszközön támogatott-e a ipsec hw gyórsítás. A másik tipikus hiba, hogy nem nézik meg az emberek az eszköz block diagrammját. Mekkora az eszköz áteresztőképessége.

Ezen adott, IPSEC-re. RB750G r3, és az adatlapja szerint kb- 400Mbit elméleti maximum sebessége van, nyilván beállításoktól is függ. Ez elfogadható, tekintve hogy a max. letöltési sebességhez közeli érték, a feltöltésinél pedig sokkal nagyobb.

A 3 Mbit nem lenne elfogadható. :-)