بخش سوم مفاهیم پایه استریسک:
-
تنظیمات دستگاه های تلفن : (User Device Configuration)
در استریسک مواردی که مهم هستند Channelname ها می باشند و در واقع مفهومی به نام user وجود ندارد. extension ها در واقع یک نام برای گروهی از دستورات هستند و می توان نام دیگر آن را Scriptname نامید. extension می تواند یک عدد (به عنوان مثال 100) و یا یک کلمه کاراکتری (به عنوان مثال VoiceMail) باشد.
1.نامگذاری تلفن ها :
بهترین روش نامگذاری تلفن ها چیست ؟ در یک شرکت یک تلفن ممکن است توسط افراد مختلفی مورد استفاده قرار گیرد.فرض کنید در یک شرکت شیفت های مختلف کاری وجود دارد و هر Userیی که روی تلفن Login می کند، تماس ها به او وصل می شود(که آن را hot-desking می گویند). بنابراین نامگذاری تلفن ها با نام شخص (به عنوان نمونه [Amir]) مناسب نمی باشد زیرا همان تلفن توسط افراد دیگری نیز استفاده می شود. نامگذاری تلفن با شماره داخلی (به عنوان نمونه [100]) نیز مناسب نمی باشد زیرا ممکن است در آینده بخواهید شماره داخلی آن را تغییر دهید. بهترین روش جهت نامگذاری تلفن ها استفاده از MAC adress تلفن می باشد. همچنین تلفن ها دارای بارکد هستند و بعضی از تولید کنندگان برای Provisioning از آن کدها استفاده می نمایند که این روش نیز مناسب می باشد.
اصولا سه نوع Endpoint جهت فراهم کردن دستگاه تلفن برای کاربران وجود دارد.
1. hardphone IP مانند تلفن های
2.softphone Zoiper مانند
3.ATA(Analog Terminal Adaptors) هاGateway مانند
2.تنظیمات Asterisk :
در این بخش در مورد فایل sip.conf و iax.conf که در مسیر etc/asterisk قرار دارند صحبت خواهیم نمود.در استریسک امکان ارتباط با پرتکل های مختلفی وجود دارد ولی مشهورترین آن ها SIP و IAX2 هستند.پرتکل های مختلفی مانند Skinny/SCCP ، MGCP ، Unistim ، H323 نیز وجود دارند.
فایل Sip.conf تنظیمات لازم برای ماژول channel driver مانند chan-sip.so و فایل iax.conf تنظیمات مورد نیاز برای channel driver مانند chan-iax2.so را مشخص می کنند. تنظیمات مشترک و کلی در بخش [general] در بالای فایل قرار می گیرند. همچنین مقادیر پیش فرض (Default) برای سایر بخش های بعدی در این بخش مشخص می گردد.
قابل ذکر است استریسک برای تمام پارامترها مقادیر پیش فرض بصورت hardcoded دارد و لزومی به تعریف کلیه مقادیر نیست مگر اینکه بخواهید مقدار آنرا تغییر دهید.
3.ارتباط بین دستگاه ها و Dialplan :
وقتی یک تماس وارد استریسک می شود ابتدا در فایل پرتکل مربوطه مثلا sip که فایل آن Sip.conf است نام دستگاه جستجو شده و بخش مربوط به آن پیدا می شود.این بخش مشخص می کند که آن دستگاه به چه صورت باید Authenticate شود و همچنین context مربوطه در فایل extension.conf را مشخص می کند. سپس کترل تماس به آن بخش Context در Dialplan منتقل شده و Dialplan مربوطه اجرا می شود.

بالعکس هنگامی که در Dialplan بخواهید یک شماره تلفن را شماره گیری کنید که با دستور Dial انجام می شود بخش مربوطه در sip.conf پیدا شده و در آن قسمت مشخص می شود تماس با چه دستگاهی و با چه مشخصاتی مانند نوع codec و Authentication و غیره انجام شود.
4. Sip.conf :
Sip.conf
[general]
context = unthenticated
Context پیش فرض برای تماس های ورودی تماس های بدون Authentication را اجازه ورود نمی دهد.
allowguest = no
srv lookup = no
DNS را برای تماس های خروجی غیر فعال می کند.
udpbindaddr = 0.0.0.0
به در خواست های UDP روی تمام کارت های شبکه گوش می دهد.
tcpenable = no
TCP را غیر فعال می کند.
[office-phone](!)
یک Template ایجاد می کند.
Type = friend
عملیات match توسط Channel Driver ابتدا بر اساس username و سپس بر اساس IP انجام می شود.
Context = LocalSets
محل ورود تماس های ورودی از کدام Context شروع شود.
host = Dynamic
دستگاه بر روی Register , asterisk خواهد نمود.
nat = force-rport , comedia
دستگاه پشت یک nat قرار گرفته است.
disallow = all
همه ی کدک ها را غیر فعال می کند.
allow = g722
allow = ulaw
allow = alaw
کدک های فعال را تعریف می کند.
[0000FFFF01](office-phone)
یک دستگاه را تعریف می کند با Template تعریف شده در بالا
Secret = 12345
رمز عبور این دستگاه
[0000FFFF02](office-phone)
یک دستگاه دیگر را تعریف می کند.
Secret = 54321
در برخی مواقع ممکن است بخواهید allow guest = yes قرار دهید.کاربرد آن زمانی است که بخواهید افراد از بیرون بتوانند با SipURI شما تماس بگیرند.مثلا وقتی آدرس SipURI شما روی کارت ویزیت شما به آدرس Sip: Amir.Kalantar@Tiba.com ثبت شده باشد و بخواهید افراد با شما تماس بگیرند چون مکانیزم Authenticationندارند باید این گزینه فعال باشد و Context برای این تماس هادر بخش unauthenticated مثلا handel شود تا امکان تماس به بیرون نداشته باشند.
مقدار udpbindaddar می تواند در قالب های زیر باشد :
udphindaddr = 192.168.1.50 IP Version 4 خاص IP
udphindaddr = 2001:db8::1 IP Version 6 خاص IP
udphindaddr = 0.0.0.0 Bind to all IPV4 adresses
udphindaddr = :: Bind to all IPV4 and IPV6 adresses
در صورتی که Surlookup = yes باشد و اینترنت کامپیوتر و یا شبکه DNS Server قطع شود موجب کاهش Performance خواهد شد.
مورد tlsenable و tlsbindaddr نیز برای فعال کردن SIP بر روی (Transport Layer Security) وجود دارد که بعدا به توضیح آن خواهیم پرداخت.
مقدار Type یکی از سه مورد زیر می تواند باشد.
1.Peer
در این حالت درخواست های match در فایل های Configuration بر اساس IP و شماره Portnumber انجام می شود.
2. User
عملیات match بر اساس Userna,e واقع در فیلد Sip Request , From انجام می شود.
3.friend
عملیات match بر اساس هر دو peer و user انجام می شود.
یک تماس غالبا از سه ارتباط شبکه ای تشکیل می شود.
1- Sip Connection (Signalling) 2-Outgoing RPT 3-Incoming RTP
در صورتی که Firewall بین این دو ارتباط ، مورد 3 یعنی Incoming RTP stream را تشخیص ندهد (آن را با ارتباط شبکه ای SIP مورد 1 در ارتباط نداند ) اجازه ی عبور به آن نمی دهد در این حالت کاربر یک طرف صدا را نمی شنود. این مورد بعدا مورد بررسی قرار خواهد گرفت.
5. iax.conf :
iax مخفف عبارت Inter Asterisk exchange می باشد.این پروتکل جهت ساده سازی ارتباط VOIP جهت عبور از Firewall ها طراحی شد بطوریکه Signalling و media از طریق یک ارتباط Connection منتقل شود و ارتباط به راحتی بین دستگاه های پشت NAT برقرار شود. یکی از مزایای این پرتکل استفاده از یک تک پورت Single-port جهت عبور از Firewall ها است که موجب سهولت در تنظیم و رفع عیب ارتباطات خارجی به استریسک می شود. یکی دیگر از مزایای IAX2 این می باشد که فریم های مختلف صدا را با یک IAX2 header ارسال می کند. این کار موجب صرفه جویی در Bandwidth هنگام ارسال تماس های همزمان بین دو نقطه می شود.
[general]
autokill = yes ; don't stall for a longtime
; if other endpoint doesn't respond
Srvlookup = no ; disable DNS SVR lookups for outbound Calls
[inter-office-trunk](!)
Type = friend ; asterisk will allow Calls to and from this phone
Context = Localsets ; the Context where incoming requests will enter the dialplan
delay reject = yes ; delay authentication reject (limit brute force attacks)
disallow = All
allow = ulaw
allow = alaw
[branch-office](inter-office-trunk)
Secret = 123456
host = 192.168.1.7
-
نکته های فایل های Config در Asterisk
1.در صورتی که یک فیلد در یک Context دوباره تکرار شود مقدار آخرین تکرار در نظر گرفته می شود.
[Context 1]
Sample 1 = 1
Sample 2 = 2
Sample 3 = 3
Sample 1 = 10
Sample 1 = 10
2. در صورتی که نام یک Context در ادامه فایل تکرار شود مقدارهای فیلد های تکراری دور انداخته می شوند و جایگزین نمی شوند ولی فیلد های جدید به آن Context اضافه می شوند.
[Context1]
Sample 1 = 1
Sample 2 = 2
[Context1]
Sample 1 = 3 ( .این خط دور انداخته می شود)
Sample 4 = 4
[Context1]
Sample 1 = 1
Sample 2 = 2
Sample 4 = 4
3.در صورتی که نام Context در ادامه فایل دوباره تکرار شود و بعد از آن عبارت (+) قرار گیرد field های تکراری جایگزین مقدار های قبلی شده و فیلدهای جدید به آن اضافه می شوند.
[Context1]
Sample 1 = 1
Sample 2 = 2
[Context1](+)
Sample 1 = 3
Sample 3 = 3
[Context1]
Sample 1 = 3
Sample 2 = 2
Sample 3 = 3
4. درصورتی که inherit , Context شود مقدارهای تکراری جدید جایگزین قبلی می شود و آخرین مقدار inherit شده قرار می گیرد.
[Context1]
Sample 1 = 1
Sample 2 = 2
[Context2](Context1)
Sample 1 = 3
Sample 3 = 3
[Context2]
Sample 1 = 3
Sample 2 = 2
Sample 3 = 3
[Context3](Context1,Context2)
Sample 3 = 4
[Context3]
Sample 1 = 3
Sample 2 = 2
Sample 3 = 4
مطالب قبلی ...
مفاهیم پایه استریسک بخش اول
مفاهیم پایه استریسک بخش دوم