การติดตั้ง Free Radius ให้เชื่อมต่อ กับ MySQL
เวบไซต์ที่เกี่ยวข้อง
http://rd.cc.psu.ac.th
http://opensource.psu.ac.th
http://freeradius.org
http://www.mysql.com
ผมทำโดยใช้ Linux Fedora Core 2 เป็นหลักนะครับ ส่วน ค่ายอื่นๆ
ก็ใช้ได้เหมือนกันครับ
การติดตั้ง จะใช้วิธี Compile Source นะครับ
1. ติดตั้ง MySQL ก่อนครับ (ผมใช้ Version 4.0.16 )
http://gotoknow.org/archive/2005/10/21/14/06/04/e5690
2. ติดตั้ง Free Radius (ผมใช้ Version 1.0.5)
2.1 ขยายแฟ้มที่ DL มาก่อน
tar
-zxvf freeradius-1.0.2.tar.gz
cd freeradius-1.0.2
2.2 set config ของ โปรแกรมก่อน
find
./ -name config.h | xargs rm -fv
#./configure --prefix=/radius --sysconfdir=/radius/etc
--with-mysql-include-dir=/vc/include/ --with-mysql-lib-dir=/vc/lib/mysql/
อธิบาย
--prefix
เป็นตั้งค่าให้ Install โปรแกรมไว้ที่ไหน (/vc)
--sysconfdir
เป็นตั้งค่าให้แฟ้ม คอนฟิก (my.cnf) อยูที่ไหน โปรแกรมไว้ที่ไหน
(/vc/etc)
--with-mysql-include-dir
สำหรับผู้ติดตั้งแบบคอมไพล์ code นะครับ ถ้าติดตั้งแบบ RPM
ก็ไม่ต้องมี
--with-mysql-lib-dir
สำหรับผู้ที่ติดตั้งแบบคอมไพล์ code นะครับ ถ้าติดตั้งแบบ RPM
ก็ไม่ต้องมี
2.3 Compilied และ Install
#make
#make
install
#cp
src/main/radiusd /radius/bin/
2.4 ทดสอบโปรแกรมกันก่อน
#cd
/radius/bin
#radius
Fri Oct 21 14:46:38 2005 : Info: Starting - reading
configuration files ...
#radtest
root password-root localhost 0 testing123
ถ้าขึ้น
Sending Access-Request of id 17 to
127.0.0.1:1812
User-Name = "root"
User-Password = "password-root"
NAS-IP-Address = localhost
NAS-Port = 0
Re-sending Access-Request of id 17 to
127.0.0.1:1812
User-Name = "root"
User-Password =
"307366]27123532333521627713313313013360202"
NAS-IP-Address = localhost
NAS-Port = 0
rad_recv: Access-Reject packet from host
127.0.0.1:1812, id=17, length=20
แปลว่าโปรแกรมสมบูรณ์แล้ว แต่ที่ Reject เนื่องจากตอนพึงลงเสร็จ
โปรแกรมเลยใช้ PAM ในการตรวจสอบ ซึ่ง จะติด สิทธิในการเข้าถึงแฟ้ม
/etc/password /etc/shadow
ถ้าต้องการใช้ PAM ก็ต้องแก้ไขคอนฟิกโปรแกรมก่อน โดยไปที่
#cd
/radius/bin/raddb
#vi
radiusd.conf
ทำการ
comment ยกเลิกบรรทัดข้อความจากเดิม
user =
radiusd
group =
radiusd
ให้เป็น
#user =
radiusd
#group =
radiusd
แล้วลองใหม่
#radtest
root password-root localhost 0 testing123
Sending Access-Request of id 171 to
127.0.0.1:1812
User-Name = "root"
User-Password = "password-root"
NAS-IP-Address = localhost
NAS-Port = 0
rad_recv: Access-Accept packet from host
127.0.0.1:1812, id=171, length=20
2.5 สร้างฐานข้อมูล
สร้างฐานข้อมูลและสร้าง user สำหรับใช้ ฐานข้อมูล
User ที่ใช้ ฐานขอมูอคือ root radius คือ radius
#mysql
radius -uroot -p123456
mysql>
create database radius;
mysql>
grant all privileges on radius.* to 'radius'@'localhost'
identified by 'radius' ;
mysql> quit;
ตัวฐานข้อมูลจะมีอยู่แล้วงชื่อ db_mysql.sql
ลองค้นดู
# find ./ -name
db_mysql.sql
./src/modules/rlm_sql/drivers/rlm_sql_mysql/db_mysql.sql
#cd
./src/modules/rlm_sql/drivers/rlm_sql_mysql
#mysql radius
-uradius -pradius
mysql> .
db_mysql.sql
mysql>quit
2.6 แก้ไขคอนฟิก
#cd
/radius/bin/raddb
แก้ไข file
radiusd.conf (vi /radius/etc/raddb/radiusd.conf)
หา authorize
(/^authorize)
คอมเมนต์ให้หมด
เพื่อข้ามการตรวจสอบอื่นๆยกเว้น sql (ก็แน่ละ ชื่อก็บอกอยู่แล้วว่า
การติดตั้ง Free Radius ให้เชื่อมต่อ กับ MySQL)
authorize {
...
sql
...
}
หา
accounting (/^accounting)
ให้คอมเมนต์ให้หมด
ถ้าเราไม่ต้องการกำจัดเวลาในการใช้
accounting {
...
}
ถ้าต้องการกำจัดเวลาในการใช้ ก็ คอมเมนต์ให้หมด
เพื่อข้ามการตรวจสอบอื่นๆยกเว้น sql
accounting {
...
sql
...
}
แก้ไข file
clients.conf (vi /radius/etc/raddb/clients.conf )
เพิ่ม
client
192.168.159.0/24 { // class ของ ip ที่อนุญาติให้ใช้
secret =
ldap
shortname =
private-network-1
}
แก้แฟ้ท realms (vi
/usr/local/radius/etc/raddb/realms )
เพิ่ม DEFAULT LOCAL
แก้ไข file
sql.conf (vi /radius/etc/raddb/sql.conf)
แก้ user password
databasename
แก้ ql_user_name =
"%{Stripped-User-Name:-%{User-Name:-DEFAULT}}"
2.6 การเพิ่ม User
INSERT
INTO `radcheck` ( `id` , `UserName` , `Attribute` , `op` , `Value`
) VALUES ( '', 'epatt', 'password', '==', '12345' );
ปกติ ถ้าตรง accounting{} ใน radius.conf เราตั้งเอาไว้
ก็จะตั้งค่าเริ่มต้นเป็น 4 ชม. เราสามารถแก้เป็น 7 วันได้ดังนี้
หน่วนเป็นวินาที 7 วัน = 60*60*24*7 = 604800 วินาที
แต่ถ้าเราคอมเมนต์ไว้ ตรงนี้ก็ไม่ต้องใส่ก็ได้
INSERT INTO `radreply` ( `id` , `UserName` , `Attribute` , `op` ,
`Value` ) VALUES ( '', 'epatt', 'Session-Timeout', ':=',
'604800' );
2.7 วิธีทดสอบก็เหมือนกับ ข้อ 2.4 ครับ เพียงแต่
เปลี่ยนไปใช้ user และ passowrd ที่เราพึ่งใส่เข้าไปครับ
#radtest
epatt 12345 localhost 0 testing123


เมนูของ sailomsaengdaed





เมื่อ พ. 26 ต.ค. 2548 @ 15:28
4048 [ลบ]
ต่อไปจะเอา Freeradius+LDAP มาลงนะครับ
เมื่อ ศ. 09 ธ.ค. 2548 @ 09:16
6548 [ลบ]
ส่วนวิธีดู log ได้ไหมครับ คือผมทดลอง suse 9.0 ติดตั้ง portslave โดยให้เช็ค user freeradius+mysql รับโมเด็ม ผลก็คือ รับโมเด็มแต่เช็ค user+password ไม่ผ่าน ไม่รู้ว่าเป็นเพราะเหตุไร มีวิธีtest จาก command ไหมว่าส่ง user+password มาที่ mysql แล้วผ่าน เพื่อจะได้รู้ว่าน่าจะผิดที่ไหน ถ้าทำได้คงดี ขอบคุณล่วงหน้าครับ
เมื่อ จ. 12 ธ.ค. 2548 @ 17:54
6797 [ลบ]
2.4 ทดสอบโปรแกรมกันก่อน
#cd /radius/bin
#radius
เปลี่ยนเป็น
2.4 ทดสอบโปรแกรมกันก่อน
#cd /radius/bin
#radius -xyz
แล้วเปิดทิ้งแบบนั้นแหละครับ
แล้วลองหมุนโมเด็มดูครับ ว่ามันจะแสดง error อะไรออกมาครับ
เมื่อ ศ. 16 ธ.ค. 2548 @ 17:15
7123 [ลบ]
เมื่อ อา. 18 ธ.ค. 2548 @ 14:19
7197 [ลบ]
เมื่อ พฤ. 09 ก.พ. 2549 @ 13:55
11784 [ลบ]
รบกวนถามคุณ ภัทร์ เอมวัฒน์ นะครับ ..เราสามารถกำหนด group policy แบบ MS AD ได้ป่ะครับ เช่น user ใน group A สามารถ Access ได้ 08.00 -16.00 และมี Limit time = 20 ชั่วโมง ......แต่ให้ user ใน group B สามารถ Access ได้ 24 ชั่วโมง และมี Unlimit time ...ผมไม่ทราบว่าจะใช้ module user counter ยังไง...ที่จะสามราถจัดการแบบนี้ได้ ....ไม่ทราบว่ามีวิธีอื่นป่ะครับ..ที่จะทำ solution แบบนี้ได้อ่ะครับ
เมื่อ พฤ. 09 ก.พ. 2549 @ 13:57
11785 [ลบ]
รบกวนถามคุณ ภัทร์ เอมวัฒน์ นะครับ ..เราสามารถกำหนด group policy แบบ MS AD ได้ป่ะครับ เช่น user ใน group A สามารถ Access ได้ 08.00 -16.00 และมี Limit time = 20 ชั่วโมง ......แต่ให้ user ใน group B สามารถ Access ได้ 24 ชั่วโมง และมี Unlimit time ...ผมไม่ทราบว่าจะใช้ module user counter ยังไง...ที่จะสามราถจัดการแบบนี้ได้ ....ไม่ทราบว่ามีวิธีอื่นป่ะครับ..ที่จะทำ solution แบบนี้ได้อ่ะครับ
เมื่อ พฤ. 09 ก.พ. 2549 @ 19:59
11813 [ลบ]
http://wiki.freeradius.org/index.php/FreeRADIUS_Wiki:FAQ#How_do_I_use_Login-Time_for_groups.2C_not_for_users.3F
Limit logons between 08:00am and 08:00pm for Unix group "daysonly"
DEFAULT Group == "daysonly", Login-Time := "0800-2000" or DEFAULT Group == "daysonly", Login-Time := "Any0800-2000"
Limit logons between 08:00am and 08:00pm, from Monday to Friday for Unix group "weekdays"
DEFAULT Group == "weekdays", Login-Time := "Wk0800-2000"
Limit logons between 08:00am and 08:00pm, in Saturday and Sunday for Unix group "weekends"
DEFAULT Group == "weekends", Login-Time := "Sa-Su0800-2000"
แปลเองนะครับ
แบบว่าของผมไม่ได้ใช้ Option นี้ครับ
ของผมใช้ Freeradius+Ldap นะครับ
แล้วเขียนโปรแกรมคุมการใช้เครื่องอีกชั้นนึง
เมื่อ ศ. 17 มี.ค. 2549 @ 09:43
16165 [ลบ]
ขอโทษนะครับ ไม่ทราบว่า ทำตามเวปนี้แล้ว สามารถทำเหมือน isp ที่เขาทำแพ็กเก็ตอินเตอร์เนตขายได้ไหมครับ คืออยากได้มากเลยครับ จะทำให้หลวงนะครับ ใช้โทรศัพท์ภายใน การ์ดมัลติพอร์ต 2 การ์ด ถ้ามีข้อมูลพอที่จะช่วยได้ ขอความกรุณาช่วหน่อยนะครับ watchara_sin@yahoo.com ขอบคุณผู้ที่คิดจะช่วยทุกคนครับ
เมื่อ ศ. 17 มี.ค. 2549 @ 15:43
16339 [ลบ]
อันนี้เป็นเพียงการ ตรวจสอบผู้ใช้ เท่านั้นครับ
ถ้าจะทำ ISP ยังต้องมีส่วนอื่นประกอบด้วยครับ ส่วนนี้เป็นเพียงส่วนหนึ่งเท่านั้นนะครับ
เมื่อ จ. 15 พฤษภาคม 2549 @ 22:25
30892 [ลบ]
พี่ก็จบคณิตศาสตร์ประยุกต์ เหมือนกัน รหัส 39452xx น่าจะรู้จักกันนะ วิฑูร (ก่า ก้า ป่าว)
เมื่อ ส. 17 ก.พ. 2550 @ 14:04
166696 [ลบ]
ไม่ทราบว่าพอจะมีวิธีซึ่งจะใช้ ฐานข้อมูลของ icradius ได้ไหมครับ ของเดิมเป็นอย่างนั้นครับ ก็ติดตั้งตามเวปก็ใช้งานได้ แต่เขียน php เพื่อจัดการ user ไม่เป็นครับ มีใครเขียนก็แบ่งกันบ้างนะครับ watchara_sin@yahoo.com หรือใครรับจ้างเขียนก็ได้ครับ
เมื่อ ส. 17 ก.พ. 2550 @ 18:51
166859 [ลบ]
ไม่เข้าความหมายของคำถามครับ
หมายถึง ตอนนี้ใช้ icradius และต้องการใช้ php จัดการ user ของ icradius ใช้หรือไม่ครับ
ถ้าใช้ลองเข้าไปที่ http://www.php.net
ตัว php เองจะมี function ที่ใช้จัดการกับ radius server อยู่ครับ ซึ่งผมเองก็ยัง คิดว่าจะศึกษาอยู่เหมือนกัน เพียงยังไม่มีเวลาเท่านั้นครับ
ลอง search ดูใน function นะครับ
เมื่อ จ. 19 ก.พ. 2550 @ 08:34
168092 [ลบ]
เมื่อ จ. 19 ก.พ. 2550 @ 10:33
168200 [ลบ]
1.mgetty ใช้ติดต่อกับ freeradius ได้หรือไม่ <= ไม่เคยใช้ครับผม
2.พี่ทำการ add user ใน mysql ตรงช่วงท้ายของเวปแสดงว่าพี่รู้ว่า table ไหนทำอะไร พอจะบอกตรงนี้ได้ไหม เผื่อจะหัดเขียนเองดู ถ้าหาจากเนตไม่ได้ แต่คงเกินความสามารถผม แต่ก็ยังดีที่รู้ เผื่อฟุ๊คเขียนได้
แนะนำให้เข้า http://wiki.freeradius.org/Special:Search?search=mysql&go=Go
ในนี้จะมีคำอธิบายพร้อมตัวอย่าง
3.มีโปรแกรมอื่นที่พี่พอจะแนะนำได้ไหมครับ ที่จะรับโมเด็มโดยใช้ user radius ได้ครับ ปล. ผมจบแค่ม.6 ไม่เคยเรียนมาอาศัยทำงานและหัดทำ จนพอเป็น (ที่ทำงานของหลวง ยังไม่มีเงินเรียนสักที ) ถ้าจะช่วย
ลองถามในนี้ดูครับ http://rd.cc.psu.ac.th
เมื่อ จ. 19 ก.พ. 2550 @ 10:35
168201 [ลบ]
เมื่อ จ. 19 ก.พ. 2550 @ 14:24
168388 [ลบ]
เมื่อ จ. 19 ก.พ. 2550 @ 14:39
168411 [ลบ]
เมื่อ จ. 19 ก.พ. 2550 @ 15:35
168477 [ลบ]
ลองดูที่ web นี้ดูครับ
http://mamboeasy.psu.ac.th/~wiboon.w/content/view/47/40/
เมื่อ อา. 25 ก.พ. 2550 @ 10:56
174638 [ลบ]
ทำได้แล้วครับ ต้อง pate pppd ใหม่ครับ ตอนนี้ก็ใช้ mgetty รับโมเด็มได้ เช็ค user ผ่าน แต่ เมื่อต่อไปแล้วเล่นไม่ได้ครับ คือต้องรอสักพักจึงจะเเปดเวปได้ แย่นะ ไม่รู้เป็นที่ไหน สรุปหาสาเหตุไม่ได้ อีกอย่างไม่สามารถเช็คเวลาได้ตรงคือ เพิ่มเวลา 1 ชั่วโมง นี้ต่อตั้ง 3 ชม.ยังไม่หลุดเลย
เมื่อ พฤ. 20 ธ.ค. 2550 @ 14:15
496164 [ลบ]