اپراتور VoIP یک برگه فرستاده است: نام کاربری، رمز، آدرس سرور و شاید عبارت «احراز با IP». ترانک SIP شما از کدام نوع است، ثبت‌نامی یا بر پایه IP؟ این ترانک داخلی‌های ایزابل را از راه اینترنت به شبکه تلفن عمومی می‌رساند. نوعش که روشن شود، فیلدهای ایزابل هم معلوم می‌شوند.

  • اگر نام کاربری و رمز گرفته‌اید ← ترانک ثبت‌نامی است و Register String می‌خواهد.
  • اگر اپراتور فقط IP عمومی سرور را خواسته ← ترانک بر پایه IP است.
  • اگر chan_sip وضعیت No Authentication نشان می‌دهد ← اپراتور رمز را با پاسخ 403 رد کرده است.
  • اگر PJSIP وضعیت Rejected نشان می‌دهد ← لاگ را بخوانید؛ هم رمز ردشده و هم بی‌جوابی (408) همین کلمه را می‌سازند.
  • اگر صدا یک‌طرفه است ← سراغ تنظیم NAT و بازه RTP بروید.

💡 هویت، مقصد، کدک

ترانک حسابی است که سانترال شما روی سرور اپراتور دارد.
✅ اول نوع احراز هویت را از برگه پیدا کنید. بقیه فیلدها از همان پیروی می‌کنند.

سطر رمز برگه اپراتور نوع ترانک را لو می‌دهد. سرور ایزابل، داخلی‌ها و مسیر خروجی را راهنمای نصب ایزابل روی سرور مجازی می‌سازد و آن مسیر خروجی تا ترانک پر نشود، تماسی بیرون نمی‌فرستد.

ترانک sip، نمودار مسیر تماس از داخلی‌های ایزابل تا سرور اپراتور VoIP روی اینترنت

ترانک SIP خط تلفن را به یک حساب روی شبکه تبدیل می‌کند

خط آنالوگ جفت سیمی است که کارت سخت‌افزاری DAHDI می‌خواهد. ترانک همان خط را به حسابی روی سرور اپراتور تبدیل می‌کند: سیگنالینگ با SIP، صدا با RTP. سقف تماس هم‌زمان را قرارداد و پهنای باند تعیین می‌کنند.

هویت، مقصد و اندازه بار

ترانک برای هر تماس همان سه جوابی را می‌خواهد که بارفروش میدان تره‌بار پیش از بار زدن کامیون می‌گیرد: خریدار کیست، بار به کدام مغازه برود، در چه جعبه‌ای. هویت با ثبت‌نام یا IP ثابت می‌شود. مقصد، آدرس سرور اپراتور است. جعبه همان کدک.

ثبت‌نامی یا بر پایه IP

در نوع ثبت‌نامی، ایزابل پیام REGISTER می‌فرستد و هویتش را با Username و Password برگه ثابت می‌کند. نوع بر پایه IP رمزی ندارد. اپراتور IP عمومی سرور شما را در فهرست مجاز می‌گذارد. ماژول res_pjsip_endpoint_identifier_ip تماس ورودی را از روی IP به endpoint درست می‌سپارد.

درایور کانال در ایزابل

ایزابل 5 هر دو درایور Asterisk را پشتیبانی می‌کند: chan_sip قدیمی و PJSIP که در نسخه‌های جدید Asterisk پیش‌فرض است. مستندات Issabel ترکیب این دو را توصیه نمی‌کند، چون هر دو نمی‌توانند پورت 5060 را بگیرند. ترانک را با درایور داخلی‌ها بسازید. منوی ترانک به گفته صفحه ترانک‌ها در مستندات Issabel در PBX / PBX Configuration / Connectivity / Trunks است و هر دو گزینه SIP و PJSIP را دارد.

ترانک SIP خط تلفن را به یک حساب روی شبکه تبدیل می‌کند

نوع ترانک را از روی برگه اپراتور پیدا کنید

برگه‌ای که Username و Password دارد، ترانک SIP ثبت‌نامی به شما داده است. برگه‌ای که فقط IP سرور اپراتور را می‌دهد و IP عمومی شما را می‌خواهد، نوع بر پایه IP است. جدول زیر هر سطر برگه را به فیلد ایزابل می‌برد.

سطر برگه اپراتورفرم SIP (chan_sip)فرم PJSIP
نام کاربریفیلد defaultuser= و بخش اول Register Stringفیلد Username
رمزفیلد secret=فیلد Secret
آدرس و پورت سرورفیلدهای host= و port=فیلدهای SIP Server و SIP Server Port
شناسه سرآیند Fromفیلد fromuser=گزینه from_user در endpoint
آدرس IP اپراتور (نوع IP)فیلد host= همراه insecure=port,inviteفیلد SIP Server، با Authentication و Registration روی None

ثبت‌نامی با chan_sip

خط‌های زیر به PEER Details می‌روند و مقدارها نمونه‌اند. قالب‌های قدیمی username دارند؛ Asterisk آن را به نفع defaultuser منسوخ کرده است. مقدار context=from-trunk را قالب پیش‌فرض ایزابل در USER Details می‌گذارد؛ بدون context، تماس ورودی به کانتکست عمومی می‌افتد.

type=peer
host=sip.operator.example
port=5060
defaultuser=1000123
secret=OPERATOR_PASSWORD
fromuser=1000123
context=from-trunk
qualify=yes
insecure=port,invite
disallow=all
allow=alaw

قالب Register String در نمونه sip.conf این است: نام کاربری، دونقطه، رمز، @ و آدرس سرور.

1000123:OPERATOR_PASSWORD@sip.operator.example

بر پایه IP و فرم PJSIP

در نوع IP، Register String خالی می‌ماند و insecure=port,invite یعنی شناختن peer از روی IP بدون تطبیق پورت و بدون احراز هویت INVITE ورودی.

type=peer
host=198.51.100.20
context=from-trunk
insecure=port,invite
disallow=all
allow=alaw

فرم PJSIP ایزابل دو انتخاب‌گر دارد: Authentication با گزینه‌های Outbound، Inbound، Both و None، و Registration با Send، Receive و None. برای نوع ثبت‌نامی، Outbound و Send را بزنید. برای نوع IP هر دو را روی None بگذارید تا Username و Secret خالی بمانند. فیلد Context پیش‌فرض from-pstn دارد. کدک‌ها از فهرست Codecs همین فرم انتخاب می‌شوند. پشت فرم، شش بخش نمونه ترانک در مستندات Asterisk ساخته می‌شود، از transport تا identify. بعد از ذخیره، تغییرات را در پنل اعمال کنید.

کدک و پهنای باند هر تماس هم‌زمان

کدک تعیین می‌کند هر تماس چند کیلوبیت در ثانیه بخورد. ترانک SIP به تعداد تماس‌های هم‌زمان همین مقدار را مصرف می‌کند. طبق جدول پهنای باند سیسکو (به‌روزرسانی دسامبر 2023)، G.711 با بسته‌های ۲۰ میلی‌ثانیه‌ای روی اترنت ۸۷٫۲ کیلوبیت در ثانیه می‌خواهد و G.729 حدود ۳۱٫۲ کیلوبیت.

جمع پهنای باند برای ده تماس

کدکنرخ کدکهر تماس روی اترنتده تماس هم‌زمان
G.711۶۴ کیلوبیت۸۷٫۲ کیلوبیت۸۷۲ کیلوبیت
G.729۸ کیلوبیت۳۱٫۲ کیلوبیت۳۱۲ کیلوبیت

فاصله نرخ کدک با عدد نهایی سرآیندهاست: ۴۰ بایت IP/UDP/RTP و ۱۸ بایت اترنت روی هر بسته. هر جریان RTP یک‌طرفه است. این مقدار را برای آپلود و دانلود جدا حساب کنید. جدول بالا فقط پهنای باند را می‌سنجد؛ کیفیت صدای هر کدک را راهنمای VoIP و جدول کدک‌ها کنار هم می‌گذارد.

💡 دو گونه G.711: alaw و ulaw

کدک G.711 دو قانون فشرده‌سازی دارد. به نوشته ویکی‌پدیا، μ-law بیشتر در آمریکای شمالی و ژاپن به کار می‌رود و A-law در بیشتر کشورهای دیگر. نام این دو در Asterisk alaw و ulaw است. از اپراتور بپرسید کدام را می‌پذیرد؛ بدون کدک مشترک تماسی برقرار نمی‌شود.

ثبت نشدن ترانک به هویت یا دسترسی برمی‌گردد، صدای یک‌طرفه به NAT

ثبت نشدن ترانک به هویت یا دسترسی برمی‌گردد، صدای یک‌طرفه به NAT

وقتی ترانک SIP ثبت نمی‌شود، اول وضعیت را در CLI ببینید. هر کلمه وضعیت گاهی چند علت دارد. فرمان درایور خودتان را از shell بزنید:

asterisk -rx "pjsip show registrations"
asterisk -rx "pjsip show contacts"
asterisk -rx "sip show registry"
asterisk -rx "sip show peers"
کلمه در CLIدرایورمعنی در کد Asterisk 18اول این را ببینید
وضعیت Auth. Sentفقط chan_sipدرخواست با رمز رفته و هنوز پذیرفته نشدهنام کاربری و رمز
وضعیت No Authenticationفقط chan_sipپاسخ 403؛ رمز یا نام کاربری رد شدهفیلدهای defaultuser و secret
وضعیت Rejectedفقط chan_sipپاسخ‌هایی نمونه 404 یا 400؛ حساب یا آدرس شناخته نشدهنام کاربری و دامنه در Register String
وضعیت Rejectedفقط PJSIPپاسخ ردکننده (403) یا موقت (408، 5xx)خط هشدار لاگ
وضعیت Request Sentفقط chan_sipدرخواست REGISTER بی‌جواب ماندهمقدار host و پورت
وضعیت UNREACHABLEفقط chan_sipپاسخ qualify نرسیدهمقدار host و ثبت IP شما نزد اپراتور
وضعیت Unavailفقط PJSIPپاسخ OPTIONS برای contact نرسیدهگزینه qualify_frequency و contact در aor

در نوع IP خالی بودن فهرست registrations طبیعی است.

رمز اشتباه و بی‌جوابی را از لاگ جدا کنید

در chan_sip رمز اشتباه به پاسخ 403 و وضعیت No Authentication می‌رسد و لاگ عبارت Forbidden - wrong password را می‌نویسد. در PJSIP هر دو حالت زیر یک کلمه Rejected جمع می‌شوند. لاگ آن‌ها را جدا می‌کند. خط Temporal response '408' یعنی جوابی نیامده یا سرور اپراتور گرفتار است. خط Fatal response '403' یا 403 Forbidden fatal response یعنی هویت رد شده است. بعضی اپراتورها شناسه را در سرآیند From هم می‌خواهند. fromuser یا from_user را با نام کاربری یکی کنید.

صدای یک‌طرفه و تنظیم NAT

اگر کارت شبکه سرور خودش IP عمومی دارد، تنظیم NAT لازم نیست. با IP خصوصی، Asterisk باید آدرس بیرونی و شبکه داخلی را بداند. در chan_sip، externaddr (نام قدیمی‌ترش externip) و localnet این را می‌گویند. نمونه sip.conf هشدار می‌دهد بدون localnet آدرس بیرونی درست تنظیم نمی‌شود. در ایزابل این دو در صفحه Settings / Asterisk SIP Settings، بخش NAT Settings، با نام External IP و Local Networks دیده می‌شوند. طبق مستندات NAT در PJSIP، معادل PJSIP در بخش transport است: external_media_address و external_signaling_address و local_net.

⚠️ تماس وصل است ولی یک طرف صدا ندارد

دو علت را اول بررسی کنید: آدرس خصوصی سرور در SDP رفته، یا RTP به پورتی می‌رسد که فایروال خود سرور بسته است. اول External IP یا external_media_address را با IP عمومی واقعی سرور مقایسه کنید.

بازه پورت RTP

سرور Asterisk صدا را روی بازه‌ای از پورت‌های UDP می‌فرستد که rtpstart و rtpend تعیینش می‌کنند. در ایزابل فیلد RTP Port Ranges در همان صفحه Asterisk SIP Settings است و پیش‌فرض 10000 تا 20000 دارد. مقدار فعلی را با rtp show settings ببینید. همین بازه را در فایروال خود سرور باز کنید. پورت SIP را فقط برای IP اپراتور باز بگذارید. امن‌سازی کامل سانترال بحث جداگانه‌ای است.

خط پشتیبانی اپراتور برای پیگیری، IP عمومی سرور و خط وضعیت ترانک در CLI را لازم دارد. هر دو را پیش از تماس با پشتیبانی کنار دستتان بگذارید تا وقت مکالمه به پیدا کردن IP نگذرد.

ایزابل از chan_sip استفاده می‌کند یا PJSIP؟

ایزابل 5 هر دو را دارد. مستندات Issabel ترکیب دو درایور را در یک سیستم توصیه نمی‌کند، چون هر دو نمی‌توانند پورت 5060 را بگیرند.

نه. در chan_sip این فیلد خالی می‌ماند و در فرم PJSIP، Registration و Authentication روی None می‌روند.

مستندات Issabel دو جا را نشان می‌دهد: مسیریابی DID و تنظیم‌های ورودی خود ترانک. در chan_sip نبودن context هم تماس را به کانتکست عمومی می‌برد.

پورت اپراتور در مستندات Issabel معمولاً 5060 است، مگر خودش عدد دیگری بدهد. پورتی که ایزابل روی آن گوش می‌دهد جداست و در فیلد Bind Port صفحه Asterisk SIP Settings تنظیم می‌شود.

در جدول سیسکو، ده تماس G.711 حدود ۸۷۲ و ده تماس G.729 حدود ۳۱۲ کیلوبیت در ثانیه می‌خواهد. چون هر جریان RTP یک‌طرفه است، این عدد را برای هر جهت جدا حساب کنید.

کدک پذیرفته‌شده اپراتور را بگذارید. اگر هر دو مجازند، G.729 با ۸ کیلوبیت پهنای باند کمتری از ۶۴ کیلوبیت G.711 می‌گیرد.

آدرس IP کارت شبکه را با IP عمومی‌ای که اپراتور می‌بیند مقایسه کنید. اگر یکی‌اند، گزینه Public IP در NAT Settings کافی است.

جمع‌بندی؛ برگه اپراتور را با نوع ترانک SIP بخوانید
نام کاربری و رمز یعنی Register String و PEER Details با defaultuser، secret و context=from-trunk. در PJSIP همین برگه یعنی Authentication روی Outbound و Registration روی Send. فقط IP یعنی host با IP اپراتور و insecure=port,invite، یا در PJSIP هر دو انتخاب‌گر روی None. هر تماس G.711 حدود ۸۷٫۲ و هر تماس G.729 حدود ۳۱٫۲ کیلوبیت در هر جهت می‌خواهد. کلمه CLI را با لاگ بخوانید: No Authentication در chan_sip یعنی رمز. Rejected در PJSIP دو معنی دارد: رمز یا بی‌جوابی. صدای یک‌طرفه را با External IP و بازه RTP بررسی کنید.

🚀 سانترالی که ترانک به آن وصل شود

برگه اپراتور به کار سانترالی می‌آید که داخلی‌هایش از قبل با هم حرف می‌زنند. چنین سانترالی روی سرور مجازی بالا می‌آید.

ترانک شما همین حالا در خروجی pjsip show registrations یا sip show registry کدام وضعیت را نشان می‌دهد؟

منابع

وب داده
وب داده

جدید ترین مطالب آموزشی و کاربردی را در اینجا بخوانید !
ما با بهره‌گیری از دانش روز و تجربه متخصصان حوزه فناوری، مجموعه‌ای از آموزش‌های کاربردی و مقالات تخصصی را گردآوری کرده‌ایم که هر یک، پاسخی دقیق به پرسش‌های شماست. ؛ از مفاهیم پایه تا پیچیده‌ترین تکنیک‌های حرفه‌ای. اینجا، دانش با زبانی ساده اما عمیق در اختیار شما قرار می‌گیرد.

مقاله‌ها: 279
پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *