วันนี้จะเล่าถึงการแก้ปัญหาที่ PPPd ซึ่งใช้งานร่วมกับ PPTPd สำหรับให้บริการ VPN ไม่มีการส่ง Accounting Interim Packet ให้กับตัว Radius ทั้งที่เรามีการกำหนดให้ส่งใน Radius Server แล้วซึ่งปกติแล้ว Accounting Packet จะมีการส่ง Start และ Stop ในตอนที่การเชื่อมต่อเริ่มต้นและสิ้นสุดอยู่แล้ว แต่ผมต้องการให้ตัว PPPd ส่ง Accounting Packet ระหว่างการเชื่อมต่อเป็นระยะด้วยเพื่อทำการ Update ข้อมูลของ IP POOL ที่กำหนดให้ผู้ใช้ แต่ลองดูจาก Packet ที่ Radius Server แล้วไม่มีการส่ง Interim Packet มาเลย
จากการตรวจสอบพบว่าไฟล์ dictionary ใน /etc/radiusclient/ ไม่มีข้อมูลของ Acct-Interim-Interval ครับทำให้ตัว PPPd ไม่มีการดำเนินการหลังจากที่ได้รับค่ามาจาก Radius Server เราก็ลองเพิ่มเข้าไปดังนี้ครับ
ATTRIBUTE Acct-Interim-Interval 85 integer
หลังจากนั้นก็ลองทดสอบกับการเชื่อมต่อหลังจากการแก้ไฟล์ configuration นี้ก็จะมีการส่ง Packet มาดังนี้ครับ
rad_recv: Accounting-Request packet from host 172.27.1.24:33665, id=73, length=142
Acct-Session-Id = "4EF7EDC5459300"
User-Name = "cnarong"
Acct-Status-Type = Interim-Update
Service-Type = Framed-User
Framed-Protocol = PPP
Acct-Authentic = RADIUS
Acct-Session-Time = 2400
Acct-Output-Octets = 1484479
Acct-Input-Octets = 1228494
Acct-Output-Packets = 2019
Acct-Input-Packets = 1919
Calling-Station-Id = "1.72"
NAS-Port-Type = Async
Framed-IP-Address = 172.27.190.18
NAS-Identifier = "172.27.1.24"
NAS-Port = 0
Acct-Delay-Time = 0
ลองดูนะครับ สำหรับ OS ของผมตัวนี้คือ Fedora Core 6 นะครับ ใช้มานานมากแล้ว Hardware เก่าครับเลยไม่ upgrade แต่อย่างตัวใหม่ๆ คือ CentOS 5.7 ลง radiusclient-ng ตัวไฟล์ dictionary จะอยู่ที่ /usr/share/radiusclient-ng/ ครับ