# WireGuard road-warrior na MikroTiku (router-hosted) Nastaveno 2026-06-18 podle runbooku `wireguard-mikrotik-runbook.md`. ## Router - **MikrotikFirewall** (hEX, RouterOS 7.19.6), LAN IP `192.168.1.2`, SSH port **22**. - WAN = `pppoe-out1`, veřejná IP `78.80.38.51` (PPPoE, bere se jako statická). ## DŮLEŽITÉ — proč port 51821, ne 51820 Na routeru **už běží jiná WireGuard VPN na Unraidu** (`192.168.1.76`): NAT rule „WireGuard to Unraid" DST-NATuje příchozí UDP **51820** na Unraid. Proto tahle nová, **na routeru hostovaná** VPN běží na **UDP 51821** (51820 by se nikdy nedostalo k routeru). Existující Unraid VPN ani tunel `10.253.0.0/24` nejsou dotčené. ## Parametry této VPN | | | |---|---| | WG rozhraní | `wg-vpn`, listen-port **51821** | | Server public key | `CGGFHYR83W8IuTB46cJ49IuL/tL3w4yu3o0hQh0Cxwo=` | | Tunelová síť | `10.10.10.0/24`, router `10.10.10.1` | | Klienti | `10.10.10.2` (client2), `.3` (client3), `.4` (client4) | | Endpoint | `78.80.38.51:51821` | | Split tunel | AllowedIPs = `192.168.1.0/24` (jen LAN přes VPN) | | DNS klientů | `192.168.1.2` (router) | ## Přidané firewall pravidla (jen accept, nic nemazáno/nepřeřazeno) - input: accept udp dst-port 51821 in-interface=pppoe-out1 „WireGuard in (router)" - input: accept in-interface=wg-vpn „WG -> router (DNS/ping)" (DNS a ping na router z tunelu) - forward: accept in-interface=wg-vpn „WG -> LAN" Všechna vložena PŘED příslušné `drop` v daném chainu. NAT hairpin **nepřidán** — LAN hosti mají router jako default gw, návratová cesta funguje. ## Skripty - `rosrun.py` — spouští RouterOS příkazy přes SSH. Creds z env: `ROS_HOST/ROS_PORT/ROS_USER/ROS_PASS`. Pozn.: v Git Bash nutné `MSYS_NO_PATHCONV=1` a příkazy přes stdin (ne `--cmd`, mangluje `/...`). - `gen_clients.py` — generuje klíče (wg.exe) + `.conf` + QR PNG do `wg-clients/`, a `_peers_add.rsc`. ## Klientské konfigurace `wg-clients/clientN.conf` (import na notebook) + `wg-clients/clientN.png` (QR pro mobilní app). **Obsahují privátní klíče** — po rozdání na zařízení smaž, ať neleží zbytečně. ## Test (jen zvenku, ne z LAN!) Telefon na mobilních datech → naskenuj QR → ověř `ping 192.168.1.2`. Z LAN to handshake neudělá (accept je vázán na in-interface=pppoe-out1, hairpin pro 51821 není). ## Rollback ``` /interface wireguard peers remove [find interface=wg-vpn] /ip firewall filter remove [find comment="WG -> LAN"] /ip firewall filter remove [find comment="WG -> router (DNS/ping)"] /ip firewall filter remove [find comment="WireGuard in (router)"] /ip address remove [find interface=wg-vpn] /interface wireguard remove [find name=wg-vpn] ```