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

Layanan RTC memerlukan record DNS SRV dan NAPTR. Suatu contoh konfigurasi yang dapat ditempatkan dalam berkas zona untuk falcot.com (lihat juga 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.
Server dapat dimulai dengan menjalankan turnserver dari paket coturn. Kami ingin server menjadi layanan sistem yang dimulai secara otomatis. Ini adalah perilaku baku menggunakan systemd. Hanya ketika menggunakan SysVinit yang lebih lama Anda harus menyunting berkas /etc/default/coturn seperti ini:
#
# 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

Instal paket kamailio dan paket untuk backend basis data. Administrator Falcot memilih MySQL, jadi mereka memasang kamailio-mysql-modules dan mariadb-server. /etc/kamailio/kamctlrc adalah berkas konfigurasi untuk alat kontrol kamctl dan kamdbctl. Anda perlu menyunting dan menyetel SIP_DOMAIN ke domain layanan SIP Anda dan menyetel DBENGINE ke MySQL, backend basis data lain dapat digunakan.
[...]
## 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 membutuhkan struktur basis data yang dapat kita buat dengan menjalankan kamdbctl create sebagai root. Akhirnya, kita dapat menambahkan beberapa pengguna dengan kamctl.
# kamdbctl create
[...]
# kamctl add roland secret_password
Setelah semuanya dikonfigurasi dengan benar, Anda dapat memulai atau memulai ulang layanan dengan systemctl restart kamailio, Anda dapat terhubung dengan klien SIP yang memberikan alamat IP dan port (5090 adalah port baku). Pengguna memiliki id berikut: roland@sip.falcot.com, dan mereka dapat login menggunakan suatu klien (lihat 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 adalah server XMPP populer yang beroperasi dengan andal di server Debian.

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

Beberapa operasi manajemen dapat dilakukan dengan menggunakan utilitas baris perintah prosodyctl. Misalnya, untuk menambahkan akun administrator yang ditentukan dalam /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.
Pendekatan yang sangat fleksibel menggunakan implementasi WebRTC GStreamer. Ini memungkinkan aplikasi multimedia berbasis pipeline, yang memungkinkan pengembangan aplikasi yang menarik dan sangat efisien. Titik awal yang baik adalah demo berikut oleh Centricular, perusahaan utama yang mengembangkannya:
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.