相关资源:
1、OSSH的安装采用了OSSH免费版华为Portal(portal版本是华为portal1.0)系统ISO镜像版,直接下载镜像安装在虚拟机上即可。
下载地址:
链接: http://pan.baidu.com/s/1hqh0t2O 密码: uz1s
包含:镜像、安装说明、配置手册
2、NAC是freeAC的一个软件,在freeAC论坛上下载。我这里准备的是一个centos6.5 64位虚拟机,将下载的软件nac-0.2.0-v1.x86_64.rpm安装在这台虚拟机上。
下载地址: http://pan.baidu.com/s/1gd5kMt1 密码: rzdp
实验拓扑图:
ossh地址: 192.168.100.100 (portal + freeradius2.2.0)
用户名:root
密码: m0n0Radius
portal访问地址:
http://192.168.100.100:8088/
NAC: 192.168.100.101
用户名:root
密码: 123456
AC配置
AC使用的汉明的6100,对这款产品的相关配置,可以联系厂家技术支持要一个配置文档,我是参考一个《Howay系列无线控制器用户手册(WEB)--配套B20X版本》的文档进行的配置。配置的主要过程:
1、 将AC+AP+客户端调通,能够使无线客户端能够连接到无线网络并且通过DHCP获取到IP。按照下面的规划进行接口配置、DHCP配置、WLAN配置(无线服务配置、AP配置)。
AC地址:
管理地址:192.168.1.1
eth1地址: 192.168.1.33 (vlan1,管理客户端)
eth2地址: 10.0.0.221 (vlan90,连接AP,开启DHCP,AP自动获取10.0.0.222)
eth3地址: 192.168.100.1 (vlan100,连接ossh)
sta虚拟服务地址: 200.200.200.1 (vlan200,提供给最终用户STA,开启DHCP)
(注:上面的配置是我实验环境的配置,大家可以根据自己的环境做不同的规划配置。)
注意接口配置的时候STA虚拟服务端口需要勾选“标签”方式(tag),端口选择需要选取与AP相同的物理端口,否则客户端不能DHCP分配到地址。无线服务配置里面的默认VLAN要填写STA所在的VLAN。如下图:
安全配置里的portal认证和radius认证可以先关闭,先调通客户端能正常接入WLAN并且能正常获取DHCP地址。
2、 认证配置。portal和radius认证。配置portal服务器地址和需要认证的网段,radius服务器地址、端口等。 首先是NAS配置(NAS:网络接入服务器,RADIUS服务器的客户端,配置成AC接入RADIUS网络的物理端口eth3地址192.168.100.1),如下图:
下图是portal配置:
下图是portal配置里面的“本地服务器”配置:
注意,这里的“本地服务器”指的就是NAC!
接下来是radius“认证”和“计费”配置:
最后是“域配置”:
到这里,AC就配置好了。做一个简单总结:
首先将基本的AC+AP+STA调测好,使WIFI客户端STA可以接入WLAN并且能够自动获取DHCP地址,如果有上网条件,还可以将上网的网口配置进去,同时对AC的DNS和网关做一些简单调整,可以实现STA的上网,我们这个实验环境没有做这部分内容。
然后是在AC上配置portal服务器和radius服务器的相关信息,对于这部分内容,脑子里始终记住“服务端-客户端”网络模型就可以了,即:AC作为NAS,作为客户端去连RADIUS服务器;AC作为客户端,portal服务器作为服务端;AC作为客户端,NAC作为服务端。
二、portal配置(ossh)
编辑配置文件:vi
/usr/local/portalServer/webapps/portalServer/WEB-INF/classes/configs.prod.properties
acHost=192.168.100.101 // NAC地址
acPort=2000 // NAC开放的端口
serverPort=0
sharedSecret=123456789 //共享密钥
#chap 0 pap 1
authType=0
timeoutSec=3
sleepSec=0
修改后保存,注意:每次修改配置文件后,需重启portalServer 服务后方能生效
日志:
/usr/local/portalServer/logs/localhost_access_log.2015-05-12.txt
启动 portalServer 服务,执行:
/usr/local/portalServer/bin/startup.sh
关闭 portalServer 服务,执行:
/usr/local/portalServer/bin/shutdown.sh
三、freeradius配置:
日志:
/usr/local/var/log/radius/radius.log
启动/停止/重启 radius:
/etc/init.d/rc.radiusd start/stop/restart
radius相关配置:
/usr/local/etc/raddb/radiusd.conf
[root@ossh raddb]# more clients.conf
client localhost {
ipaddr= 127.0.0.1
secret = testing123
require_message_authenticator= no
nastype = other #localhost isn't usually a NAS...
}
client 200.200.200.0/24 {
secret = 123456789
shortname = ap2000
}
client 192.168.100.0/24 {
secret = 123456789
shortname = ac6100
nastype = other
}
[root@ossh raddb]# more users
steve Cleartext-Password:= "testing"
Service-Type= Framed-User,
Framed-Protocol= PPP,
Framed-IP-Address= 172.16.3.33,
Framed-IP-Netmask= 255.255.255.0,
Framed-Routing= Broadcast-Listen,
Framed-Filter-Id= "std.ppp",
Framed-MTU= 1500,
Framed-Compression= Van-Jacobsen-TCP-IP
DEFAULT Framed-Protocol== PPP
Framed-Protocol= PPP,
Framed-Compression= Van-Jacobson-TCP-IP
DEFAULT Hint== "CSLIP"
Framed-Protocol= SLIP,
Framed-Compression= Van-Jacobson-TCP-IP
DEFAULT Hint== "SLIP"
Framed-Protocol= SLIP
[root@ossh raddb]# more proxy.conf
proxy server {
default_fallback= no
}
home_server localhost {
type= auth
ipaddr= 127.0.0.1
port= 1812
secret= testing123
require_message_authenticator= yes
response_window= 20
zombie_period= 40
revive_interval= 120
status_check= status-server
check_interval= 30
num_answers_to_alive= 3
max_outstanding= 65536
coa{
#Initial retransmit interval: 1..5
irt= 2
#Maximum Retransmit Timeout: 1..30 (0 == no maximum)
mrt= 16
#Maximum Retransmit Count: 1..20 (0 == retransmit forever)
mrc= 5
#Maximum Retransmit Duration: 5..60
mrd= 30
}
}
home_server_pool my_auth_failover {
type= fail-over
home_server= localhost
}
realm example.com {
auth_pool= my_auth_failover
}
realm LOCAL {
}
realm ossh {
auth_pool = my_auth_failover
}
四、NAC配置:
配置文件:
[root@localhost bin]# more/usr/local/etc/nac-0.2.0/config/nac.conf
# NAC工作的网络接口
NetIF = eth0
# 使用外部Portal或者内部Portal,0表示内部Portal,1表示外部Portal
UsePortal = 1
# Portal协议,当 UsePortal = 1 时有效. 1表示华为协议,2表示CMCC协议,版本只支持华为v1
PortalProtocol = 1
# Portal服务器共享密钥
PortalShareSecretKey = 123456789
# Portal服务器IP地址,当UsePortal = 1时有效
PortalAddress = 192.168.100.100
# Portal服务器的URL,当UsePortal = 1时有效
PortalURL = http://192.168.100.100:8088/
# Portal认证方式,0表示CHAP,1表示PAP。当 UsePortal = 1 时有效
PortalMthod = 0
# 使用外部Radius或者内部Radius,0表示内部Radius, 1表示外部Radius
UseRadius = 1
# Radius服务器IP地址,当 UseRadius = 1 时有效
RadiusAddress = 192.168.100.100
# Radius共享密钥
#RadiusShareSecretKey = testing123
RadiusShareSecretKey = 123456789
# Portal服务器WEB资源路径,当 UsePortal = 0 时有效
PortalResource =/usr/local/etc/nac-0.2.0/www
# Portal服务器运行配置文件路径,当 UsePortal = 0 时有效
PortalConfig =/usr/local/etc/nac-0.2.0/config/route.txt
# Portal服务器工作端口,默认端口为10000.当 UsePortal = 0 时有效
PortalPort = 10000
# 认证用户在线时长限制,单位秒,为0时无限制,默认值为1200s
SessionTime = 1200
# 认证用在线时长检测间隔,单位秒.当SessionTime等于0时,该值无效,默认值为5s
CheckInterval = 5
# 用户账号保存文件路径.当 usePortal = 0 时有效
NACUsers =/usr/local/etc/nac-0.2.0/config/users.txt
# 免认证用户IP,多个以逗号隔开
FreeUsersList = {
}
# URL白名单,多个以逗号隔开
WhiteURLList = {
}
# 外网IP白名单,多个以逗号隔开
WhiteInternetIPList = {
192.168.131.2
}
启动、关闭、重启NAC服务:
service nac restart
四、配置mysql,使freeradius支持mysql数据库。
1、数据库安装、配置
yum install -y mysql*
[root@ossh lib]# mysqladmin -u rootpassword 'mysql'
[root@ossh lib]# mysqladmin -u root -h osshpassword 'mysql'
create database radius;
创建名为radius的数据库
exit退出数据库。
再进入/usr/local/etc/raddb/sql/mysql下导入和建立表结构
mysql -u root -pmysql < admin.sql
mysql -u root -pmysql radius
mysql -u root -pmysql radius
2、修改配置文件
修改 /usr/local/etc/raddb/site_enabled/default 文件:
注释太多,将注释和空行屏蔽:
cp default default.bak && grep -v^# default.bak|grep -v ^.#|grep -v ^$>default
把authorize{} 、accounting {}中的sql前面的#去掉,并把authorize{} 中的files前加#;文件如下:
[root@ossh sites-enabled]# more default
authorize {
preprocess
chap
mschap
digest
suffix
eap{
ok= return
}
#files
sql
expiration
logintime
pap
}
authenticate {
Auth-TypePAP {
pap
}
Auth-TypeCHAP {
chap
}
Auth-TypeMS-CHAP {
mschap
}
digest
unix
eap
}
preacct {
preprocess
acct_unique
suffix
files
}
accounting {
detail
exec
attr_filter.accounting_response
sql
}
session {
radutmp
}
post-auth {
exec
Post-Auth-TypeREJECT {
#log failed authentications in SQL, too.
attr_filter.access_reject
}
}
pre-proxy {
}
post-proxy {
eap
}
主配置文件修改modules {}取消这一行的注释: $INCLUDE sql.conf,配置文件如下:
[root@ossh init.d]# more/usr/local/etc/raddb/radiusd.conf
prefix = /usr/local
exec_prefix = ${prefix}
sysconfdir = ${prefix}/etc
localstatedir = ${prefix}/var
sbindir = ${exec_prefix}/sbin
logdir = ${localstatedir}/log/radius
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct
name = radiusd
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/${name}
db_dir = ${raddbdir}
libdir = ${exec_prefix}/lib
pidfile = ${run_dir}/${name}.pid
max_request_time = 30
cleanup_delay = 5
max_requests = 1024
listen {
type= auth
ipaddr= *
port= 0
}
listen {
ipaddr= *
port= 0
type= acct
}
hostname_lookups = no
allow_core_dumps = no
regular_expressions = yes
extended_expressions = yes
log {
destination= files
file= ${logdir}/radius.log
syslog_facility= daemon
stripped_names= no
auth= no
auth_badpass= no
auth_goodpass= no
}
checkrad = ${sbindir}/checkrad
security {
max_attributes= 200
reject_delay= 1
status_server= yes
}
proxy_requests = yes
$INCLUDE proxy.conf
$INCLUDE clients.conf
thread pool {
start_servers= 5
max_servers= 32
min_spare_servers= 3
max_spare_servers= 10
max_requests_per_server= 0
}
modules {
$INCLUDE${confdir}/modules/
$INCLUDEeap.conf
$INCLUDE sql.conf
}
instantiate {
exec
expr
expiration
logintime
}
$INCLUDE policy.conf
$INCLUDE sites-enabled/
[root@ossh init.d]#
(3)在数据库中加入测试帐号
mysql> use radius;
建立组信息:(这些命令不用做任何修改,直接ctrl+c→ctrl+v就好了)
mysql> insert into radgroupreply (groupname,attribute,op,value)values ('user','Auth-Type',':=','Local');
mysql> insert into radgroupreply(groupname,attribute,op,value) values('user','Service-Type',':=','Framed-User');
mysql> insert into radgroupreply(groupname,attribute,op,value) values('user','Framed-IP-Address',':=','255.255.255.255');
mysql> insert into radgroupreply(groupname,attribute,op,value) values('user','Framed-IP-Netmask',':=','255.255.255.0');
建立用户信息:
mysql> insert into radcheck(username,attribute,op,value) values ('test','User-Password',':=','test');
insert into radcheck(username,attribute,op,value) values ('steve','User-Password',':=','testing');
将用户加入组中:
mysql> insert into radusergroup(username,groupname) values ('test','user');
insert into radusergroup (username,groupname)values ('steve','user');
mysql>exit;
退出数据库
以上命令已添加了一个user组和一个用户,用户名密码都是“test”,以及一个“steve”用户,密码是“testing”
若希望一个账号只允许一个用户登陆,需添加下行,不添加则一个账号可以多个用户同时登陆:
mysql> INSERT INTO radgroupcheck(groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1');
五、无线认证上网测试
使用有无线网卡的笔记本电脑接入到wlan,打开浏览器,随便输入一个IP地址,比如11.1.1.1 ,浏览器会弹出portal,如下图所示:
输入用户名“steve”密码:“testing”,点击登录按钮,成功登录,如下图:
注意,由于本实验环境没有连接外网,因此,测试时需要直接输入IP地址,而不能输入域名。有条件的话,可以在AC上配置连接外网的网线,并配置好DHCP子网的网关、DNS等配置,即可实现最终的认证上网功能。
调测过程可能出错的地方主要在freeradius上,在调测的时候可以先关闭freeradius(/etc/init.d/rc.radiusd stop),然后使用 :radiusd –X 命令启用调测模式,这样,可以实时看到调试的消息,方便问题定位。
六、总结
上面是在调测过程中的配置,由于篇幅有限,没有做详细说明,在各自的软件产品文档里面都能找到相应的说明。在这里做一个简单的说明:
对于首次安装配置portal、radius的人来说,不熟悉相关的概念和配置,因此开始会有些迷茫,我的建议是抓住几个要点:第一,每个软件的关键配置文件、日志、程序启动、关闭命令,将这些最基本的东西记录下来,至少这些是傻瓜型的;第二、对关键配置文件中的配置浏览一遍,对于其中有不懂的参数,查找相关资料了解,根据自己的环境做相应的调整;第三、调试过程中碰到问题反复进行修改参数、重启程序都无法解决的时候,也许是因为对某一个概念理解有误或者遗漏,建议去阅读最基础的文档将自己的知识补足,比如RADIUS协议,802.11协议的基础文档。
在本实验环境中没有配置上网环境,所以radius中的白名单之类的配置是空的。