برقراری ارتباط VoIP بین شعب مختلف از طریق ترانکِ IAX2

تصور کنید که سازمانی وجود دارد که شعبه های مختلفی در نقاط مختلف دنیا دارد. این شعبه های مختلف توسط شبکه WAN یا اینترنت به یکدیگر متصل هستند و تلفن های VoIP هر شعبه توسط یک سرور FreePBX اداره می شود. اگر نیاز باشد که در هر شعبه کارمندان بتوانند از طریق خط های داخلی با کارمندان شعبه های دیگر تماس بگبرند باید بین PBX ها ارتباط برقرار باشد و برای این کار تنظیم شده باشند. در این مقاله نحوه انجام این کار را توضیح خواهیم داد.

ما می توانیم به هر تعدادی که بخواهیم FreePBX های مختلف را به هم مرتبط کنیم. حتی اگر FreePBX های ما پشت یک NAT Firewall باشند. برای شروع فرض کنید سرور با مشخصات زیر را داریم.

سیستم اول : محل : شیراز

شماره داخلی های تعریف شده : از ۴۰ تا ۴۹

سیستم دوم : محل : تهران

شماره داخلی های تعریف شده : از ۵۰ تا ۵۹

طرح کلی کاری که باید انجام دهیم به این شکل است :

  • تنظیم یک ترانک IAX2 بر روی سیستم اول. این ترانک ارتباط را با سیستم دوم برقرار خواهد کرد.
  • تنظیم یک مسیر خروجی ( Outbound Route ) بر روی سیستم اول. این مسیر به سیستم اول خواهد گفت که کدام تماس ها باید به سیستم دوم هدایت شوند.
  • تنظیم یک ترانک IAX2 بر روی سیستم دوم. این ترانک ارتباط را با سیستم اول برقرار خواهد کرد.
  • تنظیم یک مسیر خروجی ( Outbound Route ) بر روی سیستم دوم. این مسیر به سیستم دوم خواهد گفت که کدام تماس ها باید به سیستم اول هدایت شوند.

مرحله ۱ : تنظیم یک ترانک IAX2 بر روی سیستم اول

به قسمت Trunk Module در سیستم اول بروید.

freepbx-to-freepbx-iax2-1

بر روی Add Trunk در بالا کلیک نمایید. گزینه Create an IAX2 Trunk را انتخاب کنید.

freepbx-to-freepbx-iax2-2

موارد زیر در این قسمت کانفیگ شود :

Trunk Name : می تواند هر نام دلخواهی باشد. من نام سیستمی را که می خواهم ترانک را با آن برقرار کنم ترجیح می دهم.

Trunk Name : System2

Outbound Caller ID : باز هم به دلخواه است. من نام سیستم مبدا را در اینجا قرار می دهم.

Outbound Caller ID : System1

Dialed Number Manipulation Rules : در این سناریو نیازی به تعریف این گزینه ندارید.

freepbx-to-freepbx-iax2-3

PEER Details : در این قسمت ویژگی های ارتباط با سیستم دوم را مشخص می کنیم. فرمت کلی آن به شکل زیر است :

freepbx-to-freepbx-iax2-4

Username=System1

Secret=password

Host=system2ipaddress

Type=friend

Context=from-internal

Qualify=yes

Qualifyfreqok=25000

Transfer=no

Trunk=yes

Forceencrypion=yes

Encryption=yes

Auth=md5

دقت داشته باشید که username و secret را می توانید هر مقدار دلخواهی قرار دهید. اما آن را به یاد داشته باشید. چون اگر بر روی این سیستم تغییر کند باید بر روی سیستم دوم هم به همین صورت تغییر نماید. همچنین در این قسمت کوچک و بزرگ بودن حروف اهمیت دارد. ( Case Sensitive )

اگر برای برقراری تماس با مشکل رو به رو شدید ممکن است که بر روی Asterix شما رمزنگاری های رایج نصب نباشد. بنابراین می توانید سه خط آخر را پاک کنید.

درصورتی که می خواهید فقط شما بتوانید با  داخلی های سیستم دوم تماس بگیرید و تماس داخلی های های سیستم دوم با اول به صورت مستقیم امکان پذیر نباشد ، Context را از from-internal به from-trunk تغییر دهید.

همان طور که مشخص است در قسمت host نیز بایستی آی پی آدرس سیستم دوم قرار گیرد. اگر یکی از سیستم های شما آی پی داینامیک دارد باید سیستم را با یک سرویس داینامیک DNS مثل DYNDNS رجیستر نمایید. و در قسمت Host از نام دامینی استفاده نمایید. برای مثال xxxxxx.dyndns.com به جای آی پی.

مرحله ۲ : تنظیم یک مسیر خروجی در سیستم اول

در سیستم اول به قسمت Outbound Routes Module در FreePBX مراجعه نمایید.

freepbx-to-freepbx-iax2-5

حال در Route Settings موارد زیر را به صورتی که آمده است تغییر دهید.

freepbx-to-freepbx-iax2-6

Route Name : InterOfficetoSystem2

Route CID : YOURNUMBER

Route Type : CHECK Intra-Company

Dial Patterns : () + | 5X

() + | *۸۰۵X

() + *۸۱ | .

Trunk Sequence : System2

توضیح کوتاهی درباره Dial Patterns :

همان طور که در قسمت اول بیان شد در دفتر تهران داخلی های ۵۰ تا ۵۹ تعریف شده اند. بنابراین در خط اول Pattern این موضوع را به صورت ۵X مشخص کرده ام. برای اینکه بهتر این موضوع را متوجه شوید فرض می کنیم که محدوده داخلی های ما در دفتر تهران از ۵۰۰ تا ۵۹۹  باشد. بنابراین Pattern آن به این شکل خواهد بود : ۵XX

در خط دوم مشخص گردیده است که اگر کاربری ۸۰* را شماره گیری نمود و سپس داخلی بین ۵۰ تا ۵۱ را شماره گیری نمود ، تماس به سیستم دوم فرستاده خواهد شد.

در خط سوم اگر کاربری ۸۱* را شماره گیری نماید ، بعد از آن هر عددی که وارد کند سیستم ۸۱* را حذف و باقی را هر چه که باشد به سیستم دوم ارسال خواهد کرد.

ممکن است که در سناریوی شما برخی از داخلی هایی که در سیستم دوم وجود دارند ، در سیستم اول هم برای کاربران دیگری تعریف شده باشند یا به عبارتی دیگر محدوده داخلی ها تداخل داشته باشد. اگر چنین است دو خط اول را در Dial Patterns پاک کنید.

مرحله ۳ : تنظیم یک ترانک IAX2 بر روی سیستم دوم

در این قسمت همان تنظیماتی را که در مرحله ۱ بر روی سیستم اول انجام دادیم ، بر روی سیستم دوم نیز اعمال می نماییم. بعد از تنظیم Trunk Name ، username و secret به دلخواه ( با توجه به آن چه که در سیستم اول مقدار دهی شده است ) ،  در قسمت هاست ،  آی پی سیستم اول قرار داده خواهد شد. سایر موارد به شکل قبل هستند.

مرحله ۴ : تنظیم یک مسیر خروجی در سیستم دوم

تنظیمات مطابق توضیحات مرحله ۲ اعمال می گردد. توجه داشته باشید که به دلیل محدوده متفاوت داخلی ها در سیستم اول Pattern پیشنهادی برای این سناریو به صورت زیر خواهد بود و مواردی که در مرحله ۲ عنوان شدند در اینجا نیز صدق می کنند.

() + | ۴X

() + | *۸۰۴X

() + *۸۱ | .

در حال حاضر هر دو سرور FreePBX به یکدیگر متصل شده اند. ذکر چند نکته در پایان خالی از لطف نیست. در ترانک توسط پروتکل IAX2 شما نیازی به Port Forward و باز کردن هیچ پورتی ندارید. در حالی که در ترانک توسط SIP بایستی پورت های مربوطه باز شود. هرچند که ممکن است در بعضی کانفیگ های خاص نیاز به فوروارد پورت UDP 4569 بر روی NAT Gateway به سمت سرور را داشته باشید. اما در اجرای این سناریو با تنظیماتی که در بالا گفته شد نیازی نیست. اما اگر دو مورد Qualify  و Qualifyfreqok حذف شوند ، قطعا  باز کردن این پورت و Port Forwarding ضروری خواهد بود.

6 نظرات
  1. علی می گوید

    سلام و خسته نباشید
    چرا در توضیحات آخر سناریو فرمودین اگر ترانک از نوع IAX2 باشه نیاز به PORT FORWARDING نداره ولی در ترانک SIP نیازه؟

    1. نوید داریا می گوید

      سلام. ممنون از کامنت شما و سوال خیلی خوبتون. توی این سناریوی خاص نیاز به Port Forwarding وجود نداره. دلیلش هم اینه که با کانفیگی که نوشته شده پورت های مربوط به IAX2 خود به خود باز می مونه ( فقط جهت ترانک ) در واقع اگر Qualify=yes و Qualifyfreqok=25000 را از کانفیگ حذف کنید حتما در IAX2 هم بر اساس RFC 5456 نیاز به Port Forwarding خواهید داشت.

  2. مجتبی می گوید

    مهندس جان سلام ممنون از اموزش شما . فقط یک مورد . من در مورد پترن اول گیج شدم ..طبق الگوی شماره تهران (۵۰ تا ۵۹ ) اگر کاربر شیراز بخواد تهران رو بگیره .. میتونه مستقیم از پترن دوم استفاده کنه … و دیگه نیازی به پترن اول نداره ( برای داخلی ۲ رقمی )

    1. نوید داریا می گوید

      با سلام. از این که وب سایت تک تیک را جهت آموزش انتخاب نموده ایم بسیار سپاسگزاریم. بله. این امکان وجود دارد که بدون نیاز به خط اول پترن ، مسیر مشخص باشد. اما در صورتی که بخواهید Feature Code ها و Intercom را برای کاربران غیرفعال نمایید ، دیگر نمی توانید از پترن خط دوم استفاده نمایید. در این شرایط به راحتی برای غیرفعال شدن Intercom پترن دوم را پاک خواهید کردن و تنها از پترن اول استفاده می کنید. نکته دیگر اینکه تنظیماتی که در این مقاله گفته شده است مطابق با پیشنهاد ارائه شده در وب سایت رسمی فری پی بی اکس است و با توجه به محیط سازمان شما می توانید از پترن های ساده تر و بسیار متنوع تری استفاده نمایید. برای مثال این ترانک بدون پترن خط دوم و سوم هم به راحتی عمل می کند. یا محدوده های یکسان داخلی در دو سمت وجود داشته باشد ، شما نخواهید توانست از پترن عنوان شده استفاده نمایید.

      1. مجتبی می گوید

        ممنون . فقط مورد دیگه اینه ک نباید برای دوسمت Inbond Route تعریف بشه ؟ این outbond برای تماس خروجی به سمت های متقابل هست .. برای ورود تماس هم فکر کنم باید روت ورودی تعریف بشه ..

        1. نوید داریا می گوید

          خیر. نیازی به Inbound Route وجود ندارد. Inbound Route برای زمانی استفاده می شود که بخواهید کلیه تماس های ورودی به سرور سمت مقابل را به یک مسیر یکسان هدایت نمایید. برای مثال بخواهید همه آن ها را به IVR بفرستید. ( درواقع Outgoing Route سمت مقابل ، Incoming Route شما محسوب می شود. ) همچنین در زمان تعریف ترانک نیازی به انجام تنظیمات Incoming Setting نیز وجود ندارد. ( البته تنها در صورتی که کاملا مطابق این آموزش ترانک را پیکربندی کرده باشید و Flag مربوط به Intra-Company را همان طور که در Route Settings عنوان شده است فعال کرده باشید. )

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.