
به اشتراک بگذارید

به اشتراک بگذارید
اپراتور VoIP یک برگه فرستاده است: نام کاربری، رمز، آدرس سرور و شاید عبارت «احراز با IP». ترانک SIP شما از کدام نوع است، ثبتنامی یا بر پایه IP؟ این ترانک داخلیهای ایزابل را از راه اینترنت به شبکه تلفن عمومی میرساند. نوعش که روشن شود، فیلدهای ایزابل هم معلوم میشوند.
💡 هویت، مقصد، کدک
ترانک حسابی است که سانترال شما روی سرور اپراتور دارد.
✅ اول نوع احراز هویت را از برگه پیدا کنید. بقیه فیلدها از همان پیروی میکنند.
سطر رمز برگه اپراتور نوع ترانک را لو میدهد. سرور ایزابل، داخلیها و مسیر خروجی را راهنمای نصب ایزابل روی سرور مجازی میسازد و آن مسیر خروجی تا ترانک پر نشود، تماسی بیرون نمیفرستد.
📌 برگه اپراتور، فیلد به فیلد
◀️ خط تلفن بهشکل حساب روی شبکه
◀️ تشخیص نوع ترانک از برگه
◀️ کدک و پهنای باند
◀️ خطای ثبت و تنظیم NAT

خط آنالوگ جفت سیمی است که کارت سختافزاری DAHDI میخواهد. ترانک همان خط را به حسابی روی سرور اپراتور تبدیل میکند: سیگنالینگ با SIP، صدا با RTP. سقف تماس همزمان را قرارداد و پهنای باند تعیین میکنند.
ترانک برای هر تماس همان سه جوابی را میخواهد که بارفروش میدان ترهبار پیش از بار زدن کامیون میگیرد: خریدار کیست، بار به کدام مغازه برود، در چه جعبهای. هویت با ثبتنام یا 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 را دارد.

برگهای که 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 |
خطهای زیر به 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، 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 است. از اپراتور بپرسید کدام را میپذیرد؛ بدون کدک مشترک تماسی برقرار نمیشود.

وقتی ترانک 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 را با نام کاربری یکی کنید.
اگر کارت شبکه سرور خودش 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 عمومی واقعی سرور مقایسه کنید.
سرور Asterisk صدا را روی بازهای از پورتهای UDP میفرستد که rtpstart و rtpend تعیینش میکنند. در ایزابل فیلد RTP Port Ranges در همان صفحه Asterisk SIP Settings است و پیشفرض 10000 تا 20000 دارد. مقدار فعلی را با rtp show settings ببینید. همین بازه را در فایروال خود سرور باز کنید. پورت SIP را فقط برای IP اپراتور باز بگذارید. امنسازی کامل سانترال بحث جداگانهای است.
خط پشتیبانی اپراتور برای پیگیری، IP عمومی سرور و خط وضعیت ترانک در CLI را لازم دارد. هر دو را پیش از تماس با پشتیبانی کنار دستتان بگذارید تا وقت مکالمه به پیدا کردن IP نگذرد.
ایزابل 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 کدام وضعیت را نشان میدهد؟
منابع