55 lines
2.7 KiB
Markdown
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]
|
|
```
|