利用wifidog实现无线网络认证

2021-02-23 11:41:14 浏览数 (1)

场景:

现在很多的商场、酒店、车站登公共上网环境中,很多都是用到了无线网络认证,到底是什么东西呢?就是无线网络公开的,没有密码,但是你登陆上网的时候,会弹出认证页面,让你先注册登陆之后,才能正常上网,这个就是今天要讲到的东西。

做wifi认证的有很多,包括商用的,免费的、开源的,今天主要是讲wifidog,是开源的一套认证系统。

由于没有openwrt的路由器,所以直接用一台双网卡的CentOS系统来做wifidog认证。

整个这一套东西,是三部分组成,下面详细介绍

服务器改路由器

用CentOS来做,需要将CentOS服务器配置成路由器

实现步骤如下:

  • 服务器em0配置外网配置
  • 服务器em1配置内网配置,不配网关
  • 在服务器上启动dhcp服务,在/etc/sysconfig/dhcpd中设置DHCP网卡为eth1
  • 将无线路由器设置成无线AP的模式,设置DHCP转发,并关闭无线安全,即不需要密码连接wifi
  • 开启服务器ip转发功能
  • 添加iptables的nat转换,将从em0口出的流量的SNAT都设置成em0的IP,这样才能保证内网网络能通外网

设置完以上,从客户端连接wifi,测试能够获取到DHCP的IP,已经能够正常连接网络,这部分工作就完成了(以上步骤都是很简单的基础服务,这里就不多做说明了,有问题可以留言)。

wifidog-auth

wifidog-auth安装部署

wifidog-auth是用php写的,采用laravel5.7框架,需要php7.1 支持

wifidog-auth安装

  • 从git上下载源码后,通过composer安装依赖
  • cp .env.example .env 修改配置文件,默认是用sqlite,根据情况,自己修改
  • 修改wifidog-auth目录权限为fpm用户权限
  • php artisan key:generate 生成key
  • php artisan jwt:generate 生成jwt
  • php artisan migrate 创建数据库

基本就可以访问了,在源码文件夹中,有个apache2目录,里面有写好的apache的配置文件,也可以用,需要自己写配置文件,完成后就可以访问了

wifidog-gateway

wifidog-gateway安装部署

wifidog-gateway是用C编写的,目前只支持linux平台,他是通过利用iptables来实现网络控制。

  • wifidog-gateway安装很简单,直接从git上拉取源码,源码中包含自动编译脚本
  • 在源码目录,执行./autogen.sh,然后make && make install安装
  • 安装完成后,在/usr/local/bin/wifidog生成可执行文件,在/usr/local/include/wifidog生成动态库

这就安装好了

wifidog-gateway启动

在编译安装完成后,在源文件目录里中,有个wifidog.conf,这个文件是wifidog的示例配置文件,将这个文件拷贝到/usr/local/etc/下,然后通过wifidog -c /usr/local/etc/wifidog.conf启动wifidog

在启动的过程中,如果遇到找不到动态库,需要将/usr/local/include/wifidog加入到/etc/ld.so.conf,或在/etc/ld.so.conf.d下面,添加wifidog的conf文件,然后执行ldconfig刷新动态库。

下面了解下wifidog配置文件

wifidog配置文件中的参数,不止这些,这里只拿这几个最主要的做个详细的解释

GatewayInterfate eth1 #这个参数是指定是那个网卡作为网关接口

GatewayAddress 192.168.11.1 #这个参数是指订网关IP地址

AuthServer #这一块内容,是指定认证服务器的链接信息

Hostname 192.168.2.111 #认证服务器地址

SSLAvailable no #是否开启SSL

SSLPort 443 #SSL端口

HTTPPort 81 #HTTP链接Auth端口

Path / #认证服务器链接地址

LoginScriptPathFragment login/? #认证服务器登陆地址

PortalScriptPathFragment portal/? #认证服务器protal地址

MsgScriptPathFragment gw_message.php? #message接口地址

PingScriptPathFragment ping/? #认证服务器心跳监测地址

AuthScriptPathFragment auth/? #认证服务器认证地址

Daemon 1 #wifidog是否以daemon进程启动

GatewayPort 2060 #wifidog-gateway端口

HTTPDMaxConn 10 #wifidog最大链接数

HTTPDUserName admin #wifidog的http页面登陆认证账户

HTTPDPassword secret #wifidog的http页面登陆认证密码

配置完成后,即可启动wifidog

wifidog有一个状态页面,url为:http://hostname:2060/wifidog/status,可以看到客户端链接状态

用客户端去链接开启wifidog的无线网络,会自动跳转到认证页面,需要在认证页面注册登陆,才能管正常上网

另外,如果需要实现部分url可直接上网,不需要认证,则需要在iptables中添加要放行的网站的IP,wifidog中没有实现URL白名单,比如需要放心微信能够正常访问,需要做如下操作

iptables -I WiFiDog_br-lan_Global -d short.weixin.qq.com -j ACCEPT

iptables -I WiFiDog_br-lan_Global -d long.weixin.qq.com -j ACCEPT

iptables -I WiFiDog_br-lan_Global -d szlong.weixin.qq.com -jACCEPT

iptables -I WiFiDog_br-lan_Global -d szshort.weixin.qq.com -jACCEPT

iptables -I WiFiDog_br-lan_Global -d mp.weixin.qq.com -j ACCEPT

iptables -I WiFiDog_br-lan_Global -d res.wx.qq.com -j ACCEPT

iptables -t nat -I WiFiDog_br-lan_Global -d mp.weixin.qq.com -jACCEPT

iptables -t nat -I WiFiDog_br-lan_Global -d res.wx.qq.com -j ACCEPT

iptables -t nat -I WiFiDog_br-lan_Global -d short.weixin.qq.com -jACCEPT

iptables -t nat -I WiFiDog_br-lan_Global -d long.weixin.qq.com -jACCEPT

iptables -t nat -I WiFiDog_br-lan_Global -d szlong.weixin.qq.com -jACCEPT

iptables -t nat -I WiFiDog_br-lan_Global -d szshort.weixin.qq.com -jACCEPT

wifidog的iptables链需要根据具体的情况修改,这里通过iptables -d参数将微信用到的域名都解析IP加入到iptables放行,因为微信在全国有很多服务器,所以只能用域名解析的方式来做,其他url类似。

附:

wifidog-auth https://github.com/wifidog/wifidog-auth-laravel.git

wifidog-gateway https://github.com/wifidog/wifidog-gateway.git

wifidog官网:http://dev.wifidog.org

0 人点赞