برقراری ارتباط VoIP بین شعب مختلف از طریق ترانکِ SIP
پیش تر در مقاله ای جداگانه نحوه برقراری ارتباط بین دو سرور FreePBX از طریق پروتکل IAX2 را توضیح داده ایم. ( لینک مقاله قبل )
ممکن است شما به هر دلیلی نیاز داشته باشید که ارتباط بین دو سرور را از طریق پروتکل SIP برقرار نمایید. لازم به ذکر است که در فضای وب فارسی مقاله هایی در این زمینه موجود است ، اما بنده به جز یک مورد مقاله ای را که مراحل کار را درست انجام داده باشد پیدا نکردم و آن یک مورد نیز بدون تصویر بود و ممکن است گیج کننده باشد. بنابراین تصاویری که در این مقاله استفاده شده است از محیط آزمایشگاهی TechTik (شرکت چرخه ارتباط سبز) می باشد و همه موارد مقاله مرحله به مرحله تست و اجرا شده است.
قبل از هرچیز باید بدانیم که اتصال دو سرور FreePBX دقیقا چه سودی برای سازمان دارد. فرض کنید که نیاز است ، داخلی های یک شعبه سازمان شما با داخلی هایی که در شعبه دیگری هستند تماس بگیرند. یک راه آن این است که از طریق خطوط مخابراتی این تماس هدایت شود که در این صورت هزینه سنگینی بابت مکالمات روزانه بایستی بپردازید. اما از طریق راه اندازی SIP Trunk بین دو سرور FreePBX شما می توانید مستقیما با داخلی های شعبه دیگر تماس برقرار نمایید و هزینه شما تنها بابت پهنای باند استفاده شده در بستر اینترنت برای انتقال تماس های VoIP خواهد بود که بسیار کمتر است. پس با ما تا انتهای مقاله همراه باشید که ببینیم چطور می توانیم سرور های خود را برای این کار کانفیگ نماییم.
در این آموزش پیش فرض های زیر را در نظر خواهیم گرفت :
شعبه دفتر تهران :
Server1
آی پی FreePBX : 192.168.75.130
محدوده داخلی ها از ۰ تا ۹۹
شعبه دفتر شیراز :
Server2
آی پی FreePBX : 192.168.75.131
محدوده داخلی ها از ۱۰۰ تا ۱۹۹
شما می توانید با توجه به محیط خودتان این موارد را جایگذاری نمایید. همچنین لازم به ذکر است که مسلما در محیط واقعی آی پی ها به صورت دیگری خواهند بود و برای انجام این سناریو بایستی حتما ارتباط بین دو سرور از طریق اینترنت برقرار باشد.
در ابتدا وارد محیط وبی سرور FreePBX در دفتر تهران می شویم. از منوی Connectivity گزینه Trunk را انتخاب نمایید و بر روی Add Sip Trunk کلیک نمایید.
حال در قسمت General Settings نام ترانک را به دلخواه انتخاب نمایید و در قسمت Outbound Caller ID می توانید نام مبدا را بنویسید یا هر نام دلخواه دیگر. برای مثال من Trunk Name را برابر Server2 و Outbound Caller ID را برابر Server1 قرار داده ام که مبدا است.
در بخش Outgoing Settings موارد PEER Details و USER Details وجود دارند. PEER مربوط به اطلاعات مورد نیاز برای ارتباط با سرور طرف مقابل است و USER مربوط به اطلاعات مورد نیاز سرور طرف مقابل برای ارتباط با مبدا می باشد.
دوباره در این قسمت نام ترانک را در فیلد Trunk Name وارد نمایید. در قسمت PEER Settings نیز بایستی موارد زیر مشخص گردد :
username=Server1
fromuser=Server1
secret=P@ssw0rd
type=peer
context=from-trunk
qualify=yes
host=192.168.75.131
disallow=all
allow=gsm
در اینجا username نام کاربری دلخواه شما است. Fromuser پارمتری است که در زمانی که type ارتباط برابر با peer می باشد بایستی مقدار دهی شود. در این مثال ما می توانیم همان مقدار username را برای fromuser نیز در نظر بگیریم. مقدار secret همان طور که حتما می دانید رمز عبور دلخواه برای ترانک است. Context در اینجا from-trunk تعریف شده است.
From-trunk به این معنی است که با تماس های ورودی به ترانک مانند تماس های ورودی از خطوط خارج از سازمان برخورد می شود و توسط Route هایی که در Inbound Route Module تعریف می شود مسیریابی خواهند شد. در حالت کلی از from-trunk زمانی استفاده می شود که قرار است ارتباط با خطوط خارج از سازمان برقرار گردد.
Qualify به این معنی است که سرور به صورت دائم ارتباط خود را با سرور طرف مقابل بررسی می کند. ( هر دو ثانیه یک بار به صورت پیش فرض ) و در صورتی که تشخیص دهد ارتباط با سرور طرف مقابل برقرار نمی باشد ، دیگر تماس ها را به سمت سرور مقابل نمی فرستد. اگر بخواهید مقدار پیش فرض آن را تغییر دهید می توانید به جای yes مقدار دلخواه را بنویسید. برای مثال qualify=3000 یعنی هر ۳ ثانیه یکبار ( به جای هر دو ثانیه یکبار ) کانکشن بررسی می شود. ( واحد آن میلی ثانیه است )
در پارامتر allow کدک صوتی GSM انتخاب شده است. GSM در مقایسه با G711-u – ulaw – پهنای باند کمتری استفاده می کند .
در بخش USER SETTINGS موارد زیر را وارد کنید و نامی را جهت USER Context در نظر بگیرید.
type=user
secret=P@ssw0rd
host=192.168.75.131
context=from-internal
disallow=all
allow=gsm
دقت داشته باشید که این اطلاعات ، مربوط به نحوه برقراری ارتباط سرور دوم ( دفتر شیراز ) با این سرور ( دفتر تهران ) است. بنابراین اگر در مراحل بعد کلمه عبور متفاوتی را در قسمت PEER Settings برای سرور دوم تعریف می نمایید در این قسمت مقدار secret را برابر همان کلمه عبوری که برای سرور دوم در نظر گرفته اید قرار دهید. در اینجا چون من در سرور دوم نیز از همین کلمه عبور استفاده می کنم ، همان مقدار قبلی را Set کرده ام.
بعد از انجام تنظیمات گفته شده ، بر روی دکمه Submit Changes کلیک کنید و سپس تنظیمات را Confirm نمایید. ( پس از Submit Changes دکمه قرمز رنگ Apply Config در بالای صفحه ظاهر می گردد. مثل تصویر زیر )
تا اینجا Trunk در سرور اول ساخته شده است. اما هیچ Outbound Route ای برای آن ساخته نشده است. فرض کنید کاربری از دفتر تهران داخلی ۱۵۰ در دفتر شیراز را شماره گیری نماید. سرور از کجا باید بفهمد که برای این داخلی می بایست از SIP Trunk ای که تعریف کرده ایم استفاده کند ؟ بدین منظور از منوی Connectivity گزینه Outbound Routes را انتخاب کنید. در قسمت Route Settings یک نام دلخواه برای Route و Route CID بنویسید.
و در قسمت Dial Pattern that will use this Route ، الگوهای مورد نظرمان را که قرار است از این Route استفاده کنند را وارد می کنیم. برای مثال من می خواهم مشخص کنم که هر کاربری که داخلی بین ۱۰۰ تا ۱۹۹ را شماره گیری کرد از این Route استفاده کند.
بنابراین در قسمت Match Pattern می نویسم : ۱XX که یعنی اگر کسی عدد سه رقمی را شماره گیری کرد که با ۱ شروع شده بود از این مسیر استفاده شود.
در انتهای کار باید مشخص کنیم که این Route قرار است از کدام ترانک استفاده نماید. پس ترانکی را که در قسمت قبل تعریف کرده ایم را به عنوان الویت صفر ( اول ) در نظر می گیریم.
دکمه Submit Changes را بزنید و با Apply Config تنظیمات را ثبت نمایید.
وارد محیط وبی سرور دوم در دفتر شیراز می شویم. مطابق قبل از منوی Connectivity گزینه Trunk را انتخاب نمایید و بر روی Add Sip Trunk کلیک نمایید.
Trunk Name و Outbound Caller ID را به دلخواه می نویسیم.
و دوباره موارد Outgoing Settings را انجام می دهیم. با این تفاوت که این بار username ، fromuser و secret را برای سرور دوم تعیین می کنیم. و در قسمت host آی پی سرور اول را می نویسیم. همان طور که گفته شد secret ای که در اینجا مشخص می شود همان secret ای است که در قسمت USER Settings سرور اول به عنوان مشخصات سرور دوم در نظر گرفتیم.
موارد USER Settings را نیز با توجه به سرور اول به همان صورت وارد می نماییم. Secret مقداری خواهد بود که در PEER Settings سرور اول مشخص گردید و host نیز آی پی سرور اول است.
مانند قبل با دکمه Submit Changes و Apply Config تنظیمات را ذخیره نمایید.
در این سرور نیز Outbound Route ای را که قرار است از این ترانک استفاده کند را تعریف خواهیم کرد. با توجه به این که داخلی های در نظر گرفته شده برای دفتر تهران از ۰ تا ۹۹ هستند نیاز به دو Dial Pattern داریم. یکی الگوی شماره گیری X که به معنای اعداد ۰ تا ۹ است و دیگری الگوی شماره گیری XX که به معنای داخلی های بین ۱۰ تا ۹۹ می باشد.
به همین سادگی تنظیمات ترانک SIP انجام گردید. برای تست آن من نرم افزار XLite را بر روی کامپیوتر و یک نسخه را بر روی یک ماشین مجازی نصب کردم. یکی با داخلی موجود در سروری که به عنوان دفتر تهران بود و دیگری با داخلی موجود در دفتر شیراز رجیستر شد و تماس به راحتی صورت پذیرفت. همچنین می توانید با کامند sip show peers وضعیت ترانک را مشاهده نمایید.
سلام یه مشکل برام پیش اومده لطفا اگه کسی بلده و میتونه کمکم کنه من یه دفتر اصلی دارم و یک شعبه خارج تهران در هر دو طرف اینترنت دارم و سرور ارتباط بین این دو دفتر را با تانل ipsec کریو گرفتم و مشکلی نیست در هر سمت یه ایزابل دارم ارتباط بین دو ایزابل هم با iax2 گرفتم در نتیجه هم از هر دو طرف میشه داخلی به داخلی شماره گرفت ولی مشکل من اینجاست که در سمت شعبه هیچ خطی وجود نداره و میخام تماس های خارج از سازمان منتقل بشه به ایزابل تهران و اون بفرسته… بیشتر»
سلام
کافیه یک Outbound rout از شعبه با prefix ای که میخواهید مثلا عدد ۹ به شکل ۹xxxxxxxx تماس خروجی شعبه رو پاس بدید به ترانک تهران و در سرور تهران هم یک دیفالت روت ۹ به بیرون اگر پیش فرض داشته باشید تماس روت می شود