Files
ordinaceprojekt/WireGuard/NOTES.md
T
Vladimir Buzalka e981659621 notebookvb
2026-06-19 11:30:52 +02:00

55 lines
2.7 KiB
Markdown

# 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]
```