1、初始化
wifidog 在启动时会初始化一堆的防火墙规则 int iptables_fw_init(void)
- 清除掉已有的防火墙规则,重新创建新的过滤链
- 设置了 鉴权服务器(auth-server) 的防火墙规则 void iptables_fw_set_authservers(void)
2、重定向
- 将HTTP请求的外部IP地址和端口通过NAT方式重定向至本地wifidog内嵌HTTP服务器的地址和端口上
- 客户端首次访问时回调http_callback_404函数,在该函数中根据获取的客户端信息来配置重定向的URL fragment
void http_callback_404(httpd *webserver, request *r)
- 重定向至auth server
void http_send_redirect_to_auth(request *r, const char *urlFragment, const char *text)
3、认证
- 设备的浏览器接收到 wifidog 返回的 302 重定向请求后,会将页面重定向至 auth-server 的 /login 页面,并且在此 URL 中会携带一些路由器/网关 参数,以及接入设备的 MAC 地址和客户端访问的源URL
- auth-server 收到请求后处理,并返回重定向到 wifidog 的响应 (同时携带了为此接入设备的用户分配了 token)
- 设备的浏览器重定向至路由器上 wifidog 的 http 服务&