ossh(portal、freeradius) + nac(freeAC) + AC(漢明6100)聯調
相關資源:
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訪問地址:
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地址:
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。如下圖:
安全配置裡的
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
[[email protected] 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
}
[[email protected] 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
[[email protected] 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配置:
配置檔案:
[[email protected] 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*
[[email protected] lib]# mysqladmin -u rootpassword 'mysql'
[[email protected] 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 </usr/local/etc/raddb/sql/mysql/schema.sql
mysql -u root -pmysql radius </usr/local/etc/raddb/sql/mysql/nas.sql
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前加#;檔案如下:
[[email protected] 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,配置檔案如下:
[[email protected] 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/
[[email protected] 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中的白名單之類的配置是空的。
轉載於:https://blog.51cto.com/yuweibing/1654885