سازمانی که دفتر مرکزی و شعبه دارد، معمولاً در هر محل یک مرکز تلفن ایزابل راه می‌اندازد. اگر این دو سرور به هم وصل نباشند، همکاران برای صحبت با هم باید از خط شهری استفاده کنند. با یک ترانک بین دو ایزابل، داخلی‌های دو طرف بدون هزینه و فقط با گرفتن شمارهٔ داخلی با هم صحبت می‌کنند.

سناریوی این مقاله

  • ایزابل A در دفتر مرکزی، با آدرس 192.168.10.10 و داخلی‌های 1XX (مثلاً ۱۰۱ تا ۱۹۹)
  • ایزابل B در شعبه، با آدرس 192.168.20.10 و داخلی‌های 2XX
  • ارتباط شبکه بین دو محل برقرار است؛ ترجیحاً با VPN یا لینک اختصاصی

شرط مهم: شمارهٔ داخلی‌های دو سرور نباید با هم تداخل داشته باشد. اگر هر دو سرور داخلی ۱۰۱ داشته باشند، مسیریابی ممکن نیست. قبل از شروع، طرح شماره‌گذاری را مشخص کنید.

IAX2 یا SIP؟

ترانک بین دو ایزابل را هم با SIP و هم با IAX2 می‌شود ساخت. در این مقاله IAX2 را انتخاب کرده‌ایم، چون:

  • صدا و سیگنال فقط از یک پورت (UDP 4569) عبور می‌کند و تنظیم فایروال و NAT ساده‌تر است.
  • پروتکل بومی Asterisk است و برای اتصال دو سرور Asterisk طراحی شده.
  • با گزینهٔ trunk=yes چند تماس هم‌زمان در یک جریان ترکیب می‌شوند و پهنای باند کمتری مصرف می‌شود.

اگر یکی از دو طرف ایزابل نیست یا سیاست شبکهٔ شما SIP است، همین منطق با SIP هم قابل اجراست.

قدم اول: ساخت ترانک روی ایزابل A

از منوی PBX وارد PBX Configuration و سپس Trunks شوید و Add IAX2 Trunk را بزنید.

  • Trunk Name: to-branch
  • Outbound CallerID: خالی بماند تا شمارهٔ داخلی تماس‌گیرنده به طرف مقابل برسد.

در بخش Outgoing Settings:

  • Trunk Name: branch
  • PEER Details:
host=192.168.20.10
username=hq
secret=Str0ng-Shared-Secret
type=peer
qualify=yes
trunk=yes
disallow=all
allow=alaw&ulaw

در بخش Incoming Settings:

  • USER Context: branch (همان نامی که سرور B به‌عنوان username می‌فرستد)
  • USER Details:
secret=Str0ng-Shared-Secret
type=user
context=from-internal
disallow=all
allow=alaw&ulaw

Submit را بزنید.

قدم دوم: ساخت ترانک روی ایزابل B

همین کار را روی سرور شعبه، با جای نام‌ها و آدرس برعکس، انجام دهید:

  • Trunk Name: to-hq
  • Outgoing Settings → Trunk Name: hq
  • PEER Details:
host=192.168.10.10
username=branch
secret=Str0ng-Shared-Secret
type=peer
qualify=yes
trunk=yes
disallow=all
allow=alaw&ulaw
  • Incoming Settings → USER Context: hq
  • USER Details:
secret=Str0ng-Shared-Secret
type=user
context=from-internal
disallow=all
allow=alaw&ulaw

secret در هر دو سرور باید دقیقاً یکی باشد. یک رمز طولانی و تصادفی انتخاب کنید.

قدم سوم: مسیر خروجی (Outbound Route)

ترانک به‌تنهایی کافی نیست؛ باید به ایزابل بگویید کدام شماره‌ها را به ترانک بفرستد.

روی ایزابل A، در Outbound Routes یک مسیر جدید بسازید:

  • Route Name: to-branch
  • Dial Patterns: در فیلد match pattern مقدار 2XX را وارد کنید.
  • Trunk Sequence: ترانک to-branch

روی ایزابل B هم مسیری با الگوی 1XX و ترانک to-hq بسازید.

مسیر داخلی بین شعب را در فهرست Outbound Routes بالاتر از مسیرهای خط شهری قرار دهید تا اول بررسی شود. در پایان روی هر دو سرور Apply Config را بزنید.

قدم چهارم: فایروال

اگر فایروال ایزابل (Security → Firewall) یا فایروال شبکه فعال است، پورت UDP 4569 را فقط برای آدرس سرور مقابل باز کنید، نه برای همهٔ اینترنت.

اگر دو محل از طریق اینترنت به هم وصل‌اند، ترانک را روی یک VPN بین دو روتر (مثلاً IPsec یا WireGuard روی میکروتیک) راه بیندازید و پورت IAX2 را روی اینترنت باز نکنید.

قدم پنجم: آزمایش و عیب‌یابی

روی هر سرور وارد خط فرمان شوید و کنسول Asterisk را باز کنید:

asterisk -rvvv

وضعیت ترانک را ببینید:

iax2 show peers

اگر وضعیت ترانک OK و زمان پاسخ (بر حسب میلی‌ثانیه) نمایش داده شود، ارتباط برقرار است. حالا از داخلی 101 شمارهٔ 201 را بگیرید.

مشکلات رایج

  • وضعیت UNREACHABLE: ارتباط شبکه یا پورت 4569 بسته است. با ping و بررسی فایروال شروع کنید.
  • تماس برقرار می‌شود ولی قطع می‌شود یا خطای احراز هویت می‌دهد: username، USER Context یا secret دو طرف با هم نمی‌خواند.
  • یک‌طرفه بودن صدا: در IAX2 کمتر پیش می‌آید؛ اگر پیش آمد، NAT و فایروال بین دو محل را بررسی کنید.
  • شماره‌گیری به ترانک نمی‌رود: الگوی Outbound Route را بررسی کنید و مطمئن شوید مسیر دیگری با الگوی کلی‌تر بالاتر از آن نیست.

نکتهٔ امنیتی دربارهٔ context

در این مثال context=from-internal گذاشتیم، یعنی تماسی که از سرور مقابل می‌آید همان دسترسی یک داخلی محلی را دارد، از جمله دسترسی به خطوط شهری. این برای دو دفتر یک سازمان که به هم اعتماد کامل دارند و از طریق VPN به هم وصل‌اند رایج است. اگر نمی‌خواهید شعبه از خطوط شهری دفتر مرکزی تماس بگیرد، به‌جای from-internal از from-trunk استفاده کنید و برای داخلی‌ها Inbound Route بسازید، یا یک context سفارشی تعریف کنید.

جمع‌بندی

با دو ترانک IAX2، دو Outbound Route و یک قانون فایروال، دو سرور ایزابل مثل یک مرکز تلفن واحد کار می‌کنند. همین روش برای سه شعبه یا بیشتر هم قابل گسترش است؛ فقط کافی است طرح شماره‌گذاری از اول درست چیده شده باشد.

  • Issabel
  • Asterisk
  • IAX2
  • Trunk
  • VoIP