То, что Вы описали возможно будет работать.
На мой взгляд, если есть желание максимально упростить схему, можно применить решение на подобие ChilliSpot:
- Пускаете и гостей и пользователей в сеть без пароля, раздаете всем dhcp,
- Для пользователей заводите учетки на радиус-сервере, куда будет стучаться chilli,
- При попытке доступа (через web) к ip адресу за пределами выделенной абоненту ip-подсети, запросы будут уходить на шлюз, где должен крутиться chilli, который в свое время перекинет пользователя на страницу авторизации и после этого "разрешит" гонять трафик через шлюз.
Все очень просто, использовать можно как freeradius так и любой биллинг с поддержкой radius-протокола.
Из минусов можно выделить возможность снифить гостями трафик остальных пользователей.