MikroTik OpenVPN beállítás, elakadtam....

 ( nagylzs | 2019. május 23., csütörtök - 21:15 )

Van egy routerboard 750, ahol beállítottam egy openvpn szervert a következők szerint:


/ip pool add name="vpn-pool" ranges=192.168.13.201-192.168.13.230

/ppp
profile add name="vpn-profile" use-encryption=yes local-address=192.168.13.254 dns-server=192.168.13.254,8.8.8.8 remote-address=vpn-pool
secret add name=some_user profile=vpn-profile password=****

/interface ovpn-server server
set default-profile=vpn-profile certificate=server-certificate require-client-certificate=yes auth=sha1 cipher=aes128,aes192,aes256 enabled=yes

/ip firewall filter
add action=accept chain=input dst-port=1194 in-interface=ether1-UPC protocol=tcp
move ??? ???

A kliensre átmásoltam a cert-eket és a kliens kulcsot, és csináltam egy ilyen ovpn file-t:


client
dev tun
proto tcp
remote my.no_tellin.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
ca cert_export_ca-certificate.crt
cert cert_export_client-certificate.crt
key cert_export_client-certificate.key

Meg hozzá egy pass.txt -t, és így próbálok kapcsolódni:


sudo openvpn --config office.ovpn --auth-user-pass pass.txt

A kapcsolódás eljut odáig, hogy létrejön a tun0 eszköz:


4: tun0: mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
inet 192.168.13.230/24 brd 192.168.13.255 scope global tun0
valid_lft forever preferred_lft forever

A RouterOS oldaláról ezt látom:


/ppp active> print
Flags: R - radius
# NAME SERVICE CALLER-ID ADDRESS UPTIME ENCODING
0 some_user ovpn 89.132.222.222 192.168.13.230 8m44s AES-256-CBC/SHA1

Ha az office-ban levő bármelyik gépet próbálom pingelni, akkor azt már nem sikerül:


# ping 192.168.13.193
PING 192.168.13.193 (192.168.13.193) 56(84) bytes of data.
^C
--- 192.168.13.193 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1015ms

Ugyanakkor a RouterOS -ből működik:


/ping 192.168.13.193
SEQ HOST SIZE TTL TIME STATUS
0 192.168.13.193 56 64 0ms
1 192.168.13.193 56 64 0ms
2 192.168.13.193 56 64 0ms
sent=3 received=3 packet-loss=0% min-rtt=0ms avg-rtt=0ms max-rtt=0ms

A 750 címét tudom pingelni a kliens oldalról is, de nagyjából semmi mást:


# ping 192.168.13.254
PING 192.168.13.254 (192.168.13.254) 56(84) bytes of data.
64 bytes from 192.168.13.254: icmp_seq=1 ttl=64 time=21.2 ms
64 bytes from 192.168.13.254: icmp_seq=2 ttl=64 time=13.5 ms

Az a gyanúm, hogy egy plusz NAT szabályt kellene hozzáadni, de egy kicsit bizonytalan vagyok abban, hogy pontosan hogyan. Valami ilyesmi jutott eszembe:


/ip firewall nat add chain=srcnat action=masquerade out-interface=all-ppp

De ez nem működik.

A másik kevésbé fontos kérdésem: rá tudom valahogy venni az Ubuntu-t arra ésszerű módon, hogy ha kapcsolódva vagyok ehhez a VPN-hez, akkor átírja a DNS-t arra amit az openvpn szerver ad?

Konkrétan két módszert tudnék. Az egyik, hogy átírom a resolv.conf-ot. A másik valami ilyesmi:

https://blog.syddel.uk/?p=253

de elég sok gép van amiről be kell majd jelentkeznem, és a startup script-ek írogatása nem tűnik túl ésszerűnek... Nincs erre valami kapcsoló, vagy ilyesmi?

Köszönöm!

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ő.

Ugyanaz a vpn pool-od, mint a lan pool-od? (mármint subnet szinten) Mert az úgy nem lesz jó.


/ip pool print
# NAME RANGES
0 dhcp 192.168.13.100-192.168.13.200
1 vpn-pool 192.168.13.201-192.168.13.230

Ugyan az az alhálózat, de másik pool.

Ne így csináljam?

Ne. Legen mondjuk 192.168.14.0/24 a vpn pool-od és maradjon .13 a LAN-od.
Különben nem tud route-olni. NAT nem kell, csak két külön alhálózalat amit route-ol.

Oké, ezeket változtattam:


/ip pool add name="vpn-pool" ranges=192.168.113.100-192.168.113.200
/ppp profile add name="vpn-profile" use-encryption=yes local-address=192.168.113.254 dns-server=192.168.13.254,8.8.8.8 remote-address=vpn-pool

Még route-ot nem adtam hozzá, de most már nem tud kapcsolódni a kliens:


Thu May 23 21:37:00 2019 Attempting to establish TCP connection with [AF_INET]89.222.222.222:1194 [nonblock]
Thu May 23 21:37:01 2019 TCP connection established with [AF_INET]89.222.222.222:1194
Thu May 23 21:37:01 2019 TCP_CLIENT link local: (not bound)
Thu May 23 21:37:01 2019 TCP_CLIENT link remote: [AF_INET]89.222.222.222:1194
Thu May 23 21:37:02 2019 [*.some.example.hu] Peer Connection Initiated with [AF_INET]89.222.222.222:1194
Thu May 23 21:37:02 2019 Connection reset, restarting [0]
Thu May 23 21:37:02 2019 SIGUSR1[soft,connection-reset] received, process restarting

Nem értem mit rontottam el.

Ha hozzáadom a route-ot, akkor se. Remélem jól csináltam:


/ip route add dst-address=192.168.113.0/24 gateway=192.168.113.254

Valahogy úgy érzem hogy gateway-nek egy interface-t kellene inkább adni, de valahogy nem tudom hogy az openvpn szerverhez milyen interface tartozik. (Vagy connect bridge?)

route nem kell.
Nem tudom miért nem tudsz kapcsolódni, de biztos nem azért, mert más pool-ból adna IP cimet a vpn kliensnek.

nat-ot kitörölted?

Kéne az ovpn-server beállitás is. Vagy egy teljes config export.

megy az azonos poolbol,is, proxyarp kell hozza neki a local interfacen (ami logikus)

De akkor az bridge és nem route, nem? Tehát közös broadcast tartomány és társai, az meg nem túl egészséges vpn-en és az esetek 99%-ban felesleges is.

kerdes h mit akar lefedni....

Hülye vagyok, azt rontottam el hogy a ppp profile törlése és újra létrehozása után nem set-eltem újra a default-profile értéket a /interface ovpn-server server, arra hivatkozott amit korábban kitöröltem.

Sikeres csatlakozás után magától hozzáadott egy route-ot a végére:


/ip route> print
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE
0 ADS 0.0.0.0/0 89.222.222.254 1
1 ADC 89.222.222.0/24 89.222.222.222 ether1-UPC 0
2 ADC 192.168.13.0/24 192.168.13.254 bridge 0
3 ADC 192.168.113.200/32 192.168.113.254 0

Ha a kliens oldalon a csatlakozás után futtatom ezt:

route add -net 192.168.13.0/24 gw 192.168.113.254 dev tun0

Akkor végre mindent látok a kliens oldalálról is. De valamit biztosan nem jól csinálok, mert ezt nem kézzel kellene hozzáadnom. Ez magától kellene hogy működjön, nem? Mások hogy csinálják ezt?

Próbaképpen csatlakoztam egy másik ovpn szerverhez (amit nem én üzemeltetek) és úgy látom hogy a kliens oldalon magától hozzáadott egy csomó route-ot:


10.1.0.0 10.192.0.1 255.255.192.0 UG 0 0 0 tun0
10.2.0.0 10.192.0.1 255.255.0.0 UG 0 0 0 tun0
10.192.0.0 0.0.0.0 255.255.192.0 U 0 0 0 tun0
10.192.0.0 10.192.0.1 255.255.0.0 UG 0 0 0 tun0
128.0.0.0 10.192.0.1 128.0.0.0 UG 0 0 0 tun0

Vagy csak képzelődöm? :-)

Valahogy rá tudom venni a RouterOS-ben futó openvpn szervert, hogy hasonlókat elküldjön?

Nem tudom, hogy szerver oldalról ezeket le lehet-e küldeni a kliensnek, nekem a kliens configjában van mindig, hogy miket kell a vpn felé route-olni.

Az jó, de nekem a kliens nem egy konkrét mikrotik eszköz, hanem több linux és windows is. Azt akartam volna elkerülni, hogy csatlakozás után kézzel kelljen route-ot hozzàadni.

Nem kell kézzel semmit hozzáadni.

Beleirod a kliens konfigjába, hogy

route 192.168.113.0 255.255.255.0

és fel fogja venni magától a route tábládba kapcsolódás után, disconnectkor pedig kiveszi.

Igen, közben rájöttem. Köszönöm!:-)

Megnéztem a linuxos openvpn szerver doksiját. Ott van olyan --route kapcsoló, amivel tetszőleges route-okat lehet küldeni a kliensnek. Az a baj, hogy erre még script-et se lehet írni, legalábbis egyszerűen nem. Egy előre nem ismert ad hoc kliensen bármi lehet a tunnel eszöz neve a kapcsolódás után. A route-ot nem lehet hozzáadni a tun eszköz létrejötte előtt. Szóval ez a megoldás csak akkor használható jól, ha két telephelyet kell összekötni két, fixen telepített eszközzel.

De nekem nem erre kellene, hanem arra hogy egy adott céghez tartozó emberek otthonról tudjanak csatlakozni a cég hálózatához. Nekik nyilván nem mondhatom azt, hogy csatlakozás után adjanak hozzá static route-ot.

a mikrotik implementacio nem tamogatja a route pushot. a mikrotik eszkozokon be tudod allitani hogy huzza fel a routeokat ha fennvan a vpn

Oké szóval most látom hogy van egy olyan lehetőség, hogy az ovpn file-ba be lehet írni static route-ot:

route 192.168.13.0 255.255.255.0 192.168.113.254

Ezt hamarosan ki fogom próbálni. Ha ez működik a linuxos és a windows-os openvpn klienssel is, akkor végülis meg vagyok mentve. Igaz ugyan, hogy nem a szerver küldi el, de legalább egyetlen egyszerű konfig file-ban van, amit a kliensek gépére úgyis telepíteni kellene.

Mindamellett, a proxy arp is felizgatta a fantáziámat. Ki akaron próbálni ezt is. A hivatalos dokumentációban csak pár szót látok róla:

https://wiki.mikrotik.com/wiki/Manual:IP/ARP#Proxy_ARP

> Proxy ARP can be enabled on each interface individually with command arp=proxy-arp

Ha jól gondolom, akkor nekem ezt be kell kapcsolni a cégen belül a LAN oldalon levő összes interface-re, és az openvpn-hez tartozó virtuális interface-re is. Ennek az első része könnyen megy:


[admin@not_telling] > /interface ethernet
[admin@not_telling] /interface ethernet> print
Flags: X - disabled, R - running, S - slave
# NAME MTU MAC-ADDRESS ARP SWITCH
0 R ether1-UPC 1500 6C:3B:6B:D4:57:54 enabled switch1
1 S ether2 1500 6C:3B:6B:D4:57:55 enabled switch1
2 S ether3 1500 6C:3B:6B:D4:57:56 enabled switch1
3 S ether4 1500 6C:3B:6B:D4:57:57 enabled switch1
4 RS ether5 1500 6C:3B:6B:D4:57:58 enabled switch1
[admin@not_telling] /interface ethernet> set 1 arp=proxy-arp
[admin@not_telling] /interface ethernet> set 2 arp=proxy-arp
[admin@not_telling /interface ethernet> set 3 arp=proxy-arp
[admin@not_telling] /interface ethernet> set 4 arp=proxy-arp
[admin@not_telling] /interface ethernet> print
Flags: X - disabled, R - running, S - slave
# NAME MTU MAC-ADDRESS ARP SWITCH
0 R ether1-UPC 1500 6C:3B:6B:D4:57:54 enabled switch1
1 S ether2 1500 6C:3B:6B:D4:57:55 proxy-arp switch1
2 S ether3 1500 6C:3B:6B:D4:57:56 proxy-arp switch1
3 S ether4 1500 6C:3B:6B:D4:57:57 proxy-arp switch1
4 S ether5 1500 6C:3B:6B:D4:57:58 proxy-arp switch1

Az openvpn interface-re hogy állítsam be? Az nincs benne ebben a listában.

> route 192.168.13.0 255.255.255.0 192.168.113.254
> Ezt hamarosan ki fogom próbálni.

Kipróbáltam, működik! Ha az ovpn file-ba beírom a fenti sort, akkor az ovpn kliens (legalábbis Linux alatt) a kapcsolódás után magától hozzáad egy route-ot:

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.13.0 192.168.113.254 255.255.255.0 UG 0 0 0 tun0

Ez csúcsszuper! :-)

De azért a proxy-arp kérdés is áll, most már ki akarom próbálni úgy is.

azt a router LAN oldalara allitod, ha bridge akkor bridge, ha etherx akkor etherx... nem ismerem a helyi topologiadat - de ha neked tobb if-ed nez a helyi halo fele akkor a bridge if-en allitod. (kulonben minden if-ed L3-ban van)

De a bridge az nem a /interface ethernet alatt van, és így nem tudok rá proxy-arp-ot állítani:


/interface> print
Flags: D - dynamic, X - disabled, R - running, S - slave
# NAME TYPE ACTUAL-MTU L2MTU MAX-L2MTU MAC-ADDRESS
0 R ether1-UPC ether 1500 1596 2026 6C:3B:6B:D4:57:54
1 S ether2 ether 1500 1596 2026 6C:3B:6B:D4:57:55
2 S ether3 ether 1500 1596 2026 6C:3B:6B:D4:57:56
3 S ether4 ether 1500 1596 2026 6C:3B:6B:D4:57:57
4 RS ether5 ether 1500 1596 2026 6C:3B:6B:D4:57:58
5 R ;;; defconf
bridge bridge 1500 1596 6C:3B:6B:D4:57:55

A bridge-nek nincs number-je. Vagy ezt úgy kell érteni hogy arra állítsam be ami "running slave" a bridge-ben? Szóval elég az ether5-re?

Ha 6.40 vagy újabb szoftver van a MT-en (ez erősen javasolt, frissíts mindig a legújabbra), akkor a LAN felé néző 4 portod egy bridge-ben van (default konfig esetén ez a bridge1 nevű).

No, a bridge-re is tudsz ugyan úgy proxy-arp-t állítani, ahogy az ethernet interfészekre. A bridge interfészt úgy kell elképzelned, mint az az ethernet csatoló, amivel maga a router kapcsolódik a LAN-hoz (lehet saját MAC címe is, de jellemzően az első hozzáadott interfész MAC címét használja ha nincs beállítva saját).
Annyi a trükk, hogy ne az /interface gyűjtő lapon akard konfigurálni, hanem a saját dedikált szekciójában, ami az /interface bridge.

/interface bridge print
/interface bridge set 0 arp=proxy-arp

De én nem javaslom a broadcast domain kiterjesztését a VPN kliensek felé - legalább is éles használatra. Ugyanis úgy az összes broadcast forgalmat is megkapják a VPN kilensek - javarészt feleslegesen. Ennek addig volt leginkább értelme, amíg volt SMB1, és broadcast üzenetekkel lehetett Windows gépeket/megosztásokat tallózni a helyi hálózaton. Ez ugye (ha minden jól megy) már nincs, így értelmét vesztette.

Ja, és az egyes LAN ethernet interfészekről szerintem vedd le a proxy-arp-t, mert így semmi haszna, de később megviccel, ha úgy hagyod.

Rendben, köszönöm a tanácsokat. A bridge almenübe tényleg nem mentem be, de most már kezdem érteni a logikáját. Látom, az összes lehetséges szervernek és kliensnek külön almenüt hoz létre, így mindegyiknek több interface-t lehet létrehozni.

A broadcast domain-ben is igazad van.

Akkor most ott tartok, hogy már be tudom állítani az OpenVPN szervert, de mivel ahhoz nincs hardware-es gyorsítás és lassú, ezért megpróbálom L2TP-vel is. Már tegnap elkezdtem, és természetesen abban is elakadtam. Arról nyitni fogok egy újabb topicot, mert az nem passzol a címhez.

l2tp+ipsec viszont nem fogsz tudni routeot letolni....

Szia! Igen, közben nyitottam egy új topic-ot erről, mert ez már nem OpenVPN:

https://hup.hu/node/164453#comment-2352621

Sajnos nem csak az a baj, hogy nem tudok route-ot letoltni rajta, hanem az is hogy az ÖSSZES forgalmat azon keresztül akarja küldeni a Windows-os kliens. Az android és a linux kliensnél be tudtam állítani azt, hogy csak a LAN alhálózatába menőket küldje arra. De Windows-ban egyáltalán nem látok erre beállítást. :-(

Azt ne feledd el, hogy a 750-es (ide értve a Gr3-at is, ami már HW IPsec AES gyorsítást is tud) az OpenVPN-t CPU-ból csinálja, és 2-3 Mbit a max sebesség rejta keresztül (míg a Gr3 L2TP/IPsec-en tud 400 Mbit-et pl.). Szóval a road warrior felálláshoz, home office munkához, nem ez a megfelelő eszköz/konfiguráció szerintem.

Minden Mikrotik CPU-ból OpenVPN-ezik, ráadásul egy szálon (hiába 36 magos a CCR1036), így ha az OpenVPN kötött, akkor javaslom egy PC-s verzió beüzemelését, ha a Mikrotik kötött, akkor abból egy HW IPsec gyorsítós verziót javaslok, mondjuk L2TP/IPsec VPN-nel.

De bármelyiket is választod, a kliensen valamennyit konfigurálni kell egyenként, nem tudod szerver oldalról megoldani. Míg PC-s OpenVPN szerverrel csak egy minimál kliens konfig kell, és utána akár kliensenként egyedileg tudsz push módon konfigot leküldeni.

Persze nem szóltam, ha az összesen 2-3 Mbit sávszélesség elég az összes becsatlakozó kliensnek, mert mondjuk csak távfelügyel/távadminisztrál pl. SSH-n.

Köszönöm a tanácsokat. Nagyon hasznosak. Utánanézek a L2TP/IPsec-nek is.