Toto je funkční mnohokrát ověřený návod na zprovoznění L2TP/IPSec VPN pro připojení z Windows, Linuxu, macOS, iOSu a Androidu na vás Mikrotik. Přistupujete pak k zařízením v lokální síti pod lokální IP a brouzdáte pod vnější IP adresou Mikrotiku po internetu. Tento návod je orientován spíš na GUI, než na konzoli. Jsou to původně moje zápisky, takže text není úplně uhlazený, ale na funkci to nemá vliv.

Krok 1: Firewall pravidla

V první řadě se připojíme přes WinBox do Mikrotiku a povolíme pár pravidel na firewallu (IP->Firewall):

chain: input
protocol: UDP
in interface: gateway (typicky ether1, nebo ether1-gateway)
dst port: 500,1701,4500
action: accept

chain: input
protokol: ipsec-esp
in interface: gateway (typicky ether1, nebo ether1-gateway)
action: accept

chain: input
protokol: ipsec-ah
in interface: gateway (typicky ether1, nebo ether1-gateway)
action: accept

Vše samozřejmě přesunout nad DROP pravidlo.
Pokud chcete přesněji sledovat, kolik komunikace přiteklo jakým portem, tak první pravidlo lze rozdělit na tři pravidla, každý pro jeden port (500, 1701 a 4500).

Krok 2: IP -> Pool

IP -> Pool, vytvořit pool pro VPN klienty.

      Typicky zmenšíme ten stávající, např. na .100-199
      A nový vytvoříme od .200 do .250.
      Schválně necháme pár volných IP adres na konci rozsahu – jednu IP napevno obsadíme PPP klientem, viz následující krok.

Krok 3: PPP -> Profiles tab

Přidáme nový profil.

name: my-l2tp-profile
local address: 192.168.88.254 (pouzijeme volnou adresu na konci rozsahu, adresu ktera neni obsazena ani v zadnem poolu)
pool: vpnpool (pool vytvoreny v predchozim kroku)
dns server: 192.168.88.1 (adresa routeru s bezicim DNS serverem)
Change TCP MSS: Yes
V tabu Protocols: zkontrolovat ze je vse default, pripadne nastavit vse na default.

Krok 4: PPP -> Interface tab -> [L2TP Server] button

V okně PPP na záložce Interface kliknout na tlačítko L2TP Server.
Vyskočí malé okénko L2TP Server, zaškrtnout Enabled.

autentication: mschap, mschapv2
default profile: my-l2tp-profile (profil vytvoreny v predchozim kroku)
“Use IPSec”: zaskrtni a vypln sdilene heslo pro vsechny VPN uzivatele. Vytvori to dynamicky IPSec peer profil. Preskoc dalsi krok. Lze i nezaskrtnout, ale v tom pripade dalsi krok nepreskakuj a vytvor IPSec peer rucne

Krok 5: IP -> IPsec -> Peers tab

Pokud si začkrtnul “Use IPSec” v předchozím kroku, jen zkontroluj, zda se vytvořil dynamický záznam s vlastnostmi níže. Pak můžeš přeskočit. V ROS 6.38 je tento dialog rozdeleny na 3 taby (General, Advanced, Encryption), avsak pole jsou porad stejna. prvni screen je stary RouterOS. Dalsi 3 screeny jsou z RouterOS 6.38 a novejsi.

address: ocekavana IP adresa protistrany
::/0 (pro pripojeni z libovolne IP zadame dve dvojtecky, nebo 0.0.0.0/0)
pokud se zada konkretni IP, pak pouze tato konkretni IP se bude moct pripojit!
ja asi zadam dve dvojtecky a whitelist osetrim ve firewallu.
port: 500. Funguje i bez vyplneneho portu, nevyplneno znamena "jakykoli port"
local address: sem nic nevyplnit (pole musi byt sede), nebo dat dve dvojtecky jak je videt i na screenu :: (funguje oboji, protoze to znamena to stejne, "jakakoliv hodnota")
auth. method: pre shared key
exchange mode: main l2tp
secret: sdilene heslo pro vsechny uzivatele vpn
send initial contact: Enable
NAT traversal: Enable	
generate policy: port override
hash algorithm: sha1
encryption alg.: 3des, aes128, aes256
DH group: modp1024

Krok 6: IP -> IPsec -> Proposals tab

Upravit default položku.

auth. algorithms: jen sha1
encryption algorithms: 3des, aes128, aes192, aes256
PFS group: modp1024

Krok 7: vytvořit si VPN uživatele v PPP -> Secrets

service: l2tp
profile: my-l2tp-profile

Krok 8: arp-proxy na bridgi

Ještě nastavíme poslední věc, a to aktivaci arp-proxy na bridge1. Když není zaplá, tak se sice dopingneme na samotný router (a připojíme na Winbox), ale už ne na další zařízení v lokální síti.

Otevřít
Bridge -> tab Bridge -> položka bridge1 (popř. bridge-local)
nebo ekvivalent
Interfaces -> tab Interface -> položka bridge1 (popř. bridge-local)

V dialogu stačí přepnout ARP z enabled na proxy-arp.

Krok 9: Profit

Hurá, VPN hotová, můžeme očekávat aktivní připojené klienty v PPP -> Active connections.

Co dál?

VPN je tedy plně funkční a stabilní.
Dál by se někdy možná dalo rozběhat:

      MikroTik Neighbor Discovery protocol (MNDP) pro hledání okolních mikrotiků v lokální síti
      automatická viditelnost samby, bonjour atd.
      mrknout jak by konfigurace vypadala pro IPv6

Časté otázky

Patří něco do „IP -> IPSec -> Users tab“? Vypadá, že to s tím nějak souvisí.
Odpověd: Ne.

Patří něco do „PPP -> L2TP Secrets tab“? Vypadá, že to s tím nějak souvisí.
Odpověd: Ne.

V logu vidím „phase1 negotiation failed due to time up“.
zkontroluj krok 5.
IP -> IPsec -> Peers tab.
Mas dam dobre IP adresu, hned to prvni policko?
Kdyz se pripojim z nepovolene IP, tak to skonci na teto chybe.
Takze bude zadat spravnou IP protistrany, nebo povolit vsechny IP (dve dvojtecky ::)

Druha vec ke kontrole je Firewall -> NAT
nemas tam nahodou nastavene presmerovani portu? zrovna tech ktere vyuziva VPN?
ja jsem tam uz jednou u nekoho videl presmerovani celeho range 4000-4999 do vnitrni site, takze to logicky nemohlo jet dokud jsem to nezrusil

Nefunguje?

Mrkni na mikrotiku do Log.

A vůbec, máš vůbec veřejnou IP? Ať už statickou, nebo dynamickou.
Pokud ne, tak celý postup nemá smysl, dokud ji mít nebudete.
Např. u UPC přípojek standardně veřejná IP je.
ADSL/VDSL přípojky to měly v průběhu posledních let a poskytovatelů různě. Aktuálně obecně ne, možná tak u T-Mobilu. Lze dokoupit veřejnou statickou, ale za zlodějský příplatek.
T-Mobile LTE internet vzduchem veřejnou nemá. Pouze za zlodějský příplatek.

Připojení z macOS

Settings → Network → [+]
vyplnit
IP adresa routeru
jmeno uzivatele
button Authentication settings → heslo uzivatele a dole heslo sdilene
button Advanced → checkbox Send all traffic over VPN connection
Apply. Ulozit, pripojit!