การติดตั้ง 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
ต่อไปจะเอา Freeradius+LDAP มาลงนะครับ
ส่วนวิธีดู log ได้ไหมครับ คือผมทดลอง suse 9.0 ติดตั้ง portslave โดยให้เช็ค user freeradius+mysql รับโมเด็ม ผลก็คือ รับโมเด็มแต่เช็ค user+password ไม่ผ่าน ไม่รู้ว่าเป็นเพราะเหตุไร มีวิธีtest จาก command ไหมว่าส่ง user+password มาที่ mysql แล้วผ่าน เพื่อจะได้รู้ว่าน่าจะผิดที่ไหน ถ้าทำได้คงดี ขอบคุณล่วงหน้าครับ
2.4 ทดสอบโปรแกรมกันก่อน
#cd
/radius/bin
#radius
เปลี่ยนเป็น
2.4 ทดสอบโปรแกรมกันก่อน
#cd
/radius/bin
#radius
-xyz
แล้วเปิดทิ้งแบบนั้นแหละครับ
แล้วลองหมุนโมเด็มดูครับ ว่ามันจะแสดง error อะไรออกมาครับ
รบกวนถามคุณ ภัทร์ เอมวัฒน์ นะครับ ..เราสามารถกำหนด 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 แบบนี้ได้อ่ะครับ
รบกวนถามคุณ ภัทร์ เอมวัฒน์ นะครับ ..เราสามารถกำหนด 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 แบบนี้ได้อ่ะครับ
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 นะครับ
แล้วเขียนโปรแกรมคุมการใช้เครื่องอีกชั้นนึง
ขอโทษนะครับ ไม่ทราบว่า ทำตามเวปนี้แล้ว สามารถทำเหมือน isp ที่เขาทำแพ็กเก็ตอินเตอร์เนตขายได้ไหมครับ คืออยากได้มากเลยครับ จะทำให้หลวงนะครับ ใช้โทรศัพท์ภายใน การ์ดมัลติพอร์ต 2 การ์ด ถ้ามีข้อมูลพอที่จะช่วยได้ ขอความกรุณาช่วหน่อยนะครับ [email protected] ขอบคุณผู้ที่คิดจะช่วยทุกคนครับ
อันนี้เป็นเพียงการ ตรวจสอบผู้ใช้ เท่านั้นครับ
ถ้าจะทำ ISP ยังต้องมีส่วนอื่นประกอบด้วยครับ ส่วนนี้เป็นเพียงส่วนหนึ่งเท่านั้นนะครับ
พี่ก็จบคณิตศาสตร์ประยุกต์ เหมือนกัน รหัส 39452xx น่าจะรู้จักกันนะ วิฑูร (ก่า ก้า ป่าว)
ไม่ทราบว่าพอจะมีวิธีซึ่งจะใช้ ฐานข้อมูลของ icradius ได้ไหมครับ ของเดิมเป็นอย่างนั้นครับ ก็ติดตั้งตามเวปก็ใช้งานได้ แต่เขียน php เพื่อจัดการ user ไม่เป็นครับ มีใครเขียนก็แบ่งกันบ้างนะครับ [email protected] หรือใครรับจ้างเขียนก็ได้ครับ
ไม่เข้าความหมายของคำถามครับ
หมายถึง ตอนนี้ใช้ icradius และต้องการใช้ php จัดการ user ของ icradius ใช้หรือไม่ครับ
ถ้าใช้ลองเข้าไปที่ http://www.php.net
ตัว php เองจะมี function ที่ใช้จัดการกับ radius server อยู่ครับ ซึ่งผมเองก็ยัง คิดว่าจะศึกษาอยู่เหมือนกัน เพียงยังไม่มีเวลาเท่านั้นครับ
ลอง search ดูใน function นะครับ
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
ทำได้แล้วครับ ต้อง pate pppd ใหม่ครับ ตอนนี้ก็ใช้ mgetty รับโมเด็มได้ เช็ค user ผ่าน แต่ เมื่อต่อไปแล้วเล่นไม่ได้ครับ คือต้องรอสักพักจึงจะเเปดเวปได้ แย่นะ ไม่รู้เป็นที่ไหน สรุปหาสาเหตุไม่ได้ อีกอย่างไม่สามารถเช็คเวลาได้ตรงคือ เพิ่มเวลา 1 ชั่วโมง นี้ต่อตั้ง 3 ชม.ยังไม่หลุดเลย
คือว่าผมทำโปรเจค Ecommerse อะคับ แล้วที่นี้ผมเอาของเก่ามาแก้ แต่ ผม เข้า admin ระบบไม่ได้ อยากรู้ว่าจะ ดู username กับ password ได้ที่ไหนคับ ช่วยหน่อยนะคับ ผมเพิ่งจะเริ่ม ทำ ไม่มีความรู้อะคับ