Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: Tom K 30. 04. 2023, 07:13:48
-
Mám wifi router s AsusWRT, USB donglem a SIM s datovým limitem, použití o víkendech na chatě.
Rád bych vytvořenou wifi označil hintem "metered", aby zařízení o limitu věděla a nestahovala zbytečnosti jako aktualizace aplikací a Windows Update. Lze sice ručně nastavit na každém zařízení, ale nepraktické - proto chci aby se Wifi chovala jako hotspot v mobilu, který toto obvykle(?) umí.
-
Ta informace se v síti šíří pomocí DHCP. Android posílá v režimu hotspot svým klientům volbu číslo 43 s hodnotou ANDROID_METERED. Je tedy potřeba to nastavit v konfiguraci místního DHCP stejně.
-
Ja by som Petrovu odpoveď ešte trocha rozšíril.
Flag ANDROID_METERED je DHCP option 43, čo je vendor option; t.j. význam tohto parametra závisí od výrobcu zariadenia. Takže:
- zariadenie si v DHCP požiadavke musí vypýtať option 43. Pokiaľ v Parameter-List nie je požiadavka na Vendor-Specific, tak ho v odpovedi nedostane.
- zariadenie v DHCP požiadavke posiela svojho vendora, v hlavičke Class-Id. DHCP server podľa tejto hlavičky vie, akú množinu parametrov v skupine Vendor-Specific poslať späť. Pre každého vendora môže mať iné parametre, a každý vendor intepretuje jednotlivé parametre inak!
- Android to robí zaujímavejšie tým, že každá verzia má iného vendora, t.j. iný Class-id (napr. "android-dhcp-12", "android-dhcp-11"), takže ak používaný DHCP server nevie zástupné znaky, tak to treba povytvárať viackrát (viď príklad nižšie).
- Prekvapivo, tento option podporuje aj Microsoft vo Windows (Class-id "MSFT 5.0"). Iné desktopové systémy, ako macOS alebo desktopové linuxy si tento option ani nepýtajú, ani by s ním nijako nepracovali, keby im prišiel.
- ANDROID_METERED nie je štruktúrovaný ako ostatné parametre 43. Nemá očíslovaný tag parametra, je to iba reťazec, poslaný na hulváta.
Na Mikrotiku konfigurácia vyzerá takto:
/ip dhcp-server option
add code=43 name=android-metered value="'ANDROID_METERED'"
/ip dhcp-server option sets
add name=android options=android-metered
/ip dhcp-server matcher
add address-pool=dhcp code=43 name=android12 option-set=android server=defconf value=android-dhcp-12
add address-pool=dhcp code=43 name=android11 option-set=android server=defconf value=android-dhcp-11
add address-pool=dhcp code=43 name=android10 option-set=android server=defconf value=android-dhcp-10
add address-pool=dhcp code=43 name=android9 option-set=android server=defconf value=android-dhcp-9
Či ASUS Toma K také niečo umožňuje, si bude musieť zistiť sám.
-
Android to robí zaujímavejšie tým, že každá verzia má iného vendora, t.j. iný Class-id (napr. "android-dhcp-12", "android-dhcp-11"), takže ak používaný DHCP server nevie zástupné znaky, tak to treba povytvárať viackrát (viď príklad nižšie).
Je tohle opravdu potřeba? Pokud nemám v síti žádné jiné zařízení, které vyžaduje volbu 43 s nějakým specifickým obsahem, asi není problém posílat ANDROID_METERED všem zařízením, co si o volbu 43 požádají. Nebo ano?
-
Je tohle opravdu potřeba? Pokud nemám v síti žádné jiné zařízení, které vyžaduje volbu 43 s nějakým specifickým obsahem, asi není problém posílat ANDROID_METERED všem zařízením, co si o volbu 43 požádají. Nebo ano?
Keď to DHCP server dovolí, tak prečo nie. Niektoré sú príliš chytré a snažia sa príliš pomáhať, preto smerujú používateľov rozdeliť parametre podľa class-id. Taký dnsmasq umožňuje dhcp-option=vendor:,hodnota (t.j. prázdny vendor, ktorý sa použije pre každého), ale UI v rozličných zariadeniach to nemusia povoliť, aj keď používaju dnsmasq pod kapotou.
-
Ještě funguje jedna cesta, přímo v nastavení WiFi sítě přidat jeden vendor element, který indikaci měřeného připojení posílá (odzkoušeno, že na Androidu to funguje). Na druhou stranu to není 100%, některé věci stejně budou stahovány i při tomto příznaku pro zařízení...
Např. u OpenWRT se v sekci
config wifi-device 'radioXXX'
přidává
list hostapd_options 'vendor_elements=DD080050F21102000200'
nebo (s podporou starších verzí Network Manager <= 1.31.5 )
list hostapd_options 'vendor_elements=DD080050F21102000202'
Příklad použití:
uci add_list wireless.radio0.hostapd_options='vendor_elements=DD080050F21102000200'
uci add_list wireless.radio1.hostapd_options='vendor_elements=DD080050F21102000200'
uci commit
Detaily lze nalézt na https://openwrt.org/docs/guide-user/network/wifi/ms-meteredconnection (https://openwrt.org/docs/guide-user/network/wifi/ms-meteredconnection)
-
Pokud to chápu správně (prvá možnost s DHCP option 43), tak nemusím řešít která verze androidu atd, ale mohu použít force:
--dhcp-option-force=43,"ANDROID_METERED"
(nevím zda ty uvozovky - dle dhcpmasq man tam patří)
Mikrotik prý --dhcp-option-force neumí, proto ty obezličky jak píše "já."
Jdu testovat.