راه اندازی WebRTC در استریسک

نصب و راه اندازی WebRTC در استریسک

برای راه اندازی این سرویس ابتدا نیاز به نصب چند ماژول بر روی استریسک داریم. این ماژول ها عبارتند از :

· res_crypto

· res_http_websocket

· res_pjsip_transport_websocket

برای بهبود در کیفیت صدا نصب کدک Opus نیز توصیه می گردد. البته در صورت عدم نصب از کدک های دیگر می توان بهره برد که کیفیت قابل قبولی به شما ارائه میدهد.
کدک های پشتیبانی شونده با مرورگرهای مختلف به شرح زیر می باشند:

video codecs:

Codec Browser
VP9 Chrome (48+), Firefox
VP8 Chrome, Edge, Firefox, Safari (12.1+)
AVC / H.264 Chrome (52+), Edge, Firefox, Safari

audio codecs:

codec Browser
G.722 Chrome, Firefox, Safari
iLBC Chrome, Safari
iSAC Chrome, Safari
Opus Chrome, Edge, Firefox, Safari
G.711 PCM(A-law) Chrome, Firefox, Safari
G.711 PCM(U-law) Chrome, Firefox, Safari

برای بررسی ماژول های نصب شده بر روی استریسک می توانید از دستور زیر استفاده فرمایید:

ls -w 1 /usr/lib/asterisk/modules/{crypto,websocket,opus}

در صورتی که خروجی به صورت زیر بود یعنی ماژول های مورد نیاز نصب شده است

/usr/lib/asterisk/modules/codec_opus.so
/usr/lib/asterisk/modules/res_crypto.so
/usr/lib/asterisk/modules/res_format_attr_opus.so
/usr/lib/asterisk/modules/res_http_websocket.so
/usr/lib/asterisk/modules/res_pjsip_transport_websocket.so

مرحله دوم بررسی load بودن ماژول ها در استریسک:

asterisk -rx “module show like crypto”
asterisk -rx “module show like websocket”
asterisk -rx “module show like opus”

در صورتیکه خروجی دستورات وارد شده به صورت زیر بودند ماژول ها به شکل صحیحی راه اندازی شده اند:

نکته: در صورتیکه هر یک از ماژول ها نصب نشده بودند،می توانید با استفاده از menuselect استریسک آن را نصب فرمایید.

مرحله سوم ایجاد گواهینامه certificate

ابتدا فولدر keys را ایجاد می کنیم.

mkdir /etc/asterisk/keys

سپس با استفاده از دستور زیر فایل های مربوطه را ایجاد می نماییم:

./ast_tls_cert -C pbx.example.com -O “My Super Company” -b 2048 -d /etc/asterisk/keys

با استفاده از ast_tls_cert در داخل خود استریسک می توان اقدام به ایجاد این گواهینامه کرد.

-C : ipaddress or DNS name
-O : نام شرکت
-d : آدرس محل ذخیره keys

در ادامه با تایپ دستور زیر از ایجاد فایل ها اطمینان حاصل فرمایید:

ls -w 1 /etc/asterisk/keys

خروجی صحیح به صورت زیر است:

asterisk.crt
asterisk.csr
asterisk.key
asterisk.pem
ca.cfg
ca.crt
ca.key
tmp.cfg

پیکر بندی استریسک

در اینجا ابتدا فایل http.conf را به صورت زیر ویرایش می کنیم (etc/asterisk/http.conf):

[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
tlsenable=yes
tlsbindaddr=0.0.0.0:8089
tlscertfile=/etc/asterisk/keys/asterisk.pem

سپس سرویس استریسک را reset کرده و با استفاده از دستور زیر وضعیت پورت را بررسی کنید:

netstat -an | grep 8089

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

tcp 0 0 0.0.0.0:8089 0.0.0.0:* LISTEN

در آخرین مرحله نیز می توانید داخلی ها را در فایل sip.conf یا pjsip.conf به صورت زیر تعریف کنید:

SIP
sip.conf====================

[general]
udpbindaddr=0.0.0.0:5060
realm=123.123.123.123 ;replace with your Asterisk server public IP address or host
transport=udp,ws,wss

[199]
host=dynamic
secret=199
context=default
type=friend
encryption=yes
avpf=yes
force_avp=yes
icesupport=yes
directmedia=no
disallow=all
allow=opus
allow=ulaw
allow=h264
allow=vp8,vp9
dtlsenable=yes
dtlsverify=fingerprint
dtlscertfile=/etc/asterisk/keys/asterisk.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass
rtcp_mux=yes

PJSIP
pjsip.conf==================

[transport-wss]
type=transport
protocol=wss
bind=0.0.0.0
; All other transport parameters are ignored for wss transports.

[201]
type=aor
max_contacts=5
remove_existing=yes

[201]
type=auth
auth_type=userpass
username=201
password=201 ; This is a completely insecure password. Do NOT expose this
; system to the Internet without utilizing a better password.

[201]
type=endpoint
aors=201
auth=201
;dtls_auto_generate_cert=yes
webrtc=yes
use_avpf=yes
media_encryption=dtls
dtls_ca_file=/etc/asterisk/keys/ca.crt
dtls_cert_file=/etc/asterisk/keys/asterisk.pem
dtls_verify=fingerprint
dtls_setup=actpass
ice_support=yes
media_use_received_transport=yes
rtcp_mux=yes
context=default
disallow=all
allow=opus
allow=ulaw
allow=h264
allow=vp8,vp9

در نهایت می توانید داخلی مد نظر را بر روی یک کلاینت webrtc تعریف کنید.

در زیر مسیر کلاینتی جهت تست ارائه می گردد:
https://www.doubango.org/sipml5/call.htm

دو نکته قابل توجه:

۱- در مواردی با ایجاد گواهینامه به شکل فوق الذکر با مشکلاتی مواجه خواهید شد که می توانید از طریق زیر نسبت به ایجاد گواهینامه اقدام نمایید.

ایجاد گواهینامه با استفاده از certbot
در ابتدا در صورت عدم نصب certbot آن را نصب می کنیم.

apt install certbot python-certbot-apache
add-apt-repository ppa:certbot/certbot

سپس با دستور زیر گواهینامه را ایجاد می کنیم:

certbot --apache -d your domain

و در نهایت فایل های ایجاد شده را به محل پیش فرض استریسک انتقال دهید.

cat /etc/letsencrypt/live/your domain/privkey.pem >> /etc/asterisk/keys/asterisk.pem
cat /etc/letsencrypt/live/your domain/fullchain.pem >> /etc/asterisk/keys/asterisk.pem

۲- در مواردی احتمالا با فعال کردن پورت WSS با مشکل مواجه خواهید شد، با دستورات زیر مرتفع خواهد شد.
(البته این موارد در ابتدای نصب استریسک باید اعمال شوند)
sudo groupadd asterisk
sudo useradd -r -d /var/lib/asterisk -g asterisk asterisk
sudo usermod -aG audio,dialout asterisk
sudo chown -R asterisk.asterisk /etc/asterisk
sudo chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
sudo chown -R asterisk.asterisk /usr/lib/asterisk

3 Likes