[80010]
type=friend
secret=3490047336
จริงๆแล้ว Asterisk มีออปชั่นที่เข้ารหัสพาสเวอร์ดไว้ด้วยนะครับ ซึ่งใครเอาไปก็แกะไม่ออกอยู่ดี (รวมทั้งเราๆท่านๆด้วย ถ้าเผื่อลืมแล้วไม่ได้จดไว้) โดยให้ใช้ออปชั่น md5secret แทน secret ครับ ซึ่งพอเราใช้ md5secret คอนฟิก ตัวอย่างคอนฟิกข้างบนก็จะกลายเป็นแบบนี้
[80010]
type=friend
md5secret=de661ebb4e1d16c341715c22c7969765
ซึ่งเมื่อยูสเซอร์รีจิสเตอร์เข้ามาด้วยพาสเวอร์ด 3490047336 จะทำให้ Asterisk นำมาเข้ารหัสแบบ md5 โดยใช้พารามิเตอร์อีก 3 อย่าง ได้แก่ Username, Realm, Secret (ที่ยูสเซอร์ส่งมา) แล้วเอามาเทียบกับบรรทัด md5secret ถ้าตรงก็จะรีจิสเตอร์ผ่าน
ในคอนฟิกจะมีทั้งบรรทัด secret และ md5secret ด้วยก็ได้นะครับ แต่ Asterisk จะสนใจบรรทัด md5secret และตอนที่บอกคนใช้งานหรือลูกค้า ให้บอกพาสเวอร์ด secret นะครับไม่ใช่ md5secret ไม่งั้นรีจิสเตอร์ยังไงก็ไม่ผ่าน
ข้อมูล de661ebb4e1d16c341715c22c7969765 ในบรรทัด md5secret ผมสร้างมาจากคำสั่งนี้ คำสั่งนี้พิมพ์จาก Linux Prompt เลยครับ แล้วก็ก๊อบผลลัพท์มาใส่
- โค้ด: เลือกทั้งหมด
echo -n "<user>:<realm>:<secret>" | md5sum
โดยที่
<user> คือ Username ตัวอย่างข้างบนคือ 80010
<realm> คือ realm ของ Asterisk เดี๋ยวผมจะแนะนำวิธีการเช็ค realm ทีหลังครับ
<secret> คือ secret หรือ password ครับ ในตัวอย่างข้างบนคือ 3490047336
อย่าลืมใส่ -n ด้วยนะครับ ไม่อย่างนั้นคำสั่ง echo มันจะเติม \n (เรียกว่า new line character) เข้าไปต่อท้ายผลลัพท์ด้วย ซึ่งจะทำให้ผล md5sum ไม่ตรง รีจิสเตอร์ยังไงก็ไม่ผ่าน ส่วนเครื่องหมาย " " ก็ใส่ด้วยนะครับ
ตัวอย่างคำสั่ง สมมติว่า realm = asterisk นะครับ (realm ดีฟอลท์)
- โค้ด: เลือกทั้งหมด
echo -n "80010:asterisk:3490047336" | md5sum
ผลลัพท์
de661ebb4e1d16c341715c22c7969765 -
จะได้ว่า md5secret คือ de661ebb4e1d16c341715c22c7969765 ส่วนเครื่องหมายขีด (-) ไม่ต้องเอามานะครับ
วิธีการดู Realm
1. จาก Linux Prompt พิมพ์คำสั่งนี้ครับ
- โค้ด: เลือกทั้งหมด
asterisk -rx "sip show settings"
2. ภายใต้ Global Settings ดูบรรทัด Our auth realm
- โค้ด: เลือกทั้งหมด
Our auth realm asterisk
ด้านขวามือคือ realm ครับ
วิธีตั้งค่า Realm ใหม่
ถ้าต้องการแก้ไขค่า Realm ใหม่จากดีฟอลท์ asterisk เป็นอันอื่น ทำดังนี้
1. เปิดไฟล์ /etc/asterisk/sip.conf
2. ภายใต้ General ใส่บรรทัดนี
realm=xxxx
แทน xxxx ด้วยค่าที่ต้องการ เช่น voip4share.com หรือ voip4share หรือ nuiz หรืออะไรก็ได้
3. เซฟแล้วพิมพ์คำสั่ง asterisk -rx "sip reload" ก็จะใช้งานได้เลย
ผลลัพท์
มาดูผลลัพท์กันครับ หลังจากที่ผมได้ลบบรรทัด secret ของแอ๊คเค๊าท์ 80010 ออกแล้ว แล้วเพิ่มบรรทัด md5secret แทน แล้วลองรีจิสเตอร์ด้วยแอ๊คเค๊าท์ 80010 ด้วยพาสเวอร์ด 3490047336 ก็รีจิสเตอร์ได้ ลองใช้คำสั่ง sip show peer สังเกตุบรรทัด MD5Secret นะครับ ขึ้นเป็น <Set> แสดงว่ากำลังใช้งานอยู่ ส่วนบรรทัด Secret ขึ้นเป็น <Not set> แสดงว่าไม่ได้ใช้งาน
- โค้ด: เลือกทั้งหมด
sip1*CLI> sip show peer 80010
* Name : 80010
Realtime peer: No
Secret : <Not set>
MD5Secret : <Set>
Context : a2billing
Subscr.Cont. : <Not set>
Language :
Accountcode : 127937954050
AMA flags : BILLING
Transfer mode: open
CallingPres : Presentation Allowed, Not Screened
Callgroup :
Pickupgroup :
Mailbox :
VM Extension : asterisk
LastMsgsSent : 32767/65535
Call limit : 1
Dynamic : Yes
Callerid : "" <80010>
MaxCallBR : 384 kbps
Expire : 285
Insecure : no
Nat : Always
ACL : No
T38 pt UDPTL : Yes
CanReinvite : No
PromiscRedir : No
User=Phone : Yes
Video Support: No
Trust RPID : No
Send RPID : Yes
Subscriptions: Yes
Overlap dial : Yes
Forward Loop : Yes
DTMFmode : rfc2833
LastMsg : 0
ToHost :
Addr->IP : 58.8.164.241 Port 12088
Defaddr->IP : 0.0.0.0 Port 5060
Def. Username: 80010
SIP Options : (none)
Codecs : 0x10f (g723|gsm|ulaw|alaw|g729)
Codec Order : (g729:20,g723:30,gsm:20,ulaw:20,alaw:20)
Auto-Framing: No
Status : OK (36 ms)
Useragent : eyeBeam release 3004t stamp 16741
Reg. Contact : sip:80010@192.168.100.104:9276
แสดงว่าเวอร์คดีครับ