分类 wifidog流程 下的文章

在Ubuntu Linux安装wifidog认证服务器(1)

简介
这是在Ubuntu Linux安装认证服务器的详细指南

安装distro
从Ubuntu:current release下载distro。烧录到盘上并启动有cdrom的电脑。这是标准安装:点击桌面上的“安装”并按指南操作。默认安装会安上许多不需要的东西,如果你没有足够的磁盘空间,你可以试试安装Debian。

Ubuntu默认软件管理器是APT,这让我很轻松的完成这个指南(大部分从debian安装指南剪切粘贴过来的)
重启时,在GUI输入你的用户名/密码,启动Applications/Accessories/Terminal。

安装prerequisites
你将会做为标准用户登录,所以我们需要在每个“root-runned”命令前面加上sudo。
在进行安装操作之前,我们需连接到网络并更新APT数据库

sudo apt-get update

认证服务器需要一个网络服务器(apache2)和PHP(最新版本)

sudo apt-get install apache2 php5

如果你使用的是current/2011 debian/ubuntu,你需要在suhosin使用长变量名,这样PHP才能正常运行:

vi /etc/php5/apache2/conf.d/suhosin.ini
-> add:  suhosin.post.max_name_length = 100
-> add:  suhosin.request.max_varname_length = 100

数据库服务器安装
我们还需要数据库服务器,所以需要安装PostgreSQL并已被完全配置。

sudo apt-get install postgresql

安装prerequisites-step2
我们也需要一些细节库

sudo apt-get install php5-cgi
sudo apt-get install php5-mhash php5-pgsql php-pear php5-xmlrpc php5-curl php5-mcrypt php5-dev
sudo apt-get install language-pack-en-base

如果用最近版本的wifidog-auth,我们需要安装subversion:

sudo apt-get install subversion

在“sudo pear install Phlickr-0.2.5.tgz”,你会看到这样的错误提示:"/tmp/glibctestWTQG39:1:22: error: features.h no such file"...
这没关系,安装会继续并且FlickrPhotoStream将会成为有效内容类型。

sudo pear install XML_RPC
cd /tmp
wget http://ovh.dl.sourceforge.net/sourceforge/phlickr/Phlickr-0.2.5.tgz
sudo pear install Phlickr-0.2.5.tgz 
rm Phlickr-0.2.5.tgz

你也许想要安装openssh-server(更便于远程连接)。但这不是WIFIDOG-AUTH的所必需的。
sudo apt-get install openssh-server

安装认证服务器

svn checkout https://dev.wifidog.org/svn/trunk/wifidog-auth
sudo mv wifidog-auth/ /var/www/
/var/www/wifidog-auth/wifidog/classes/Dependency.php文件需要被编辑,否则smarty安装将失败。
Change line 122 to the following:'website' => "http://www.smarty.net/",
Change line 123 to the following: 'installSourceUrl' => "http://www.smarty.net/files/Smarty-2.6.26.tar.gz",

本文章由 http://www.wifidog.pro/2015/03/10/Ubuntu%E5%AE%89%E8%A3%85wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8.html 整理编辑,转载请注明出处

在wifidog的login参数中加入客户端MAC地址

用户在连接到需要认证的wifi上之后,会被wifidog 的login 协议重定向到:

http://auth_server/login/?gw_id=xxx&gw_address=xxx&gw_port=xxx&url=xxx

如果我们想添加一个mac 地址,该如何实现?
添加网关的MAC地址直接可以改成:

http://auth_server/login/?gw_id=xxx&gw_address=xxx&gw_mac=xxx&gw_port=xxx&url=xxx

网关的MAC 地址获取很简单用ioctl 就可以实现,这里不细说,另一种办法是直接在配置页面把网关MAC 配置进wifidog.conf,给全局变量config 添加一个字段成员即可,也很简单。

那么添加当前客户端的MAC 地址又该如何实现?
在http.c 文件里找到

  /* Re-direct them to auth server */
  char *urlFragment;
  safe_asprintf(&urlFragment, "%sgw_address=%s&gw_port=%d&gw_id=%s&url=%s",
         auth_server->authserv_login_script_path_fragment,
         config->gw_address,
         config->gw_port,
         config->gw_id,
         url);
   debug(LOG_INFO, "Captured %s requesting [%s] and re-directing them to login page", r->clientAddr, url);
   http_send_redirect_to_auth(r, urlFragment, "Redirect to login page");
   free(urlFragment);

lighttpd 已经帮我们拿到了r->clientAddr,这个其实就是当前客户端的IP 地址,然后我们通过读取arp 表/proc/net/arp 来查找r->clientAddr 对应的MAC,不过wifidog 已经有现成的函数arp_get直接得到MAC 地址,所以我们直接将上述代码修改成:

  /* Re-direct them to auth server */
  char *urlFragment;
  char *client_mac = arp_get(r->clientAddr);

  if(client_mac == NULL)
         return;

  safe_asprintf(&urlFragment, "%sgw_address=%s&gw_port=%d&client_mac=%s&gw_id=%s&url=%s",
         auth_server->authserv_login_script_path_fragment,
         config->gw_address,
         config->gw_port,
         config->gw_id,
         url);
   debug(LOG_INFO, "Captured %s requesting [%s] and re-directing them to login page", r->clientAddr, url);
   http_send_redirect_to_auth(r, urlFragment, "Redirect to login page");
   free(urlFragment);

本文章由 http://www.wifidog.pro/2015/03/04/wifidog-login%E6%B7%BB%E5%8A%A0%E5%AE%A2%E6%88%B7%E7%AB%AFmac%E5%9C%B0%E5%9D%80.html 整理编辑,转载请注明出处

wifidog 报错iptables failed

报错如下:
(fw_iptables.c:116) iptables command failed(1): iptables -t mangle -F WiFiDog_br-lan_Trusted
(fw_iptables.c:116) iptables command failed(1): iptables -t mangle -F WiFiDog_br-lan_Outgoing
(fw_iptables.c:116) iptables command failed(1): iptables -t mangle -F WiFiDog_br-lan_Incoming

这是在wifidog 刚启动时,firewall 规则重置出现的log,在函数fw_destroy 里出现,因为这时WiFiDog_br-lan_Trusted,WiFiDog_br-lan_Outgoing,WiFiDog_br-lan_Incoming规则链还没有建立,所以iptables 清空(-F)失败,这段错误并不会影响wifidog正常执行,所以不用特别在意这段错误。

本文章由 http://www.wifidog.pro/2015/03/04/wifidog-iptables%E6%8A%A5%E9%94%99.html 整理编辑,转载请注明出处

wifidog在防火墙中的流程

1,iptables 的四链五表,这里就不多说了,自己可以参看相关资料。

2,wifidog在四链中的工作流程:

数据包---->mangle--->进入路由表前/
1)--->白名单MARK 01
2)--->认证的MAC,MARK 02
3)---->非认证不MARK ------>

-->nat--->进入路由表前-->
1)--目的IP是本地----放行
2)--目的IP非本地-----mark 02,mark 01--->放行
3)---无mark-->目的认证服务器--->放行
-->目的白名单--->放行
-->重定向80到2060

Filter----->非本地----
1)--->目的认证服务器--->放行
2)--->mark 254(黑名单)--->拦截
3)--->mark 01 02 ---->放行
4)--->非mark ---->只认过53 67 443端口

本文章由 http://www.wifidog.pro/2015/03/04/wifidog-%E9%98%B2%E7%81%AB%E5%A2%99%E6%B5%81%E7%A8%8B.html 整理编辑,转载请注明出处