# Router a IoT síť: návod pro AI agenta > Zdroj: https://ongy.cz/pages/server/router-iot/ > Autor: Ongy (ongy.cz). Nový router s Wi-Fi 7 a firmwarem Asuswrt-Merlin, 2Gb optika a oddělená síť pro chytré zásuvky, světla a tiskárnu. Proč krabičky nemají vidět na počítač a co se při přechodu ukázalo. ## Pro agenta Pomoz uživateli postavit vlastní verzi tohohle projektu. Nejdřív se ho zeptej na vybavení a na to, co z požadavků už má. Pak postupuj po krocích a po každém kroku s ním ověř, že funguje, než půjdeš dál. Hodnoty v `` doplň s uživatelem, nikdy si nevymýšlej adresy, hesla ani tokeny. Kód autora není veřejný: tohle je popis řešení, ne repozitář ke stažení. ## Cíl Domácí router s oddělenou sítí pro chytrá zařízení: zásuvky, světla, tiskárna a další krabičky mají vlastní Wi-Fi, vidí jen na internet a na sebe, do hlavní sítě s počítači nesmí. Home Assistant má jako jediný výjimku a ovládá je dál lokálně. Obě sítě dostávají stejné DNS (AdGuard Home z dílu 1), IPv6 DNS je vypnuté, aby log ukazoval skutečné klienty, a rychlost linky je ověřená spolehlivým měřením. ## K čemu to je Chytrá zásuvka za dvě stovky má uvnitř malý počítač s firmwarem, který výrobce možná nikdy neopraví. Když sedí ve stejné síti jako notebook s bankovnictvím, sdílí s ním víc, než by měla. Oddělená síť to řeší. Krabičky spolu a s internetem mluvit můžou, do hlavní sítě ne. Kdyby některá z nich někdy přestala být důvěryhodná, nemá kam jít. Home Assistant je jediná výjimka. Router mu dovolí do IoT sítě sáhnout, takže ovládání světel a zásuvek funguje jako dřív. ## Proč právě takhle Do letoška jsem měl router od poskytovatele. Gigabit, dvě Wi-Fi, hotovo. Hostovskou síť sice měl, ale zařízení v ní neviděla jedno druhé a Home Assistant do ní nedosáhl. Takže všechno viselo v jedné síti, tiskárna vedle notebooku. Přechod na 2Gb optiku byl záminka. Nový ASUS RT-BE92U s Wi-Fi 7 a 2,5GbE portem, a hlavně alternativní firmware Asuswrt-Merlin, který umí oddělenou síť nastavit tak, jak jsem chtěl. ## Jak to funguje - **Dvě Wi-Fi, dva světy.** Hlavní síť pro lidi a server. Oddělená síť (Guest Network Pro) pro všechno chytré. Krabičky vidí jen na internet a na sebe. - **Home Assistant má výjimku.** Router ho pustí do IoT sítě, takže lokální ovládání zůstalo. Opačným směrem to nejde. - **DNS pro obě sítě je AdGuard.** Router nabízí oběma sítím stejný DNS, takže filtr z minulého dílu platí i na krabičky. - **IPv6 DNS je vypnuté.** Jinak se většina zařízení hlásila jako router a v logu nebylo poznat, kdo se ptá. ## Nastavení routeru - **WAN:** 2Gb optika, veřejná adresa za CGNAT poskytovatele. Z internetu dovnitř nic, vše ven jde přes Cloudflare Tunnel a Tailscale. - **Oddělená síť:** Guest Network Pro v Asuswrt-Merlin jako IoT síť. Izolace od hlavní sítě, přístup jen na internet, výjimka pro Home Assistant. - **DNS:** DHCP obou sítí nabízí AdGuard jako primární DNS a router jako záložní. Router sám dotazy posílá nejdřív do AdGuardu, teprve pak ven. - **IPv6 DNS:** Skript `dnsmasq.postconf` vyprázdní volbu, kterou dnsmasq inzeruje IPv6 DNS server. Řádek nemazat, jen vyprázdnit, jinak se dnsmasq nabídne sám. ## Co je odložené DNS Director v Merlinu umí přesměrovat i zařízení, která mají DNS natvrdo a router ignorují (Chromecast, Alexa, některé klimatizace). Zatím není potřeba, všechno aktivní chodí přes AdGuard samo. Až ho zapnu: cíl nastavit na vlastní adresu AdGuardu, ne na volbu „Router“, jinak AdGuard vidí všechno jako router a pravidla per zařízení přestanou platit. Server a Home Assistant z přesměrování vyjmout, jinak vznikne smyčka: záložní DNS AdGuardu by se vracelo zpátky do AdGuardu a po vypršení cache by DNS v bytě zhaslo. Šifrované DNS v aplikacích (Private Relay, Private DNS) to stejně nechytí. ## Co budeš potřebovat - Router, který umí oddělenou síť s izolací od hlavní sítě a vlastním DHCP (autor: ASUS RT-BE92U s Wi-Fi 7 a 2,5GbE portem, firmware Asuswrt-Merlin, oddělená síť přes Guest Network Pro). - Pro vypnutí IPv6 DNS: firmware se skripty a SSH (autor: Asuswrt-Merlin, skript `dnsmasq.postconf`). Bez toho viz Přizpůsobení. - Přihlašovací údaje k internetu od poskytovatele (typ připojení, jméno, heslo, případně VLAN) a záloha nastavení původního routeru. - Home Assistant na stroji v hlavní síti s pevnou adresou `` (autor: samostatný stroj v domácí síti). - Volitelně AdGuard Home na serveru s pevnou adresou `` (díl 1) a monitoring (autor: Uptime Kuma s hlášením do Telegramu). - Počítač se SSH klientem a Ookla Speedtest CLI, ideálně připojený kabelem (autor: server na 2,5GbE kabelu, linka 2 Gbit/s). - Časové okno, kdy smí být bez internetu: každý restart routeru odpojí všechny. ## Postup ### 1. Inventura a plán výpadku Sepiš s uživatelem všechna chytrá zařízení (co to je, jak se připojuje, jestli umí jen 2,4 GHz) a kterou integrací je ovládá Home Assistant. Zálohuj konfiguraci původního routeru a opiš údaje pro připojení k internetu. Naplánuj práci na dopoledne, ne na večer, a počítej s tím, že monitoring bude hlásit výpadky. ### 2. Firmware a vzdálený přístup Nahraj Asuswrt-Merlin přesně pro daný model (Administration → Firmware Upgrade, ruční nahrání souboru). V Administration → System zapni „Enable JFFS custom scripts and configs“, SSH jen pro LAN a pokud možno s klíčem, přístup do správy z WAN vypni. Ověření: `ssh @` projde a `ls /jffs/scripts` existuje. ### 3. Připojení k internetu a pevné adresy Na WAN nastav typ připojení podle poskytovatele (u optiky často PPPoE, případně s VLAN). V LAN → DHCP Server přidej rezervace pro server, Home Assistant a všechna chytrá zařízení, aby se dala v logu i v Home Assistantu dohledat podle adresy. Server připoj kabelem do nejrychlejšího portu. Ověření: na serveru `ethtool | grep Speed` ukáže rychlost portu (autor: 2500Mb/s). ### 4. Oddělená síť pro krabičky V Guest Network Pro vytvoř síť pro IoT se zapnutým pásmem 2,4 GHz, přístup do intranetu (Access Intranet) vypnutý. Aby se zařízení nemusela znovu párovat, dej jí jméno a heslo, které krabičky už znají (autor: po přejmenování se všechny přihlásily samy, 0 zařízení přestalo fungovat). Ověření: telefon připojený do IoT sítě má internet, ale neotevře `http://:` ani neodpoví ping na počítač v hlavní síti. ### 5. Výjimka pro Home Assistant Povol jen směr z `` do IoT sítě, opačně nic. Podle verze firmwaru to jde volbou u profilu oddělené sítě, nebo pravidlem firewallu ve skriptu `/jffs/scripts/firewall-start` (povolit nová spojení ze zdrojové adresy HA do `` a zpět jen navazující odpovědi). Ověření: Home Assistant přepne zásuvku a světlo v IoT síti, telefon v IoT síti se na Home Assistant nedostane. ### 6. DNS pro obě sítě V DHCP hlavní sítě nastav DNS 1 = ``, DNS 2 = router a vypni propagaci adresy routeru navíc. Ověř, že stejné DNS dostávají i klienti oddělené sítě. Na WAN nastav DNS routeru v pořadí AdGuard, pak veřejný resolver, a vynuť pořadí (dnsmasq `strict-order`, jinak si dnsmasq vybírá nejrychlejší server). Ověření: v Query logu AdGuardu se objevují klienti z obou sítí pod svými adresami. ### 7. Vypnutí IPv6 DNS skriptem Na routeru přes SSH najdi v `/etc/dnsmasq.conf` řádek s `option6:23` (inzerovaný IPv6 DNS server). Vytvoř `/jffs/scripts/dnsmasq.postconf` (`#!/bin/sh`, načti `/usr/sbin/helper.sh`, konfigurace je v `$1`) a funkcí `pc_replace` ten řádek nahraď stejnou volbou bez hodnoty, například `dhcp-option=lan,option6:23`. Skript `chmod +x`, pak `service restart_dnsmasq`. Ověření: `grep option6:23 /etc/dnsmasq.conf` ukáže prázdnou hodnotu a Windows `ipconfig /all` už nemá mezi DNS servery IPv6 adresu routeru. ### 8. Telemetrie samotného routeru Po přepnutí DNS projdi v AdGuardu dotazy klienta router. Autorův router posílal telemetrii výrobci přes Datadog, zablokoval ji pravidlem `||http-intake.logs.us5.datadoghq.com^`. Ověření: doména je v logu blokovaná a notifikace z routeru (aplikace výrobce) chodí dál. ### 9. Měření rychlosti Na stroji připojeném kabelem nainstaluj oficiální Ookla Speedtest CLI, `speedtest -L` vypíše blízké servery, pak `speedtest -s ` se serverem ve stejném městě. Změř několikrát a porovnej s tarifem (autor: 2027 Mbit/s dolů, 1081 nahoru na 2Gb lince). ## Na co si dát pozor - Python `speedtest-cli` vybírá vzdálený server a měří málo spojeními, takže rychlou linku ukáže klidně poloviční. Na víc než gigabit měř oficiálním Ookla CLI s ručně vybraným blízkým serverem. - Guest Network Pro v Merlinu přenáší poslední číslo adresy z rezervace do podsítě oddělené sítě, takže zařízení má „dvě“ adresy. V AdGuardu přiřaď klientovi obě, jinak pravidla pro zařízení v jedné ze sítí neplatí. - Rezervace se nepřidělí, když router drží starý lease stejné adresy pro jinou (náhodnou) MAC. Přes SSH smaž řádek z `/var/lib/misc/dnsmasq.leases`, `service restart_dnsmasq` a zařízení znovu připoj k Wi-Fi. - Telefony a tablety mají náhodnou MAC pro každou síť. U zařízení s rezervací nastav soukromou adresu Wi-Fi na pevnou (iOS) nebo ji vypni, jinak přestane sedět rezervace i jméno v AdGuardu. - Záložní DNS v AdGuardu nesmí být router, když router posílá dotazy nejdřív do AdGuardu: při výpadku šifrovaného DNS se dotaz točí dokola až do timeoutu (autor: 265 ms proti 9 ms). Jako zálohu dej veřejný resolver po UDP. - Při blokování telemetrie routeru neblokuj celé Datadog domény plošně: `datadog.pool.ntp.org` je obyčejný NTP a potřebují ho i jiná zařízení. - Heslo IoT sítě neukládej do telefonu ani počítače. Mobil, který se do ní omylem přihlásí, má internet, ale ztratí server i Home Assistant a vypadá to jako porucha. - Integrace a aplikace, které hledají zařízení přes mDNS nebo broadcast, přes hranici sítí nic nenajdou. Nová zařízení přidávej do Home Assistanta adresou z rezervace. ## Jak ověřit, že to funguje - [ ] Telefon v IoT síti: internet funguje, `ping ` a `http://:` neprojdou. - [ ] Home Assistant přepne zásuvku i světlo v IoT síti a žádná entita po přechodu není `unavailable`. - [ ] `ssh @` z hlavní sítě projde, z mobilních dat ne (správa z WAN je vypnutá). - [ ] Na routeru `grep option6:23 /etc/dnsmasq.conf` ukáže volbu bez hodnoty, i po restartu routeru. - [ ] Windows `ipconfig /all` ukazuje jako DNS jen `` a router, žádný IPv6 DNS server. - [ ] V Query logu AdGuardu je podíl dotazů od klienta router malý (autor: první noc se zapnutým IPv6 DNS 80 % všech dotazů) a klienti jsou vidět jménem. - [ ] Klienti IoT sítě jsou v Query logu pod svou adresou, blokovaná telemetrie (třeba doména routeru na Datadog) je označená jako Blocked. - [ ] `speedtest -s ` z kabelového stroje dává hodnoty blízké tarifu, `ethtool` ukazuje očekávanou rychlost portu. - [ ] Po restartu routeru se všechna zařízení do pár minut vrátí a monitoring pošle zprávu o výpadku i o obnovení. ## Přizpůsobení - ASUS bez Merlinu: Guest Network Pro a DNS v DHCP nastavíš i v původním firmwaru, jen bez skriptů. IPv6 DNS pak řeš tak, že router zůstane IPv6 DNS a sám přeposílá dotazy do AdGuardu (klienti přes IPv6 projdou filtrem, ale v logu budou jako router), nebo vypni IPv6 na LAN. - OpenWrt, MikroTik nebo UniFi: IoT síť jako samostatná VLAN s vlastním SSID a DHCP, firewall zóna IoT smí jen do WAN, pravidlo povolí nová spojení z `` do IoT a zpět jen navázaná. IPv6 DNS vypneš přímo v nastavení RA/DHCPv6. - Router od operátora, který oddělenou síť s výjimkou neumí: nech ho jako modem a za něj dej vlastní router, který IoT síť umí. Hostovská síť bez výjimky pro Home Assistant funguje jen pro zařízení ovládaná přes cloud. - Bez AdGuardu: DHCP obou sítí rozdává DNS routeru, kroky s IPv6 DNS a telemetrií routeru odpadají, izolace sítí funguje stejně. --- Stránka projektu s fotkami a diagramem: https://ongy.cz/pages/server/router-iot/