หน้า 1 จากทั้งหมด 1

ออปชั่น insecure ในไฟล์ sip.conf

โพสต์โพสต์แล้ว: 21 ธ.ค. 2009 23:12
โดย voip4share
ตอนที่เราสร้าง SIP Trunk ในไฟล์ sip.conf (หรือไฟล์อื่นๆที่ทำหน้าที่อย่างเดียวกัน) ของ Asterisk นั้นคงจำกันได้นะครับว่ามีอยู่บรรทัด 2 บรรทัดที่เป็นไอพีแอดเดรสและพอร์ตของโฮสต์ที่ Asterisk จะยอมรับคอลที่ส่งเข้ามา (ยอมรับ Invite Message) นั่นคือบรรทัด host และ port เช่น

host=sip.voip4share.com
port=5060

ถ้ามีแค่ 2 บรรทัดนี้ Asterisk จะยอมรับ Incoming Call เข้ามาก็ต่อเมื่อ ส่งมาจากโฮสต์ sip.voip4share.com และต้องส่งมาจากพอร์ต 5060 เท่านั้น ถึงแม้ว่าโฮสต์จะตรงแต่ถ้าพอร์ตไม่ตรงมันก็จะไม่ยอมรับคอล

แต่ถ้าฟิกซ์ไว้อย่างนี้ก็จะมีปัญหาคือถ้าเราไม่เบอร์พอร์ตหล่ะจะทำยังไง ใช้ insecure ช่วยได้ครับ

ออปชั่น insecure จะบอก Asterisk ว่าเวลามี Incoming Call มาจาก IP Address ที่ตรงกับบรรทัด host มันต้องเช็คอย่างอื่นอีกหรือไม่ เช่น เช็คพอร์ตต้นทาง (SIP Port) หรือไม่ หรือขอให้มีการทำ Authentication สำหรับ Invite Message หรือไม่

Note! Invite เป็น SIP message ชนิดหนึ่งใช้ส่งไปยัง SIP Server ว่าต้องการจะโทรไปเบอร์ที่ระบุไว้ใน message

insecure มีตัวเลือกให้เราเลือก 3 แบบดังต่อไปนี้

insecure=port จะเช็คเฉพาะไอพีแอดเดรสเท่านั้น ไม่สนใจหมายเลขพอร์ต แต่ยังต้องร้องขอ Authentication ของ Invite Message
insecure=invite ยอมรับ Invite Messages ไม่ต้องการ Authentication
inseecure=port,invite ทั้งสองอย่างคือรับ Invite Message เข้ามาเลยโดยไม่ต้องร้องขอให้มีการ Authentication และไม่สนใจว่าจะส่งมาจากพอร์ตไหน

Note! สำหรับ Asterisk เวอร์ชั่นตั้งแต่ 1.0.9 ลงไป มีตัวเลือกสำหรับ insecure คือ yes และ very
insecure=yes เช็คว่าไอพีแอดเดรสตรงหรือไม่โดยไม่สนใจพอร์ต
insecure=very ยอมให้โฮสต์ที่ริจิสเตอร์อยู่แล้วส่ง Invite มาได้โดยไม่ขอให้ทำ Authentication ใหม่

มาดูกันครับว่า Authentication ของ Invite Message มันเป็นยังไง

ดูตัวอย่างการส่ง Invite ระหว่าง Asterisk สองตัวครับ ดังรูป (ผมขออนุญาตปิดไอพีแอดเดรสของทั้งสองเครื่องและปิดเบอร์โทรด้วยนะครับ) ข้อความนี้ผมใช้โปรแกรม Ngrep แค๊บเจอร์มาจากเซอร์เวอร์ครับ ดูรายละเอียดโปรแกรม Ngrep คลิ๊กที่นี่ครับ
invite-with-authentication-small.png
Invite message with authentication
invite-with-authentication-small.png (375.74 KiB) เปิดดู 4750 ครั้ง


1. โฮสต์ A ส่ง Invite จากไอพี 202.170.x.x และพอร์ต 5060 ไปที่โฮสต์ B บอกว่าขอโทรไปที่เบอร์ 00166859011xxx
2. โฮสต์ B ส่ง 407 Proxy Authentication Required กลับมา นี่แหล่ะคือการขอให้ส่ง Invite แบบมี Authentication ครับ เราจะไม่เห็น Message นี้ถ้าบนโฮสต์ B เซ็ต insecure=invite ไว้ในคอนฟิกของโฮสต์ A
3. โฮสต์ A ตอบกลับไปว่า ACK รับทราบแล้ว
4. โฮสต์ A ส่ง Invite ไปยังโฮสต์ B ใหม่พร้อม Authentication ดูจากตรงไหนว่ามี Authentication ? ดูจากข้อความ Proxy-Authentication: Digest username="xxxxxx", realm="xxxxxx" ครับ
5. โฮสต์ B รับเข้าไปทำงานแล้วส่งข้อความ 100 Trying กลับมาบอกว่ารอแป๊บนึง

ลองดูตัวอย่างอื่นๆของคอนฟิก Inbound Trunk

host=192.168.5.1
port=5060
insecure=invite

ถ้าโฮสต์ที่ส่งมาคือไอพี 192.168.5.1 แต่ส่งมาจากพอร์ต 5061 ก็จะไม่ได้นะครับ ยกเว้นแก้บรรทัด insecure ให้เป็น port,invite

อีกตัวอย่างหนึ่งครับ

host=192.168.5.1
port=5060
insecure=port

ถ้าโฮสต์ที่ส่งมาคือไอพี 192.168.5.1 แต่ส่งมาจากพอร์ต 5061 ก็ไม่เป็นไรนะครับ แต่ว่าต้องมีการทำ Authentication ของ Invite Message ด้วย ถ้าโฮสต์ 192.168.5.1 ไม่รองรับ ก็จะไม่ได้อีกเช่นกัน

อีกตัวอย่างครับ

host=192.168.5.1
port=5060
insecure=port,invite

ขอให้ส่งมาจากไอพี 192.168.5.1 เป็นอันใช้ได้ครับ ไม่เช็คพอร์ต และไม่ขอให้ทำ Authentication ของ Invite Message

เทคนิคการติดตั้ง Asterisk 16.x + DAHDI 2.11.1 บน CentOS 7
เทคนิคการติดตั้ง Asterisk 15.x + DAHDI 2.11.1 บน CentOS 7

Re: ออปชั่น insecure ในไฟล์ sip.conf

โพสต์โพสต์แล้ว: 08 ม.ค. 2010 11:28
โดย rookie
ได้คว่มรู้ใหม่อีกอย่างละสุดยอดจริงๆครับท่าน ;)