Просто чтобы задокументировать, что у меня работает (на всем сайте, без ssh-доступа к AP) на версии 5.7.20 с Cloudkey. Это заставило Airprint работать в сети с гостевой политикой. Мне очень хотелось, чтобы гостевой контроль отключал детей от интернета, но при этом позволял им печатать.
У меня также есть роутер pfsense с Avahi mdns reflector.
Редактируйте файл /srv/unifi/data/sites/default/config.properties на Cloudkey (на любой установке он должен быть доступен по пути /usr/lib/unifi/data/sites/default/config.properties):
config.system_cfg.1=wireless.1.dtim_period=3
config.system_cfg.2=wireless.2.dtim_period=3
config.system_cfg.3=wireless.3.dtim_period=3
config.system_cfg.4=wireless.4.dtim_period=3
config.system_cfg.5=ebtables.200.cmd=-t nat -I GUESTIN -p 0x800 --ip-proto 17 --ip-dport 5353 -j ACCEPT
config.system_cfg.6=ebtables.201.cmd=-t nat -I GUESTOUT -p 0x800 --ip-proto 17 --ip-dport 5353 -j ACCEPT
config.system_cfg.7=ebtables.202.cmd=-t nat -I GUESTIN -p 0x800 --ip-dst 224.0.0.0/4 -j ACCEPT
config.system_cfg.8=ebtables.203.cmd=-t nat -I GUESTOUT -p 0x800 --ip-dst 224.0.0.0/4 -j ACCEPT
Параметр dtim_period должен помочь с режимом сна и временем работы от батареи у устройств Apple.
После сохранения файла запустите provision. Но отличие от того, что я видел раньше — это использование «-I» вместо «-A». Поскольку эти строки — последние ebtables.xxx в файле, «-I» вставляет правило в начало, вместо того, чтобы добавлять его в конец.
Так что цепочка на AP выглядит так:
WestAP-BZ.v3.9.27# ebtables -t nat -L GUESTIN
Bridge table: nat
Bridge chain: GUESTIN, entries: 19, policy: DROP
-p IPv4 --ip-dst 224.0.0.0/4 -j ACCEPT
-p IPv4 --ip-proto udp --ip-dport 5353 -j ACCEPT
-p IPv4 --ip-dst 10.10.10.19 --ip-proto tcp --ip-dport 8882 -j ACCEPT
-p IPv4 --ip-dst 10.10.10.19 --ip-proto tcp --ip-dport 8881 -j REDIRECT_HTTP
-p 0x888e -i ath2 -j ACCEPT
-p 0x888e -i ath6 -j ACCEPT
-p IPv4 --pkttype-type broadcast --ip-proto udp --ip-sport 68 --ip-dport 67 -j ACCEPT
-p ARP -j ACCEPT
-p IPv4 --ip-proto udp --ip-dport 53 -j GUEST_DNS
-p IPv4 --ip-proto tcp --ip-dport 53 -j GUEST_DNS
-p IPv6 -j DROP
--pkttype-type broadcast -j DROP
-p IPv4 --ip-dst 10.10.10.19 --ip-proto tcp --ip-dport 8880 -j ACCEPT
-p IPv4 --ip-dst 10.10.10.19 --ip-proto tcp --ip-dport 8843 -j ACCEPT
-p IPv4 --ip-proto tcp --ip-dport 443 -j CAPTIVE_PORTAL
-p IPv4 --ip-dst 224.0.0.0/4 -j DROP
-p IPv4 --pkttype-type otherhost -j AUTHORIZED_GUESTS
-p IPv4 --ip-proto tcp --ip-dport 80 -j REDIRECT_HTTP
-p IPv4 --ip-proto tcp --ip-dport 443 -j REDIRECT_HTTPS