การติดตั้ง Free Radius ให้เชื่อมต่อ กับ MySQL

  Free Radius MySQL  

การติดตั้ง 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

บันทึกนี้เขียนที่ GotoKnow โดย  ใน คนรัก linux

คำสำคัญ (Tags)#opensource#mysql#freeradius

หมายเลขบันทึก: 5905, เขียน: 26 Oct 2005 @ 14:58, แก้ไข, 23 Jun 2012 @ 13:47, สัญญาอนุญาต: สงวนสิทธิ์ทุกประการ, ความเห็น: 22, อ่าน: คลิก
บันทึกล่าสุด


ความเห็น (22)

ภัทธ์
IP: xxx.12.74.7
เขียนเมื่อ 26 Oct 2005 @ 15:28

ต่อไปจะเอา Freeradius+LDAP มาลงนะครับ

ton
IP: xxx.19.220.5
เขียนเมื่อ 09 Dec 2005 @ 09:16

ส่วนวิธีดู log ได้ไหมครับ คือผมทดลอง suse 9.0 ติดตั้ง portslave โดยให้เช็ค user freeradius+mysql รับโมเด็ม ผลก็คือ รับโมเด็มแต่เช็ค user+password ไม่ผ่าน ไม่รู้ว่าเป็นเพราะเหตุไร มีวิธีtest จาก command ไหมว่าส่ง user+password มาที่ mysql แล้วผ่าน เพื่อจะได้รู้ว่าน่าจะผิดที่ไหน ถ้าทำได้คงดี ขอบคุณล่วงหน้าครับ  

สายลมแสงแดด
IP: xxx.12.74.6
เขียนเมื่อ 12 Dec 2005 @ 17:54

   2.4 ทดสอบโปรแกรมกันก่อน
          #cd /radius/bin
          #radius

เปลี่ยนเป็น

   2.4 ทดสอบโปรแกรมกันก่อน
          #cd /radius/bin
          #radius -xyz

แล้วเปิดทิ้งแบบนั้นแหละครับ

แล้วลองหมุนโมเด็มดูครับ ว่ามันจะแสดง error อะไรออกมาครับ

ton
IP: xxx.144.205.58
เขียนเมื่อ 16 Dec 2005 @ 17:15
error 691 ครับ ดูที่ message log บอกว่า portslave error แต่จำไม่ได้หมด พยายามจะหาว่า portslave ติดต่อกับ radius ได้จริงไหม ไม่ทราบพอที่จะช่วยได้ไหมครับ ถ้าได้จะเป็นพระคุณอย่างยิ่งครับ
สายลมแสงแดด
IP: xxx.12.74.6
เขียนเมื่อ 18 Dec 2005 @ 14:19
copy log มาให้หมดได้ไหมครับ
ศักรินทร์ จันทร์แดง
IP: xxx.47.247.157
เขียนเมื่อ 09 Feb 2006 @ 13:55

รบกวนถามคุณ ภัทร์  เอมวัฒน์ นะครับ ..เราสามารถกำหนด 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 แบบนี้ได้อ่ะครับ

ศักรินทร์ จันทร์แดง
IP: xxx.47.247.157
เขียนเมื่อ 09 Feb 2006 @ 13:57

รบกวนถามคุณ ภัทร์  เอมวัฒน์ นะครับ ..เราสามารถกำหนด 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 แบบนี้ได้อ่ะครับ

สายลมแสงแดด
IP: xxx.12.74.7
เขียนเมื่อ 09 Feb 2006 @ 19:59

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 นะครับ
แล้วเขียนโปรแกรมคุมการใช้เครื่องอีกชั้นนึง
  

ton
IP: xxx.147.0.48
เขียนเมื่อ 17 Mar 2006 @ 09:43

ขอโทษนะครับ ไม่ทราบว่า ทำตามเวปนี้แล้ว สามารถทำเหมือน isp ที่เขาทำแพ็กเก็ตอินเตอร์เนตขายได้ไหมครับ คืออยากได้มากเลยครับ จะทำให้หลวงนะครับ ใช้โทรศัพท์ภายใน การ์ดมัลติพอร์ต 2 การ์ด ถ้ามีข้อมูลพอที่จะช่วยได้ ขอความกรุณาช่วหน่อยนะครับ [email protected] [email protected]ุกคนครับ

สายลมแสงแดด
IP: xxx.12.74.7
เขียนเมื่อ 17 Mar 2006 @ 15:43

อันนี้เป็นเพียงการ ตรวจสอบผู้ใช้ เท่านั้นครับ

ถ้าจะทำ ISP ยังต้องมีส่วนอื่นประกอบด้วยครับ ส่วนนี้เป็นเพียงส่วนหนึ่งเท่านั้นนะครับ

 

ใหม่
IP: xxx.47.247.116
เขียนเมื่อ 15 May 2006 @ 22:25

พี่ก็จบคณิตศาสตร์ประยุกต์ เหมือนกัน รหัส 39452xx น่าจะรู้จักกันนะ วิฑูร (ก่า ก้า ป่าว)

ton
IP: xxx.7.183.13
เขียนเมื่อ 17 Feb 2007 @ 14:04

ไม่ทราบว่าพอจะมีวิธีซึ่งจะใช้ ฐานข้อมูลของ icradius ได้ไหมครับ ของเดิมเป็นอย่างนั้นครับ ก็ติดตั้งตามเวปก็ใช้งานได้ แต่เขียน php เพื่อจัดการ user ไม่เป็นครับ มีใครเขียนก็แบ่งกันบ้างนะครับ [email protected] [email protected]ด้ครับ

สายลมแสงแดด
เขียนเมื่อ 17 Feb 2007 @ 18:51

ไม่เข้าความหมายของคำถามครับ

หมายถึง ตอนนี้ใช้ icradius  และต้องการใช้ php จัดการ user ของ icradius ใช้หรือไม่ครับ

ถ้าใช้ลองเข้าไปที่ http://www.php.net 

ตัว php เองจะมี function ที่ใช้จัดการกับ radius server อยู่ครับ ซึ่งผมเองก็ยัง คิดว่าจะศึกษาอยู่เหมือนกัน เพียงยังไม่มีเวลาเท่านั้นครับ

 

ลอง search ดูใน function นะครับ 

ton
IP: xxx.7.183.80
เขียนเมื่อ 19 Feb 2007 @ 08:34
แต่ก่อนใช้ icradius ครับ โดยทำตามเวปนี้ linux.sra.cat.or.th ก็มี php จัดการโดย add user เช็คเวลา ที่เขาแนะนำมันรันอยู่ใน slack 7.0 มันก็ใช้มาสามปีแล้วครับ ไม่มีปัญหา แต่ จำเป็นต้องเพิ่มการ์ด multiport ซึ่งผมลองคอมไพล์ kernel มันก็เห็นการ์ดแค่อันเดียว ถ้าเพิ่มก็ต้องเพิ่มเครื่องด้วย ทำให้เสียเครื่องไปอีกเครื่อง ผมจึงหันมาจับ fedora core3 ลองดูครับเผื่อมันจะรู้ ตอนนี้ ก็เหลือแต่ หาโปรแกรมที่มารับโมเด็มแล้วใช้กับ freeradius ได้และก็หา script php จัดการกับ user ขอคำแนะนำหน่อยครับ 1.mgetty ใช้ติดต่อกับ freeradius ได้หรือไม่ 2.พี่ทำการ add user ใน mysql ตรงช่วงท้ายของเวปแสดงว่าพี่รู้ว่า table ไหนทำอะไร พอจะบอกตรงนี้ได้ไหม เผื่อจะหัดเขียนเองดู ถ้าหาจากเนตไม่ได้ แต่คงเกินความสามารถผม แต่ก็ยังดีที่รู้ เผื่อฟุ๊คเขียนได้ 3.มีโปรแกรมอื่นที่พี่พอจะแนะนำได้ไหมครับ ที่จะรับโมเด็มโดยใช้ user radius ได้ครับ ปล. ผมจบแค่ม.6 ไม่เคยเรียนมาอาศัยทำงานและหัดทำ จนพอเป็น (ที่ทำงานของหลวง ยังไม่มีเงินเรียนสักที ) ถ้าจะช่วยจักเป็นพระคุณอย่างมากและจะเป็นเหมือนแสงเทียน ส่องทาง ให้ linux เดินในเมืองไทย อีก 1 ตัว
สายลมแสงแดด
เขียนเมื่อ 19 Feb 2007 @ 10:33

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 Feb 2007 @ 10:35
ผมไม่ทราบว่า โปรแกรม php ที่จัดการ user ของ iceradius นั้น จัดการกับ user โดยตรงหรือว่าจัดการผ่าน iceradius ถ้าจัดการผ่าน icradius ก็น่าจะใชกับ free radius ได้นะครับ
ton
IP: xxx.106.84.17
เขียนเมื่อ 19 Feb 2007 @ 14:24
http://wiki.freeradius.org/Special:Search?search=mysql&go=Go ไม่เห็นบอกว่า table ไหนใช้ทำอะไรเลยครับ ถ้ารู้จะเป็นประโยชน์มากครับ เพราะผมจะพยายาม ข้อมูลจากดาตาเบสของเก่าไปใช่ อันใหม่ให้ได้ ขอลิ้งอีกรอบนะครับ
ton
IP: xxx.106.84.17
เขียนเมื่อ 19 Feb 2007 @ 14:39
มีscript phpraadmin เห็นว่าจัดการกับ user ได้ แต่ผมติดตั้งแล้ว แอด user ไม่ได้ ไม่รู้ผิดตรงไหน พี่ช่วยลองให้หน่อยซิครับ http://www.phpradmin.org/ ใช้ fedora โดยตรง เผื่อพี่จะมีไดเดียใหม่
สายลมแสงแดด
เขียนเมื่อ 19 Feb 2007 @ 15:35

ลองดูที่ web นี้ดูครับ 

http://mamboeasy.psu.ac.th/~wiboon.w/content/view/47/40/

ton
IP: xxx.7.182.240
เขียนเมื่อ 25 Feb 2007 @ 10:56

ทำได้แล้วครับ ต้อง pate pppd ใหม่ครับ ตอนนี้ก็ใช้ mgetty รับโมเด็มได้ เช็ค user ผ่าน แต่ เมื่อต่อไปแล้วเล่นไม่ได้ครับ คือต้องรอสักพักจึงจะเเปดเวปได้ แย่นะ ไม่รู้เป็นที่ไหน สรุปหาสาเหตุไม่ได้ อีกอย่างไม่สามารถเช็คเวลาได้ตรงคือ เพิ่มเวลา 1 ชั่วโมง นี้ต่อตั้ง 3 ชม.ยังไม่หลุดเลย

chuan
IP: xxx.8.98.128
เขียนเมื่อ 20 Dec 2007 @ 14:15
พอดีทำบริการ Radius Server พร้อมระบบจัดการ เลยมาแนะนำคับ http://www.easyzonecorp.net - Radius Server and Billing Module
kai
IP: xxx.128.116.50
เขียนเมื่อ 15 Jan 2009 @ 13:05

คือว่าผมทำโปรเจค Ecommerse อะคับ แล้วที่นี้ผมเอาของเก่ามาแก้ แต่ ผม เข้า admin ระบบไม่ได้ อยากรู้ว่าจะ ดู username กับ password ได้ที่ไหนคับ ช่วยหน่อยนะคับ ผมเพิ่งจะเริ่ม ทำ ไม่มีความรู้อะคับ