| Platnost | RouterOS 7.21+ (obě strany) |
| Rozsah | Obecný postup pro S2S tunel mezi dvěma RouterOS routery |
| Vzorové nasazení | Příloha A – tunel petr-letnany (Kundratka ↔ Letňany) |
Kapitoly 1–8 jsou obecné a použitelné pro libovolný S2S tunel. Konkrétní hodnoty jsou v nich zapsané jako
<placeholder>. Příloha A obsahuje kompletní, k přímému vložení připravenou konfiguraci prvního nasazení.
Site-to-site tunel trvale propojuje dvě lokality – za tunelem jsou celé sítě, ne jednotliví uživatelé.
Klíčový rozdíl: u S2S se konfigurují obě strany a musí si přesně odpovídat. Chyba na jedné straně se projeví jako „handshake proběhne, ale nic neteče" – u WireGuardu nejhůř dohledatelný stav.
/system package print)allowed-addresssensitive (kvůli čtení PSK, kapitola 4.2)/system/backup/save name=pred-s2sNavazuje ta strana, která nemá dostupný veřejný endpoint. Druhá strana je responder.
| Situace | Iniciátor | Responder |
|---|---|---|
| Jedna strana za NATem, druhá s veřejnou IP | strana za NATem | strana s veřejnou IP |
| Obě strany s veřejnou IP | libovolná (zvol tu s méně stabilní IP) | druhá |
| Obě strany za NATem | nelze bez port-forwardu alespoň na jedné straně | – |
Praktický důsledek: strana za NATem nepotřebuje žádný příchozí port-forward. Stačí jí persistent-keepalive, kterým si sama drží NAT mapping otevřený. Oproti P2S (KB-01), kde se port forwardovat musí, je to podstatné zjednodušení.
| Typ | Konvence | Příklad |
|---|---|---|
| P2S (uživatelé) | wg-<zkratka> |
wg-EUL |
| P2S (admini) | wg-<zkratka>-admin |
wg-EUL-admin |
| S2S | wg-s2s-<protistrana> |
wg-s2s-letnany |
Prefix s2s je záměrný – ve výpisu rozhraní i ve firewall pravidlech je hned vidět, že za rozhraním je celá lokalita, ne jeden notebook.
Rozhraní se jmenuje podle protistrany, ne podle sebe. Na routeru A je wg-s2s-<B>, na routeru B je wg-s2s-<A>. Peer se jmenuje rovněž podle protistrany – u S2S je na rozhraní vždy jen jeden.
Firewall chainy: wg-<protistrana>-in (provoz od protistrany) a wg-<protistrana>-out (provoz k protistraně).
Pro S2S se používá /30 z bloku 10.254.0.0/16 – dvě použitelné adresy, přesně tolik, kolik tunel potřebuje.
| Tunel | Rozsah | Iniciátor | Responder |
|---|---|---|---|
wg-s2s-letnany |
10.254.1.0/30 |
10.254.1.1 |
10.254.1.2 |
| (volné) | 10.254.2.0/30 |
10.254.2.1 |
10.254.2.2 |
| (volné) | 10.254.3.0/30 |
10.254.3.1 |
10.254.3.2 |
Nižší adresa patří vždy iniciátorovi. Usnadňuje to čtení konfigurace při diagnostice.
Výjimka: stávající tunel
wireguard-na-jahodnicipoužívá celý10.254.254.0/24. Je to legacy z doby před touto konvencí – nechává se, jak je, nové tunely se zakládají jako/30.
Před založením zkontroluj, co je obsazené:
/interface/wireguard/print
| Port | Použití |
|---|---|
| 13231 | wireguard-martin (P2S) |
| 13232 | wireguard-na-jahodnici (S2S, legacy) |
| 13235 | wireguard-miro (P2S) |
| 13240 | wg-EUL (P2S uživatelé) |
| 13241 | wg-EUL-admin (P2S admini) |
| 13242 | wg-s2s-letnany |
| 13243+ | volné pro další S2S |
Vyplň před zahájením konfigurace. Tato tabulka je zdrojem pravdy pro allowed-address, routy i address-listy na obou stranách.
| Hodnota | |
|---|---|
| Sítě za stranou A (dostupné pro B) | <seznam> |
| Sítě za stranou B (dostupné pro A) | <seznam> |
| Rozsahy vyloučené z tranzitu | <seznam> |
| Které cíle vyžadují masquerade | <seznam> |
⚠️ Když se později přidá síť, přidává se na třech místech:
allowed-addresspeeru na obou stranách, routa na protější straně, a address-list ve firewall politice. Vynechání kteréhokoli z nich vede k „handshake OK, ale nic neteče".
Pokud router slouží jako tranzit do dalších lokalit, dostane protistrana do allowed-address často celý nadřazený rozsah (např. 10.49.0.0/16). Ten ale typicky zahrnuje i vlastní P2S rozsahy tohoto routeru – tedy připojené VPN klienty.
Vylučuj je ve firewall chainu, ne v allowed-address. Cryptokey routing potřebuje celý rozsah, aby paket vůbec prošel tunelem; filtrace je práce firewallu.
/ip/firewall/address-list
add list=<PREFIX>-vpn-ranges address=<P2S rozsah 1> comment="P2S VPN - vyloucit z tranzitu"
add list=<PREFIX>-vpn-ranges address=<P2S rozsah 2> comment="P2S VPN - vyloucit z tranzitu"
/ip/firewall/filter
add chain=wg-<protistrana>-in action=drop dst-address-list=<PREFIX>-vpn-ranges comment="Protistrana nema na VPN klienty co delat"
Pravidlo patří jako první do chainu -in, tedy nad povolující pravidla.
Směr je záměrně asymetrický. Blokuje se jen provoz od protistrany k VPN klientům. Opačný směr (VPN klient → protistrana) prochází chainem
-outa funguje dál; návratový provoz zajistí základní pravidloestablished,relatedveforward.
| Cíl | Režim | Proč |
|---|---|---|
| Sítě, jejichž bránou je tento router | čistý routing | Zpáteční cesta funguje sama, NAT není potřeba a jen by zakryl skutečný zdroj |
| Tranzitní lokality za dalšími routery | masquerade | Vzdálené lokality nemají zpáteční routu na síť protistrany |
Masquerade pro tranzit se zapisuje adresně, ne přes rozhraní – přežije tak i pozdější změnu tunelu:
/ip/firewall/nat
add action=masquerade chain=srcnat src-address=<sit za protistranou> dst-address=<tranzitni rozsah> comment="<protistrana> - tranzit"
Kroky 4.1–4.5 se dělají na obou routerech. Dokud není hotový krok 4.4, tunel nefunguje – to je normální stav, ne chyba.
Na iniciátorovi (strana A):
/interface/wireguard
add name=wg-s2s-<B> listen-port=<port> mtu=1420 comment="S2S <B>"
/ip/address
add address=10.254.<N>.1/30 interface=wg-s2s-<B> comment="S2S <B>"
Na responderovi (strana B):
/interface/wireguard
add name=wg-s2s-<A> listen-port=<port> mtu=1420 comment="S2S <A>"
/ip/address
add address=10.254.<N>.2/30 interface=wg-s2s-<A> comment="S2S <A>"
Na obou stranách si zjisti veřejný klíč – budeš ho potřebovat na protější straně:
/interface/wireguard/print detail where name="wg-s2s-<protistrana>"
PSK se generuje jednou a musí být na obou stranách stejný. Vygeneruj ho na iniciátorovi parametrem preshared-key=auto (krok 4.3) a přečti si hodnotu:
:put [/interface/wireguard/peers/get [find name="<B>"] preshared-key]
⚠️
print detailPSK nezobrazí – je to „sensitive" parametr, kterýexportv CLI výpisu skryje. Jediná spolehlivá cesta jegetpřes:put. Účet zároveň musí mít politikusensitive:/user/group/print detail where name=[/user/get [/user/who am-i] group]
Hodnotu pak na responderovi zadáš ručně jako preshared-key="...". Předávej ji bezpečným kanálem (správce hesel) – je to symetrický tajný klíč.
/interface/wireguard/peers
add interface=wg-s2s-<B> name=<B> comment="S2S do <B>" \
public-key="<verejny klic strany B>" \
preshared-key=auto \
endpoint-address=<verejna IP strany B> \
endpoint-port=<port> \
persistent-keepalive=25s \
allowed-address=10.254.<N>.2/32,<site za B>
| Parametr | Proč právě takto |
|---|---|
endpoint-address + endpoint-port |
Iniciátor musí vědět kam. Obojí je povinné – samotná adresa bez portu tunel nenaváže |
persistent-keepalive=25s |
Drží NAT mapping otevřený. Bez něj tunel po chvíli nečinnosti přestane fungovat ve směru od protistrany |
responder není uvedeno |
Tato strana navazuje, responder být nesmí |
allowed-address |
Tunelová adresa protistrany a sítě za ní. Co tu není, to router tunelem nepošle ani nepřijme |
IP, nebo DNS jméno v
endpoint-address? U S2S se endpoint zapisuje jednou a IP odstraní závislost na DNS při výpadku – preferuj IP. Pokud protistraně adresa plave, použij DNS jméno.
/interface/wireguard/peers
add interface=wg-s2s-<A> name=<A> comment="S2S do <A>" \
public-key="<verejny klic strany A>" \
preshared-key="<PSK precteny v kroku 4.2>" \
responder=yes \
allowed-address=10.254.<N>.1/32,<site za A>
| Parametr | Proč právě takto |
|---|---|
responder=yes |
Tato strana spojení nenavazuje, jen odpovídá. Bez toho se router opakovaně pokouší kontaktovat protistranu a plní log |
žádný endpoint-address |
Endpoint se naučí z příchozího handshaku. Když se iniciátorovi změní NAT port, tunel se sám opraví |
allowed-address |
Musí obsahovat všechny sítě, které mají být z této strany dostupné |
⚠️ Kontrola překryvu: ověř, že se
allowed-addressnepřekrývá s jiným WireGuard tunelem na tomtéž routeru. WireGuard nedokáže poslat stejný prefix do dvou tunelů – konfigurace se buď odmítne, nebo si prefix „ukradne" poslední zapsaný peer.
/ip/firewall/filter
add chain=input action=accept protocol=udp dst-port=<port> in-interface=<WAN> comment="S2S <A> - accept VPN" place-before=[find chain=input action=drop]
Iniciátor žádné příchozí pravidlo nepotřebuje.
/ip/firewall/address-list
# Co smi protistrana u nas
add list=<PROTISTRANA>-allowed address=<sit 1> comment="<popis>"
add list=<PROTISTRANA>-allowed address=<sit 2> comment="<popis>"
# Site za protistranou
add list=<PROTISTRANA>-nets address=<sit za protistranou> comment="LAN <protistrana>"
# Rozsahy vyloucene z tranzitu (viz 3.6)
add list=<PREFIX>-vpn-ranges address=<P2S rozsah> comment="P2S VPN - vyloucit"
Stejný princip jako v KB-01: politika tunelu má vlastní chain. U S2S jsou chainy dva, pro každý směr jeden.
/ip/firewall/filter
# Smer protistrana -> k nam
add chain=wg-<protistrana>-in action=drop dst-address-list=<PREFIX>-vpn-ranges comment="Vyloucene rozsahy"
add chain=wg-<protistrana>-in action=accept dst-address-list=<PROTISTRANA>-allowed comment="<protistrana> -> povolene cile"
add chain=wg-<protistrana>-in action=drop comment="drop all"
# Smer od nas -> protistrana
add chain=wg-<protistrana>-out action=accept dst-address-list=<PROTISTRANA>-nets comment="-> <protistrana>"
add chain=wg-<protistrana>-out action=drop comment="drop all"
Jumpy se přidávají až nakonec, když jsou chainy hotové:
/ip/firewall/filter
add chain=forward action=jump jump-target=wg-<protistrana>-in in-interface=wg-s2s-<protistrana> connection-state=new comment="S2S <protistrana> -> politika (dovnitr)"
add chain=forward action=jump jump-target=wg-<protistrana>-out out-interface=wg-s2s-<protistrana> connection-state=new comment="S2S <protistrana> -> politika (ven)"
Předpoklad: ve
forwardmusí být nad jumpy základní pravidlaestablished,related,untracked acceptainvalid drop(KB-01, krok 4.3). Bez nich se do chainů dostane i navázaný provoz a podmínkaconnection-state=newztratí smysl.
Jako bránu uváděj jméno rozhraní, ne IP – u WireGuardu je to čitelnější a nezávisí to na adresaci tunelu.
/ip/route
add dst-address=<sit za protistranou> gateway=wg-s2s-<protistrana> distance=1 comment="<protistrana> pres WireGuard"
Na protější straně obdobně pro každou síť ze seznamu z kroku 3.5.
Kompletní konfigurace obou stran na jednom místě:
# ========== STRANA A (iniciator) ==========
/interface/wireguard
add name=wg-s2s-<B> listen-port=<port> mtu=1420 comment="S2S <B>"
/ip/address
add address=10.254.<N>.1/30 interface=wg-s2s-<B> comment="S2S <B>"
/interface/wireguard/peers
add interface=wg-s2s-<B> name=<B> public-key="<klic B>" preshared-key=auto endpoint-address=<verejna IP B> endpoint-port=<port> persistent-keepalive=25s allowed-address=10.254.<N>.2/32,<site za B>
/ip/route
add dst-address=<sit za B> gateway=wg-s2s-<B> distance=1 comment="<B> pres WireGuard"
# ========== STRANA B (responder) ==========
/interface/wireguard
add name=wg-s2s-<A> listen-port=<port> mtu=1420 comment="S2S <A>"
/ip/address
add address=10.254.<N>.2/30 interface=wg-s2s-<A> comment="S2S <A>"
/interface/wireguard/peers
add interface=wg-s2s-<A> name=<A> public-key="<klic A>" preshared-key="<PSK z A>" responder=yes allowed-address=10.254.<N>.1/32,<site za A>
/ip/firewall/filter
add chain=input action=accept protocol=udp dst-port=<port> in-interface=<WAN> comment="S2S <A> - accept VPN" place-before=[find chain=input action=drop]
/ip/route
add dst-address=<sit za A> gateway=wg-s2s-<A> distance=1 comment="<A> pres WireGuard"
Postup platí pro nahrazení SSTP, PPTP i L2TP tunelu. Principem je paralelní běh – stará cesta zůstává funkční, dokud není nová ověřená.
Migrační páku dělá parametr distance u routy:
| Routa | distance |
Kdy se použije |
|---|---|---|
| Stará (SSTP / PPTP / L2TP) | vyšší, např. 10 |
když je WireGuard dole |
| Nová (WireGuard) | 1 |
vždy, když je rozhraní nahoře |
RouterOS označí routu přes nefunkční rozhraní jako neaktivní a provoz automaticky přejde na tu s vyšší distancí. Rollback je tedy automatický a nevyžaduje zásah.
Pokud stará routa distanci nastavenou nemá (výchozí
1), uprav ji před založením nové:/ip/route/set [find comment="<stara routa>"] distance=10
/interface/wireguard/peers/print detail where name="<protistrana>"
last-handshake musí být v řádu sekund. Pokud není, dál nepokračuj – viz kapitola 7./ping 10.254.<N>.2 src-address=10.254.<N>.1 count=5
Jakmile přidáš routu s distance=1, provoz se přepne na WireGuard okamžitě.
/ip/route/print where dst-address=<sit za protistranou>
Aktivní (A) musí být routa přes wg-s2s-<protistrana>./ip/firewall/filter/print stats chain=wg-<protistrana>-in
/ip/firewall/filter/print stats chain=wg-<protistrana>-out
Pakety musí růst na accept pravidlech, ne na drop all.Rollback: odstraň WG routu, provoz se vrátí na starou VPN.
Doporučeně nechat běžet paralelně alespoň týden.
masquerade pravidla vázaná na síť protistrany zůstala funkční:/ip/firewall/nat/print stats where comment~"<protistrana>"
# Handshake a objem dat
/interface/wireguard/peers/print detail where name="<protistrana>"
# Aktivni routa
/ip/route/print where dst-address=<sit za protistranou>
# Politika se trefuje
/ip/firewall/filter/print stats chain=wg-<protistrana>-in
/ip/firewall/filter/print stats chain=wg-<protistrana>-out
| Co | Očekávaný stav |
|---|---|
last-handshake |
< 180 s, ideálně desítky sekund |
rx i tx |
obojí roste; jednostranný růst = problém s routingem nebo firewallem na protistraně |
current-endpoint-address |
veřejná IP protistrany |
| routa přes tunel | příznak A (active) |
| chainy | pakety na accept, ne na drop all |
| Příznak | Nejpravděpodobnější příčina |
|---|---|
last-handshake prázdný nebo se neaktualizuje |
Nesedí klíče nebo PSK. Ověř veřejné klíče na obou stranách a PSK přes :put [... get ... preshared-key] |
| Handshake nenaváže vůbec | Chybí endpoint-port u peeru na iniciátorovi, nebo je zavřený UDP port na responderovi |
| Handshake OK, ale nic neteče | Chybí síť v allowed-address na jedné straně, nebo chybí routa. allowed-address a routy si musí odpovídat na obou stranách |
| Funguje jen jeden směr | allowed-address nebo routa chybí na jedné straně. Případně firewall chain pro daný směr (-in vs -out) |
| Tunel po chvíli nečinnosti přestane fungovat | Chybí persistent-keepalive na straně za NATem |
| Ping funguje, ale SMB nebo RDP ne | MTU. Zkus /ping <cil> size=1400 do-not-fragment. Pokud selže, přidej MSS clamp: /ip/firewall/mangle add chain=forward action=change-mss new-mss=clamp-to-pmtu tcp-flags=syn protocol=tcp out-interface=wg-s2s-<protistrana> |
print detail nezobrazuje PSK |
Očekávané chování – je to sensitive parametr. Použij :put [... get ... preshared-key] |
| Provoz jde pořád přes starou VPN | WG routa není aktivní (rozhraní dole) nebo má vyšší distance |
| Protistrana vidí i na VPN klienty | Chybí drop pravidlo pro vyloučené rozsahy v chainu -in (kapitola 3.6) |
preshared-key a je na obou stranách stejnýallowed-address obsahuje jen potřebné sítě – nikdy 0.0.0.0/0drop allforward není nad jumpy žádné obecné acceptpersistent-keepalive, responder má responder=yesinput otevřený pouze UDP port tuneluallowed-address nekoliduje s jiným tunelem na témže routerupetr-letnanyMigrace stávajícího SSTP spojení mezi routerem Kundratka (Elektro Uldrich) a lokalitou Letňany na WireGuard.
| Kundratka (EUL) | Letňany | |
|---|---|---|
| Role | iniciátor (za NATem ISP) | responder (veřejná IP) |
| Veřejná IP | 185.112.166.175 (NAT od ISP na 10.32.39.71/26) | 176.114.249.244 |
| DNS jméno | vpn.elnet-group.cz | letnany.stepan.tech |
| Rozhraní | wg-s2s-letnany |
wg-s2s-kundratka |
| Listen port | 13242 | 13242 |
| Adresa v tunelu | 10.254.1.1/30 |
10.254.1.2/30 |
| MTU | 1420 | 1420 |
| Keepalive | 25 s | – |
responder |
– | ano |
| Nahrazuje | sstp-out-stepan-letnany (port 444) |
PPP účet EG_Kundratka |
Port-forward od ISP není potřeba – Kundratka je iniciátor.
Z Letňan do EUL – dvanáct sítí EUL-admin-nets (stejný rozsah jako admin VPN podle KB-01) plus vzdálené lokality, pro které je Kundratka tranzit:
| Skupina | Sítě |
|---|---|
EUL-admin-nets |
172.20.1.0/24, 172.30.50.0/26, 172.30.50.64/28, 172.30.50.96/28, 192.168.13.0/24, 192.168.14.0/24, 192.168.15.0/24, 192.168.19.0/24, 192.168.21.0/24, 192.168.55.0/24, 192.168.60.0/24, 192.168.77.0/24 |
EUL-remote-sites |
10.5.0.0/16, 10.10.0.0/16, 10.20.0.0/16, 10.40.0.0/16, 10.49.0.0/16 |
Z EUL do Letňan – jediná síť: 10.0.1.0/24.
Vyloučeno z tranzitu – vlastní P2S rozsahy Kundratky, které jsou součástí 10.49.0.0/16:
| Rozsah | Tunel |
|---|---|
10.49.222.0/24 |
wg-EUL (uživatelská VPN) |
10.49.223.0/24 |
wg-EUL-admin (admin VPN) |
10.49.224.0/24 |
wireguard-miro |
10.49.225.0/24 |
wireguard-martin |
Letňany na tyto rozsahy nedosáhnou. Opačný směr – z VPN do Letňan – funguje dál (viz poznámka v 3.6).
# --- Rozhrani a adresa ---
/interface/wireguard
add name=wg-s2s-letnany listen-port=13242 mtu=1420 comment="S2S Letnany (petr-letnany)"
/ip/address
add address=10.254.1.1/30 interface=wg-s2s-letnany comment="S2S Letnany"
# --- Peer (iniciator) ---
/interface/wireguard/peers
add interface=wg-s2s-letnany name=Letnany comment="S2S do Letnan - petr-letnany" \
public-key="<verejny klic z wg-s2s-kundratka v Letnanech>" \
preshared-key=auto \
endpoint-address=176.114.249.244 \
endpoint-port=13242 \
persistent-keepalive=25s \
allowed-address=10.254.1.2/32,10.0.1.0/24
# --- Address-listy ---
/ip/firewall/address-list
add list=EUL-remote-sites address=10.5.0.0/16 comment="Vzdalena lokalita"
add list=EUL-remote-sites address=10.10.0.0/16 comment="Vzdalena lokalita"
add list=EUL-remote-sites address=10.20.0.0/16 comment="Vzdalena lokalita"
add list=EUL-remote-sites address=10.40.0.0/16 comment="Vzdalena lokalita"
add list=EUL-remote-sites address=10.49.0.0/16 comment="Vzdalene lokality"
add list=LETNANY-nets address=10.0.1.0/24 comment="LAN Letnany"
add list=EUL-vpn-ranges address=10.49.222.0/24 comment="wg-EUL - uzivatelska VPN"
add list=EUL-vpn-ranges address=10.49.223.0/24 comment="wg-EUL-admin - admin VPN"
add list=EUL-vpn-ranges address=10.49.224.0/24 comment="wireguard-miro"
add list=EUL-vpn-ranges address=10.49.225.0/24 comment="wireguard-martin"
# --- Firewall: politika tunelu ---
/ip/firewall/filter
add chain=wg-letnany-in action=drop dst-address-list=EUL-vpn-ranges comment="Letnany nema na VPN klienty EUL co delat"
add chain=wg-letnany-in action=accept dst-address-list=EUL-admin-nets comment="Letnany -> interni infrastruktura EUL"
add chain=wg-letnany-in action=accept dst-address-list=EUL-remote-sites comment="Letnany -> vzdalene lokality (tranzit)"
add chain=wg-letnany-in action=drop comment="drop all"
add chain=wg-letnany-out action=accept dst-address-list=LETNANY-nets comment="EUL -> LAN Letnany"
add chain=wg-letnany-out action=drop comment="drop all"
# --- Firewall: jumpy (az nakonec) ---
add chain=forward action=jump jump-target=wg-letnany-in in-interface=wg-s2s-letnany connection-state=new comment="S2S Letnany -> politika (dovnitr)"
add chain=forward action=jump jump-target=wg-letnany-out out-interface=wg-s2s-letnany connection-state=new comment="S2S Letnany -> politika (ven)"
# --- Routing ---
/ip/route
add dst-address=10.0.1.0/24 gateway=wg-s2s-letnany distance=1 comment="Letnany pres WireGuard"
# --- Rozhrani a adresa ---
/interface/wireguard
add name=wg-s2s-kundratka listen-port=13242 mtu=1420 comment="S2S Kundratka (Elektro Uldrich)"
/ip/address
add address=10.254.1.2/30 interface=wg-s2s-kundratka comment="S2S Kundratka"
# --- Peer (responder) ---
/interface/wireguard/peers
add interface=wg-s2s-kundratka name=Kundratka comment="S2S do Elektro Uldrich" \
public-key="<verejny klic z wg-s2s-letnany na Kundratce>" \
preshared-key="<PSK precteny na Kundratce>" \
responder=yes \
allowed-address=10.254.1.1/32,172.20.1.0/24,172.30.50.0/26,172.30.50.64/28,172.30.50.96/28,192.168.13.0/24,192.168.14.0/24,192.168.15.0/24,192.168.19.0/24,192.168.21.0/24,192.168.55.0/24,192.168.60.0/24,192.168.77.0/24,10.5.0.0/16,10.10.0.0/16,10.20.0.0/16,10.40.0.0/16,10.49.0.0/16
# --- Otevreni portu ---
/ip/firewall/filter
add chain=input action=accept protocol=udp dst-port=13242 in-interface=<WAN rozhrani> comment="S2S Kundratka - accept VPN" place-before=[find chain=input action=drop]
# --- Routing ---
/ip/route
add dst-address=172.20.1.0/24 gateway=wg-s2s-kundratka distance=1 comment="EUL"
add dst-address=172.30.50.0/26 gateway=wg-s2s-kundratka distance=1 comment="EUL"
add dst-address=172.30.50.64/28 gateway=wg-s2s-kundratka distance=1 comment="EUL"
add dst-address=172.30.50.96/28 gateway=wg-s2s-kundratka distance=1 comment="EUL"
add dst-address=192.168.13.0/24 gateway=wg-s2s-kundratka distance=1 comment="EUL - DC, app01"
add dst-address=192.168.14.0/24 gateway=wg-s2s-kundratka distance=1 comment="EUL"
add dst-address=192.168.15.0/24 gateway=wg-s2s-kundratka distance=1 comment="EUL"
add dst-address=192.168.19.0/24 gateway=wg-s2s-kundratka distance=1 comment="EUL"
add dst-address=192.168.21.0/24 gateway=wg-s2s-kundratka distance=1 comment="EUL"
add dst-address=192.168.55.0/24 gateway=wg-s2s-kundratka distance=1 comment="EUL"
add dst-address=192.168.60.0/24 gateway=wg-s2s-kundratka distance=1 comment="EUL"
add dst-address=192.168.77.0/24 gateway=wg-s2s-kundratka distance=1 comment="EUL"
add dst-address=10.5.0.0/16 gateway=wg-s2s-kundratka distance=1 comment="Vzdalena lokalita pres EUL"
add dst-address=10.10.0.0/16 gateway=wg-s2s-kundratka distance=1 comment="Vzdalena lokalita pres EUL"
add dst-address=10.20.0.0/16 gateway=wg-s2s-kundratka distance=1 comment="Vzdalena lokalita pres EUL"
add dst-address=10.40.0.0/16 gateway=wg-s2s-kundratka distance=1 comment="Vzdalena lokalita pres EUL"
add dst-address=10.49.0.0/16 gateway=wg-s2s-kundratka distance=1 comment="Vzdalene lokality pres EUL"
Na Kundratce existuje pravidlo:
/ip firewall nat
add action=masquerade chain=srcnat comment="Stepan - Letnany" dst-address=10.0.0.0/8 src-address=10.0.1.0/24
Po migraci funguje dál a nemění se – je vázané na zdrojovou a cílovou adresu, ne na rozhraní. Zajišťuje, že provoz z Letňan do vzdálených lokalit (10.x) se maskuje za adresu Kundratky, takže tyto lokality nepotřebují zpáteční routu na 10.0.1.0/24.
Provoz z Letňan do EUL-admin-nets (172.x, 192.168.x) maskovaný není a být nemá – tam je čistý routing a zpáteční cesta funguje, protože bránou těchto sítí je sám Kundratka. Odpovídá to rozdělení z kapitoly 3.7.
Stávající routa má distance=10, nová WireGuard routa distance=1 – přepnutí i rollback jsou automatické podle kapitoly 5.
Fáze 1 – tunel vedle SSTP:
10.254.1.2Fáze 2 – firewall a routing:
/ping 192.168.13.11, /ping 192.168.55.2/ping 10.0.1.110.49.222.x ani 10.49.223.x/ip/route/print where dst-address=10.0.1.0/24 – aktivní musí být WG routaFáze 3 – vypnutí SSTP (po týdnu provozu):
/interface/sstp-client/set [find name=sstp-out-stepan-letnany] disabled=yes
/ip/route/remove [find comment=Stepan-Letnany]
/ip/firewall/filter/remove [find log-prefix="TEST:"]
EG_Kundratka/ip/firewall/nat/print stats where comment="Stepan - Letnany"
Tímto krokem zaniká jeden ze čtyř starých VPN serverů na Kundratce. Zbytek řeší bezpečnostní analýza routeru, nález V9.
https://help.mikrotik.com/docs/display/ROS/WireGuardaction=jump – https://help.mikrotik.com/docs/display/ROS/Filterhttps://help.mikrotik.com/docs/display/ROS/Address-listsdistance – https://help.mikrotik.com/docs/display/ROS/IP+Routing