coovachilli無線認證

一、coovachilli介紹
    Coova Chilli是一個Web Portal認證(Captive Portal、UMA)和網關解決方案。可以作爲嵌入程序到路由器中,或者作爲獨立服務軟件運行。它需要兩個網絡端口,內網(默認eth1)和外網(默認 eth0),使用NAT方式做路由,內網端口不需要專門配置,在服務啓動時系統會建立一個臨時網絡端口tun0,它可以爲內網客戶端分配IP並作爲NAT 網關。內網客戶端需要訪問外網資源時,如果沒有認證,系統會導向到認證頁面,通過認證後正常訪問外部資源。
    Coova Chilli的認證頁面可以是獨立可定義的,通過json作爲數據鏈路,提供了很高的靈活性。Coova Chilli可以使用標準Radius作爲認證系統,也可以用約定格式的http webservice作爲認證系統。
注:
     1、chillispot原維護作者停止更新,被chillispot.info接管繼續開發;
     2、coova-chilli 是基於chillispot開發拓展的,功能最爲強大;可以去官方看一下Coova-chilli。
    Haserl,一個小型WEB服務器,和coova-chilli配合,負責WEB頁面的顯示,coova-Chilli,接受請求,執行dhcp分配,並調用Haserl並推送PORTAL,調用Radius執行認證,Radius結合Mysql提供認證服務。
二、軟件配置
yum -y install gcc*
yum -y install openssl*
yum -y install freeradius2* (freeradius的配置這裏不做介紹,詳見論壇其他帖子)
yum -y install mysql*  (這裏我就偷懶下,全部裝上)
tar -zxvf haserl-0.9.29.tar.gz
cd haserl-0.9.29.tar.gz
./configure
make
make install
tar -zxvf coova-chilli-1.2.9.tar.gz
cd coova-chilli-1.2.9.tar.gz
./configure --enable-miniportal --with-openssl (這裏不要忘了加參數,否則web頁面推送的時候會出問題)
make
make install
安裝完成後,配置文件在: /usr/local/etc/chilli.conf(引用文件,一般不需要修改)
/usr/local/etc/chilli:
functionsdefaults 默認參數
www 認證網站
wwwsh cgi網關腳本
up.sh 網絡接口啓動腳本
down.sh 網絡接口關閉腳本
hs.conf 認證服務配置文件
local.conf 其他的自定義配置(才裝的一般是空的)
main.conf 主配置文件 (3個conf文件好像安裝好後是沒有的,第一次啓動服務後自動生成)
頁面定製,所有頁面都在/etc/chilli/www目錄下,重要的幾個界面文件包括:
ogin_form.tmpl (登錄表單)
login.tmpl(登錄提示)
css.tmpl(樣式表)
hearder.thml(頁頭)
footer.teml(頁腳)
login_success.teml(登錄成功頁面)
login_footer.teml(登錄框下信息)
config-local.sh(各種生成頁面元素的腳本)
(可以直接編輯書寫自己想要的內容,包括中文化)
認證服務器
系統可以使用標準radius服務器作爲驗證源,只需要在hs.conf 配置相關參數即可。需要注意的是Coova Chilli默認使用CHAP認證方式,如果你的radius服務器配置不方便,需要使用pap時,可以編輯 www/config-local.sh 文件,修改hs_rad_proto的值爲pap,就可以了:
#hs_rad_proto=$(getconfig rad_proto)
hs_rad_proto=pap
(我裝好後就沒改過,你可以根據自己的情況更改)
三、配置chilli
cd  /usr/local/etc/chilli
cp  defaults  config (看下chilli.conf就明白爲啥這樣做了)
vi  config
HS_WANIF=eth0                         [外網網卡]
HS_LANIF=eth1                          [內網網卡]
HS_NETWORK=10.1.0.0              [內網網段]
HS_NETMASK=255.255.255.0      [內網netmask]
HS_UAMLISTEN=10.1.0.1            [內網卡IP]
HS_UAMPORT=3990
HS_UAMUIPORT=4990
HS_DNS1=8.8.8.8                       [指派內網使用DNS]
HS_DNS2=8.8.4.4
HS_NASID=nas01
HS_RADIUS=localhost                 [radius服務器,我的是本地的]
HS_RADIUS2=localhost
HS_UAMALLOW=www.coova.org [可以修改的,我沒改他]
HS_RADSECRET=testing123
HS_UAMSECRET=change-me
HS_UAMALIASNAME=chilli
HS_UAMSERVER=$HS_UAMLISTEN
HS_UAMFORMAT=http://\$HS_UAMLISTEN:\$HS_UAMUIPORT/www/login.chi
HS_UAMHOMEPAGE=http://\$HS_UAMLISTEN:\$HS_UAMPORT/www/coova.html
HS_MODE=hotspot
HS_TYPE=chillispo
HS_WWWDIR=/usr/local/etc/chilli/www
HS_WWWBIN=/usr/local/etc/chilli/wwwsh
HS_PROVIDER=Coova
HS_PROVIDER_LINK=http://www.coova.org/ [可以修改]
HS_LOC_NAME="My HotSpot"(有些是不需要修改的,當然你也可以修改它)
設定開機啓動
ln  -s  /usr/local/etc/init.d/chilli  /etc/init.d/chilli
Coova-Chilli程式執行PID存放目錄
mkdir  -p  /usr/local/var/run
四、網絡
vi  /etc/sysconfig/network-scripts/ifcfg-eth0  [外網]
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.80.123
NETMASK=255.255.255.0
GATEWAY=192.168.80.254
DNS1=8.8.8.8
HWADDR=08:00:27:3E:99:B5
vi  /etc/sysconfig/network-scripts/ifcfg-eth1  [內網]
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
HWADDR=08:00:27:47:e7:98 (它是做tun0用的,配置是沒用的,所以是static;但是這個網卡一定要有)
開啓ip轉發
#vi /etc/sysctl.conf
/proc/sys/net/ipv4/ip_forward=1 (他是將eth1上的所有包轉發到eth0,一定要開啓否則無線無法上網)
#sysctl -p
配置防火牆
vi iptables.sh
iptables -t nat -A PREROUTING -s 10.1.0.0/24 -d 192.168.80.123 -j ACCEPT
iptables -t nat -A PREROUTING -s 192.168.80.123 -d  10.1.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -d 192.168.80.123 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.80.123 -d  10.1.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -o eth0 -j SNAT --to-source  192.168.80.123
./iptables.sh
service iptables save
插入一個測試用戶:
mysql -uroot -p123456
use radius;
insert into radcheck (username,attribute,value,op) values (‘test’,'User-Password’,'123456′,’:=’);
使用處於內網的任何一臺電腦上網, 這時候就會被導向一個輸入帳號的網頁. 只需要輸入剛剛建立的test 帳號就可.
五、問題處理:
1、啓動時報錯:Starting chilli: /etc/init.d/chilli: line 77: which: command not found
修改/etc/init.d/chilli第77行
$(which start-stop-daemon)

$(which  start-stop-daemon  2>/dev/null)
下面還有一行同樣也要替換
2、crond服務要裝上,否則在關閉服務的時候會報錯;
3、網頁顯示"You need to install haserl to serve pages with this wwwsh script!"
原因是Chilli 無法從系統正確辨識haserl 已經安裝, 需要修改程式
vi /usr/local/etc/chilli/wwwsh
尋找$(which haserl 2>/dev/null)
替換成$(/usr/local/bin/haserl 2>/dev/null)
尋找所有的$haserl $file
替換成/usr/local/bin/haserl $file

 

原帖來源:http://www.inagios.org/forum.php?mod=viewthread&tid=645,感謝作者的辛勤工作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章