Product SiteDocumentation Site

11.8. Layanan Komunikasi Real-Time

Layanan Real-Time komunikasi (RTC) meliputi suara, video/webcam, pesan instan (IM), dan berbagi pakai desktop. Bab ini memberikan pengantar singkat tiga layanan yang diperlukan untuk mengoperasikan RTC, termasuk server TURN, server SIP, dan server XMPP. Rincian komprehensif tentang bagaimana untuk merencanakan, memasang, dan mengelola layanan ini tersedia dalam Panduan Ringkas Komunikasi Real-Time termasuk contoh spesifik untuk Debian.
SIP dan XMPP dapat menyediakan fungsionalitas yang sama. SIP sedikit lebih dikenal untuk suara dan video sementara XMPP secara tradisional dianggap sebagai protokol IM. Pada kenyataannya, keduanya dapat digunakan untuk tujuan ini. Untuk memaksimalkan pilihan konektivitas, disarankan untuk menjalankan keduanya secara paralel.
Layanan ini mengandalkan sertifikat X.509 untuk tujuan otentikasi dan kerahasiaan. Lihat Bagian 10.2, “setifikat X.509” untuk informasi lebih lanjut.

11.8.1. Pengaturan DNS untuk layanan RTC

RTC services require DNS SRV and NAPTR records. A sample configuration that can be placed in the zone file for falcot.com (see also Contoh 10.13, “Kutipan dari /etc/bind/db.falcot.com:
; server tempat semua akan dijalankan
server1            IN     A      198.51.100.19
server1            IN     AAAA   2001:DB8:1000:2000::19

; IPv4 only for TURN for now, some clients are buggy with IPv6
turn-server        IN     A      198.51.100.19

; IPv4 and IPv6 addresses for SIP
sip-proxy          IN     A      198.51.100.19
sip-proxy          IN     AAAA   2001:DB8:1000:2000::19

; IPv4 and IPv6 addresses for XMPP
xmpp-gw            IN     A      198.51.100.19
xmpp-gw            IN     AAAA   2001:DB8:1000:2000::19

; DNS SRV and NAPTR for STUN / TURN
_stun._udp  IN SRV    0 1 3467 turn-server.falcot.com.
_turn._udp  IN SRV    0 1 3467 turn-server.falcot.com.
@           IN NAPTR  10 0 "s" "RELAY:turn.udp" "" _turn._udp.falcot.com.

; DNS SRV and NAPTR records for SIP
_sips._tcp  IN SRV    0 1 5061 sip-proxy.falcot.com.
@           IN NAPTR  10 0 "s" "SIPS+D2T" "" _sips._tcp.falcot.com.

; DNS SRV records for XMPP Server and Client modes:
_xmpp-client._tcp  IN     SRV    5 0 5222 xmpp-gw.falcot.com.
_xmpp-server._tcp  IN     SRV    5 0 5269 xmpp-gw.falcot.com.

11.8.2. Server TURN

TURN adalah layanan yang membantu klien di belakang firewall dan router NAT untuk menemukan cara yang paling efisien untuk berkomunikasi dengan klien lain dan me-relay stream media jika tidak ditemukan path media yang langsung. Sangat dianjurkan untuk memasang server TURN sebelum salah satu layanan RTC lain ditawarkan kepada pengguna akhir.
TURN dan protokol ICE yang terkait adalah standar terbuka. Untuk memperoleh manfaat dari protokol-protokol ini, memaksimalkan konektivitas dan meminimalkan frustrasi, itu penting untuk memastikan bahwa semua perangkat lunak klien mendukung ICE dan TURN.
Agar algoritma ICE bekerja secara efektif, server harus memiliki dua alamat IPv4 publik.
Instal paket coturn dan sunting berkas konfigurasi /etc/turnserver.conf. Secara default, database SQLite dikonfigurasi di /var/db/turndb untuk pengaturan akun pengguna, tetapi PostgreSQL, MySQL, atau Redis dapat disiapkan jika diinginkan. Hal terpenting yang harus dilakukan adalah memasukkan alamat IP server.
The server can be started running turnserver from the coturn package. We want the server to be an automatically started system service. This is the default behavior using systemd. Only when using the older SysVinit you have to edit the /etc/default/coturn file like this:
#
# Uncomment it if you want to have the turnserver running as
# an automatic system service daemon
#
TURNSERVER_ENABLED=1
Secara default, server TURN menggunakan akses anonim. Kita harus menambahkan pengguna yang ingin kita gunakan:
# turnadmin -a -u roland -p secret_password -r falcot.com
# turnadmin -A -u admin -p secret_password
Kita menggunakan argumen -a untuk menambahkan pengguna normal dan -A untuk menambahkan pengguna admin.

11.8.3. Server Proksi SIP

Server proksi SIP mengelola koneksi SIP masuk dan keluar antara organisasi, penyedia trunking SIP, PBX SIP seperti Asterisk, telepon SIP, softphones berbasis SIP, dan aplikasi WebRTC.
Sangat dianjurkan untuk memasang dan mengkonfigurasi proksi SIP sebelum mencoba konfigurasi PBX SIP. Proksi SIP menormalkan banyak lalu lintas yang mencapai PBX dan menyediakan konektivitas dan ketahanan yang lebih besar.

11.8.3.1. Memasang proksi SIP

Install the kamailio package and the package for the database backend. The Falcot administrators chose MySQL, so they install kamailio-mysql-modules and mariadb-server. /etc/kamailio/kamctlrc is the configuration file for the control tools kamctl and kamdbctl. You need to edit and set the SIP_DOMAIN to your SIP service domain and set the DBENGINE to MySQL, another database backend can be used.
[...]
## your SIP domain
SIP_DOMAIN=sip.falcot.com

## chrooted directory
# CHROOT_DIR="/path/to/chrooted/directory"

## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, DBTEXT, or SQLITE
# by default none is loaded
#
# If you want to setup a database with kamdbctl, you must at least specify
# this parameter.
DBENGINE=MYSQL
[...]
Sekarang kita fokus pada berkas konfigurasi /etc/kamailio/kamailio.cfg. Falcot membutuhkan otentikasi pengguna dan lokasi pengguna yang persisten, sehingga mereka menambahkan perintah #!define berikut di bagian atas berkas itu:
#!KAMAILIO
#
# Kamailio (OpenSER) SIP Server v5.2 - default configuration script
#     - web: https://www.kamailio.org
#     - git: https://github.com/kamailio/kamailio
#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_USRLOCDB
[...]
Kamailio needs a database structure that we can create running kamdbctl create as root. Finally, we can add some users with kamctl.
# kamdbctl create
[...]
# kamctl add roland secret_password
Once everything is properly configured you can start or restart the service with systemctl restart kamailio, you can connect with a SIP client providing the IP address and the port (5090 is the default port). The users have the following id: roland@sip.falcot.com, and they can login using a client (see Bagian 13.9, “Perangkat lunak Komunikasi Real-Time”).

11.8.4. Server XMPP

Suatu server XMPP mengelola konektivitas antara pengguna XMPP lokal dan XMPP pengguna di domain lainnya di Internet.
prosody is a popular XMPP server that operates reliably on Debian servers.

11.8.4.1. Pasang server XMPP

Pasang paket prosody.
Tinjau berkas konfigurasi /etc/prosody/prosody.cfg.lua. Yang paling penting untuk dilakukan adalah memasukkan JID pengguna yang diizinkan untuk mengelola server.
admins = { "joe@falcot.com" }
Berkas konfigurasi individu juga diperlukan untuk setiap domain. Salin contoh dari /etc/prosody/conf.avail/example.com.cfg.lua dan gunakan sebagai titik awal. Berikut adalah falcot.com.cfg.lua:
VirtualHost "falcot.com"
        enabled = true
        ssl = {
                key = "/etc/ssl/private/falcot.com.key";
                certificate = "/etc/ssl/certs/falcot.com.pem";
                }

-- Set up a MUC (multi-user chat) room server on conference.example.com:
Component "conference.falcot.com" "muc"
Untuk mengaktifkan domain, harus ada symlink dari /etc/prosody/conf.d/. Buat dengan cara:
# ln -s /etc/prosody/conf.avail/falcot.com.cfg.lua /etc/prosody/conf.d/
Jalankan ulang layanan menggunakan konfigurasi baru.

11.8.4.2. Mengelola server XMPP

Some management operations can be performed using the prosodyctl command line utility. For example, to add the administrator account specified in /etc/prosody/prosody.cfg.lua:
# prosodyctl adduser joe@falcot.com
Lihat dokumentasi daring Prosody untuk informasi lebih lanjut tentang cara menyesuaikan konfigurasi.

11.8.5. Menjalankan layanan pada port 443

Beberapa administrator lebih suka untuk menjalankan semua layanan RTC mereka pada port 443. Ini membantu pengguna untuk menyambung dari lokasi terpencil seperti Hotel dan Bandara dimana port lain dapat diblokir atau lalu lintas Internet disalurkan melalui server proksi HTTP.
Untuk menggunakan strategi ini, setiap layanan (SIP, XMPP, dan TURN) membutuhkan alamat-alamat IP yang berbeda. Semua layanan masih bisa diwadahi pada host yang sama karena Linux mendukung beberapa alamat IP pada satu host. Nomor port, 443, harus ditentukan di berkas konfigurasi untuk setiap proses dan juga di record SRV DNS.

11.8.6. Menambahkan WebRTC

Falcot ingin membiarkan pelanggan membuat panggilan telepon secara langsung dari situs web. Para administrator Falcot juga ingin menggunakan WebRTC sebagai bagian dari rencana pemulihan bencana, sehingga staf dapat menggunakan peramban web di rumah untuk log masuk ke sistem telepon perusahaan dan bekerja secara normal dalam keadaan darurat.
WebRTC adalah sebuah teknologi yang berkembang pesat dan sangat penting untuk menggunakan paket dari distribusi Testing. Opsi lain adalah dengan mengompail perangkat lunaknya.
WebRTC menggunakan API sederhana untuk menyediakan RTC ke peramban dan aplikasi seluler, ini adalah perangkat lunak gratis dan sedang dikembangkan oleh Google.
A very flexible approach is using GStreamer's WebRTC implementation. It enables pipeline-based multimedia applications, which allows developing interesting and highly efficient applications. A good starting point is the following demo by Centricular, the main company that is developing it:
Situs-situs web klik-untuk-memanggil yang lebih lanjut biasanya menggunakan script sisi server untuk menghasilkan berkas config.js secara dinamis. Kode sumber DruCall menunjukkan bagaimana melakukan ini dengan PHP.
Bab ini mencuplik hanya sebagian kecil dari perangkat lunak server yang tersedia; namun, sebagian besar layanan jaringan umum telah digambarkan. Sekarang saatnya untuk bab yang bahkan lebih teknis: kita akan pergi ke detail yang lebih untuk beberapa konsep, menggambarkan penyebaran besar-besaran, dan virtualisasi.