December 29, 2004
Radius Server的建置
原本是很簡單的工作
把Linux Server架好(NAT, DHCP)
還有AP給設定好就可以的
但是因為該死的AP虎爛他們的功能(802.1X的部分)
害我浪費好多時間
不過有玩了HostAP倒是滿有趣的~
首先這是我的實驗環境
在Debian和RedHat間用OpenVPN把彼此的private network
192.168.124.0/24 & 192.168.125.0/24給連接起來
然後我在Debian那台接了兩張網卡,一張是對外的,一張對內做NAT&DHCP,並且接上AP。AP設定static ip : 192.168.124.2。
確定OpenVPN可以通了以後,就開始架設Radius Server,我是使用freeradius-1.0.1,需要設定的檔案有以下幾個:
[clients.conf]
以Debian那台來說,他的client就是AP,所以必須加入以下的entry
client 192.168.124.2{
secret = key1
shortname = ap
nastype = other
}
以RedHat來說,他的client就是Debian,所以加入
client 192.168.124.1 {
secret = key2
shortname = server
nastype = other
}
[users]
因為我的Radius是做一個最簡單的測試,所以我在users中直接加入了測試的帳號,
當然可以使用unix的系統帳號。
Debian中加入了
"sky" Auth-Type := EAP, User-Password == "sky"
Session-Tieout = 180,
Idle-Timeout = 120
RedHat中加入了
"horn" Auth-Type := EAP, User-Password == "horn"
Session-Tieout = 180,
Idle-Timeout = 120
[proxy.conf]
這是設定我的認證是要在local或是需要redirect到其他的server去認證。
Debian的設定加入
realm 140.112.21.103 {
type = radius
authhost = 192.168.125.1:1812
acchost = 192.168.125.1:1813
secret = key2
nostrip
}
代表user@140.112.21.103必須透過vpn tunnel到192.168.125.1,也就是Redhat去
做認證,特別注意的是加入nostrip的選項,告訴Debian上的freeradius不要把user@140.112.21.103中 的"@140.112.21.103"給去掉,要把"user@140.112.21.103"整個當作username傳給RedHat那台。
RedHat的設定加入
realm 140.112.21.103 {
type = radius
authhost = LOCAL
accthost = LOCAL
}
代表user@140.112.21.103的認證是要在LOCAL端來做。
接下來就來說說我的實驗心得。
client用的軟體有
1. Windows : Odyssey Client Enterprise Edition, version 3.03 Link
2. Linux : xsupplicant Link
[Exp. 1]
一開始我用的AP是D-Link DWL-2000AP
結果相當另人失望啊
我用windows client一直沒有任何訊息
使用xsupplicant結果看到log上告訴我他收到invalid eap message
所以我想這台D-LINK的AP產生的radius相關message和標準不同吧
就放棄這台了
[Exp.2]
第二個實驗我是用ASUS WL-300g
他有兩個mode可以選
我第一次是使用home gateway mode
也就是wired & wireless是分開來的
(相對於另一種把wired & wireless做bridge的mode)
在這個mode下我們要啟動dhcp server
AP再自已做nat之類的從wired端出去
但是在這個mode下我啟動802.1x設定radius server時
發現我的client送出request到AP的wireless端之後
就沒有任何request message從AP的wired端傳到radius server去
這台AP就這樣吃掉了我的request message
所以也失敗!
[Exp.3]
再來還是這台ASUS WL-300g
選用另一個operation mode : 把wired & wireless做bridge的mode(名稱我忘了)
一開始用ethereal來看
情況非常好
所有的802.1x認證message都有正確的往來
在server上也有log紀錄下認證成功的資訊
但是在這個mode下AP不能設定跑dhcp server
所以我必須在radius server上也跑個dhcp server(這是因為我把這幾個service都跑在同一台上)
但糟糕的是
通過認證後的dhcp request broadcast message
這台AP又硬是把他給吃了><>
[Exp.4]
最後也是最麻煩的一個實驗
我自己架個AP總行了吧?
我就用我的Gentoo Laptop跑HostAP這個package
並在他上面採用802.1x的認證
總算是可以完全work了..感動啊~
這個HostAP其實很簡單用
唯一困難的是你要找張使用prism chipset的wireless card
我也是好不容易才在光華找到一張神腦的卡
然後重編kernel把以下的選項打開
(開bridge是我想把wired & wireless給做一個bridge,因此是optional的)
Networking Options -> 802.1d Ethernet Bridging
Network device support -> Wireless LAN (non-hamradio)
裝好hostapd & hostap-drivers
跑hostapd這支daemon就可以在client上看到這個新的ap了
再來把hostap裡的802.1x的選項打開,設好radius server
用bridge-utils裡的brctl設定好bridge function
另外記得用sysctl把forwarding的功能打開:
echo "1" > /proc/sys/net/ipv4/ip_forward
或是
修改/etc/sysctl.conf加入net.ipv4.ip_forward = 1
就大功告成了^^
我把我的設定檔案放在這裡供參考
Download bridge和Download hostapd.conf
To Be Continued...
Posted by skychaser at December 29, 2004 09:12 AM原文網址