| Platnost | RouterOS 7.21 a novější |
| Ověřeno na | RB3011UiAS, RouterOS 7.22.1 |
| Verze | 1.0 (2026-09-12) |
Rutinní úkon: přidání, změna a zrušení jednoho uživatele (peeru) na existující WireGuard P2S VPN. Zvládne kdokoli z týmu, bez zásahu do serverové konfigurace.
Jeden peer = jedno zařízení, ne jeden člověk. Uživatel s notebookem a mobilem má dva peery.
Nejdřív zvol správné rozhraní. Uživatelské a administrátorské přístupy mají oddělený tunel, protože mají povolené jiné porty (KB-01, krok 4):
- běžný uživatel →
wg-EUL, rozsah10.49.222.0/24, Metoda A- administrátorský nebo servisní přístup →
wg-EUL-admin, rozsah10.49.223.0/24, Metoda BPeer založený na špatném rozhraní dostane špatnou sadu oprávnění – uživatel na admin tunelu má RDP na servery.
RouterOS umí klientský klíčový pár vygenerovat sám (Metoda A), nebo lze přijmout jen veřejný klíč od klienta (Metoda B).
| Metoda A – klíč generuje router | Metoda B – klíč generuje klient | |
|---|---|---|
| Pracnost | nízká, QR kód / hotový .conf |
vyšší, konfigurace se skládá ručně |
| Privátní klíč klienta | uložen i na routeru | nikdy neopustí zařízení klienta |
| Kompromitace routeru | útočník získá klíče všech klientů | útočník klíče klientů nezíská |
| Vhodné pro | běžní uživatelé, mobily, hromadné zavádění | administrátorské přístupy, privilegované účty, klienti s vyšším bezpečnostním požadavkem |
Pravidlo: Metoda A pro běžné uživatele na wg-EUL, Metoda B povinně pro administrátorské a servisní přístupy na wg-EUL-admin.
Před každým zásahem zkontrolovat volnou IP v tunelovém rozsahu:
/interface/wireguard/peers/print detail where interface="wg-EUL"
Do ticketu / evidence zapsat:
| Položka | Hodnota |
|---|---|
| Klient | ElektroUldrich (EUL) |
| Interface | wg-EUL |
| Peer name | prokupkova |
| IP v tunelu | 10.49.222.5/32 |
| Zařízení | NB-EUL-042, Windows 11 |
| Schválil | jméno + číslo ticketu |
| Datum zřízení | |
| Platnost do | (u externistů a dodavatelů povinně) |
Konvence name: <prijmeni><inicialaJmena> bez diakritiky, malými písmeny, u zařízení <hostname>. Pro admin a servisní peery na wg-EUL-admin: admin-<uzivatelske jmeno> (např. admin-petrs). Pole name slouží k dohledání v logu – neduplikovat stejnou hodnotu do comment, comment je na doplňující informaci (zařízení, ticket, platnost).
/interface/wireguard/peers
add interface=wg-EUL \
name=prokupkova \
comment="NB-EUL-042 / TICKET-12345 / platnost do 2027-09-12" \
private-key=auto \
preshared-key=auto \
responder=yes \
allowed-address=10.49.222.5/32 \
client-address=10.49.222.5/32 \
client-endpoint=vpn.elnet-group.cz:13240 \
client-allowed-address=192.168.13.0/24 \
client-dns=192.168.13.11 \
client-keepalive=25s
Význam jednotlivých parametrů:
| Parametr | Co dělá |
|---|---|
private-key=auto |
Router vygeneruje klientský pár klíčů a uloží si ho |
preshared-key=auto |
Symetrický klíč navíc nad ChaCha20-Poly1305. Nastavovat vždy – prakticky zdarma, chrání proti budoucím útokům na výměnu klíčů |
responder=yes |
Povinné u P2S. Bez něj se router opakovaně sám pokouší navazovat spojení k endpoint-address klienta, což u roamingových klientů nedává smysl a plní log |
allowed-address |
Kryptografické směrování na serveru: které zdrojové IP router od tohoto peeru přijme. Vždy /32 konkrétní adresa. Není to firewall – řízení přístupu dělá forward řetězec (KB-01) |
client-address |
Co se zapíše do [Interface] Address v klientské konfiguraci |
client-endpoint |
Co se zapíše do [Peer] Endpoint. Používat DNS jméno, ne IP |
client-allowed-address |
[Peer] AllowedIPs – rozhoduje o split vs. full tunnel (viz níže) |
client-dns |
[Interface] DNS – doménový řadič, ne router. Klient tak má stejné rozlišování jmen jako v kanceláři, včetně SRV záznamů |
client-keepalive=25s |
PersistentKeepalive. Drží NAT mapping u klientů za NATem. 25 s je osvědčená hodnota |
# Split tunnel (doporučeno) - pres VPN jde jen provoz do vyjmenovanych siti
client-allowed-address=192.168.13.0/24
# Full tunnel - veskery provoz klienta jde pres VPN
client-allowed-address=0.0.0.0/0
Split tunnel je výchozí volba. Full tunnel používáme jen když to klient vyžaduje (typicky kvůli kontrole webového provozu nebo přístupu ke službám vázaným na veřejnou IP klienta) – a vyžaduje navíc masquerade s out-interface=<WAN>, viz KB-01, krok 5.
⚠️ Do
client-allowed-addressmusí patřit síť doménového řadiče (192.168.13.0/24). Bez ní klient nedosáhne na DNS a nefunguje mu vůbec nic, i kdyby ostatní služby povolené měl.
Rozsah tunelu (10.49.222.0/24) v client-allowed-address být nemusí – peery spolu komunikovat nemají a DNS je na DC.
WinBox: WireGuard → záložka Peers → dvojklik na peer → tlačítko Show Client Config. Zobrazí text konfigurace a QR kód.
CLI:
/interface/wireguard/peers/show-client-config [find name="prokupkova"]
Uložení do souboru na router (pro stažení přes WinBox/SFTP):
/interface/wireguard/peers/show-client-config [find name="prokupkova"] file=eul-prokupkova
/file/print where name~"eul-prokupkova"
Účet musí mít politiku
sensitive. Bez ní příkaz i tlačítko ve WinBoxu privátní klíč nezobrazí (od 7.21_ab548). Zkontrolovat skupinu účtu:/user/print detail /user/group/print detail
Výstup vypadá takto:
[Interface]
PrivateKey = <klic klienta>
Address = 10.49.222.5/32
DNS = 192.168.13.11
[Peer]
PublicKey = <verejny klic routeru>
PresharedKey = <psk>
AllowedIPs = 192.168.13.0/24
Endpoint = vpn.elnet-group.cz:13240
PersistentKeepalive = 25
Konfigurace obsahuje privátní klíč a PSK – je to plnohodnotný přístupový údaj do sítě klienta.
| Kanál | Použití |
|---|---|
| QR kód ukázaný na obrazovce při osobním/Teams předání | ✅ mobil – preferováno |
| Sdílení hesla ze správce hesel (jednorázový odkaz s expirací) | ✅ notebook |
| Teams chat 1:1 s následným smazáním zprávy | ⚠️ akceptovatelné, zaznamenat do ticketu |
| E-mail, SMS, WhatsApp, sdílený disk, Trello | ❌ nikdy |
Po předání smazat soubor z routeru:
/file/remove [find name~"eul-prokupkova"]
Použít pro administrátorské a servisní přístupy. Tunel je oddělený od uživatelské VPN: interface wg-EUL-admin, rozsah 10.49.223.0/24, port 13241 (KB-01, krok 4).
Windows / macOS / Linux s klientem WireGuard: Add Tunnel → Add empty tunnel… vygeneruje pár automaticky. Nebo z CLI:
wg genkey | tee privatekey | wg pubkey > publickey
Uživatel pošle pouze publickey (veřejný klíč nemá bezpečnostní hodnotu, může jít i e-mailem).
/interface/wireguard/peers
add interface=wg-EUL-admin \
name=admin-petrs \
comment="TS admin / TICKET-12345" \
public-key="<verejny klic od klienta>" \
preshared-key=auto \
responder=yes \
allowed-address=10.49.223.10/32
client-* parametry se u Metody B na peer nedávají – router nemá privátní klíč klienta, takže show-client-config nemá co vypsat. Konfigurace se skládá ručně podle šablony v kroku 3.
Uživatel potřebuje doplnit do své konfigurace:
# Verejny klic routeru (wg-EUL-admin):
/interface/wireguard/print detail where name="wg-EUL-admin"
⚠️
print detailPSK nezobrazí.preshared-keyje "sensitive" parametr aprint detail
ho v CLI výpisu vždy skryje, bez ohledu na oprávnění účtu (na rozdíl odshow-client-config
u Metody A, kde stačí mít v účtu politikusensitive). Pro Metodu B, kde žádnýshow-client-config
není k dispozici (router nemá privátní klíč klienta), se PSK vytáhne přímo přes:put::put [/interface/wireguard/peers/get [find name="<název peeru>"] preshared-key]
Sítě v AllowedIPs – shodné s EUL-admin-nets (KB-01, krok 4.2):
| Síť | Co to je |
|---|---|
172.20.1.0/24 |
bridge-LAN_ELNET |
172.30.50.0/26 |
ether5-zbx_srv |
172.30.50.64/28 |
vlan-3-web |
172.30.50.96/28 |
vlan70-ZBX_SRV |
192.168.13.0/24 |
bridge-hyperV (DC, app01) |
192.168.14.0/24 |
OSCAM |
192.168.15.0/24 |
Sitove prvky |
192.168.19.0/24 |
dohled, zabbix |
192.168.21.0/24 |
BCK_SRV |
192.168.55.0/24 |
bridge-EL_servers |
192.168.60.0/24 |
vlan60-proxy |
192.168.77.0/24 |
vlan77-logs |
Je to síť pro administrátory, ne pro běžné uživatele – proto tu na rozdíl od uživatelské VPN (KB-01, krok 4.4) není omezení na jednotlivé porty, jen na tyto sítě. Admin v nich smí cokoli, mimo ně nic.
Šablona, kterou si klient doplní lokálně (AllowedIPs musí být v .conf na jednom řádku, WireGuard víceřádkovou hodnotu nepodporuje):
[Interface]
PrivateKey = <klic ktery si klient vygeneroval - zustava u nej>
Address = 10.49.223.10/32
DNS = 192.168.13.11
[Peer]
PublicKey = <verejny klic routeru z wg-EUL-admin>
PresharedKey = <psk z routeru>
AllowedIPs = 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
Endpoint = vpn.elnet-group.cz:13241
PersistentKeepalive = 25
Přidá-li se nová síť do
EUL-admin-netsna routeru, musí přibýt doAllowedIPsi sem – jinak paket tunelem vůbec neodejde a klient bude cíl zkoušet přes svou běžnou síť.
PSK se stále musí předat bezpečným kanálem (správce hesel) – je to symetrický tajný klíč.
| Platforma | Klient | Import |
|---|---|---|
| Windows 10/11 | WireGuard for Windows (wireguard.com/install) | Import tunnel(s) from file… nebo vložit text přes Add empty tunnel |
| Android / iOS | WireGuard (Google Play / App Store) | + → Scan from QR code |
| macOS | WireGuard (App Store) | Import tunnel(s) from file… |
| Linux | wg-quick |
uložit jako /etc/wireguard/eul.conf, systemctl enable --now wg-quick@eul |
Ověření na straně uživatele: v klientu musí do ~20 s naskočit Latest handshake a růst Transfer: rx / tx.
/interface/wireguard/peers/print detail where interface="wg-EUL"
| Pole | Očekávaná hodnota |
|---|---|
last-handshake |
< 180 s (WireGuard obnovuje handshake každé ~2 min při aktivitě) |
current-endpoint-address |
veřejná IP uživatele |
rx a tx |
obě rostou |
Rychlý přehled všech peerů jednoho interface:
/interface/wireguard/peers/print where interface="wg-EUL"
/interface/wireguard/peers/print where interface="wg-EUL-admin"
# Zmena rozsahu, ktery klient vidi (split tunnel)
/interface/wireguard/peers/set [find name="prokupkova"] \
client-allowed-address=192.168.13.0/24,192.168.55.0/24
# Zmena endpointu (napr. po migraci na DNS jmeno)
/interface/wireguard/peers/set [find name="prokupkova"] \
client-endpoint=vpn.elnet-group.cz:13240
Změna jakéhokoli
client-*parametru se u připojeného klienta neprojeví sama. Tyto parametry pouze ovlivňují text generované konfigurace. Po změně je nutné vygenerovat konfiguraci znovu a nechat uživatele importovat aktualizovaný tunel.
Naproti tomuallowed-address,preshared-keyaresponderjsou serverové parametry a projeví se okamžitě.
Rotace klíče (podezření na kompromitaci zařízení, Metoda A):
/interface/wireguard/peers/set [find name="prokupkova"] private-key=auto preshared-key=auto
/interface/wireguard/peers/show-client-config [find name="prokupkova"]
Starý klíč přestává platit okamžitě – uživatel dostane novou konfiguraci.
/interface/wireguard/peers/disable [find name="prokupkova"]
Účinek je okamžitý – u WireGuardu neexistuje nic jako CRL ani životnost session. Existující spojení padnou při dalším handshaku (max. ~2 min), aktivní tunel přestane přenášet data ihned.
comment doplnit datum a číslo ticketu:/interface/wireguard/peers/set [find name="prokupkova"] \
disabled=yes comment="DISABLED 2026-09-12 / TICKET-12399 / odchod zamestnance"
/interface/wireguard/peers/remove [find name="prokupkova"]
.conf soubor z routeru i ze správce hesel.Čtvrtletně projít peery na obou rozhraních a najít nepoužívané – admin peery se závažností přístupu stojí za obzvlášť pečlivou kontrolu:
/interface/wireguard/peers/print detail where interface="wg-EUL"
/interface/wireguard/peers/print detail where interface="wg-EUL-admin"
Peer bez last-handshake nebo s rx=0 a tx=0 je kandidát na zrušení. Peery s vyplněnou „platnost do" v komentáři kontrolovat proti aktuálnímu datu.
WireGuard je bezstavový a nemá pojem „přihlášení / odhlášení". V logu tedy nejsou connect/disconnect události jako u L2TP nebo SSTP. Pro auditní požadavky (NIS2, interní evidence) je nutné stav periodicky snímat.
Zapnutí diagnostického logování handshaků:
/system/logging
add topics=wireguard action=memory
Periodický snapshot stavu peerů do syslogu (odesílat na centrální sběr):
/system/scheduler
add name=wg-audit interval=15m comment="WG - snapshot stavu peeru do logu" on-event={
:foreach p in=[/interface/wireguard/peers find where !disabled] do={
:local n [/interface/wireguard/peers get $p name];
:local ep [/interface/wireguard/peers get $p current-endpoint-address];
:local hs [/interface/wireguard/peers get $p last-handshake];
:if ([:typeof $hs] != "nothing") do={
:log info ("WG-AUDIT peer=" . $n . " endpoint=" . $ep . " last-handshake=" . $hs);
}
}
}
Odesílání na centrální syslog:
/system/logging/action
add name=syslog-central target=remote remote=192.168.19.10 remote-port=514
/system/logging
add topics=info action=syslog-central prefix=WG
| Příznak u uživatele | Kontrola na routeru | Příčina / řešení |
|---|---|---|
| „Nepřipojí se, handshake nenaskočí" | last-handshake prázdné |
Špatný endpoint nebo blokovaný UDP port v síti uživatele (hotelová/firemní wifi). Test z mobilních dat. Pokud funguje na LTE a ne na wifi → blokuje síť uživatele |
| „Připojí se, ale nic nefunguje" | rx roste, tx ne |
Provoz se nevrací – Windows Firewall na cílovém serveru, chybějící forward accept, nebo cíl není v client-allowed-address |
| „Funguje ping, ne sdílené disky" | – | Fragmentace / MTU – viz KB-01, kapitola 8 |
| „Nefungují interní jména" | client-dns u peeru |
Ověřit, že client-dns ukazuje na DC (192.168.13.11) a že 192.168.13.0/24 je v client-allowed-address; přegenerovat konfiguraci. Test z klienta: nslookup dc01.eu.local 192.168.13.11 |
| „Odpojuje se po pár minutách" | client-keepalive |
Nastavit client-keepalive=25s, přegenerovat konfiguraci |
| „Po připojení mi nejede internet" | – | Split tunnel je záměrný stav. Full tunnel jen na vyžádání – viz kapitola 4 |
| Dva uživatelé se navzájem odpojují | allowed-address |
Dvě zařízení používají stejnou konfiguraci / stejnou IP. Každé zařízení = vlastní peer s vlastní /32 |