Registrasi yang berhasil hampir tidak memberi tahu apa pun tentang audio. Softphone dapat mempertahankan pengikatan yang sah dengan PBX kantor selama berjam-jam dan tetap mengirim keheningan. Terowongan hanya membawa paket yang sengaja dikirim seseorang ke dalamnya, dan panggilan menggunakan tiga jalur terpisah: pengikatan, penyiapan dialog, dan aliran RTP. Begitu Anda memisahkannya, kegagalan jatuh pada satu jalur, bukan pada kata VPN.

Bayangkan sebuah laptop di Wi-Fi rumah menelepon ekstensi kantor melalui terowongan yang disetujui. PBX mengautentikasi pengguna, menerima REGISTER, dan ekstensi tampil tersedia, tetapi panggilan tersambung dengan keheningan total di satu arah.

Registrasi mengikat kontak, bukan jalur media

Permintaan REGISTER meminta registrar menyimpan pemetaan antara alamat-catatan dan satu atau lebih URI kontak. Pemetaan itu menjawab pertanyaan sempit tentang ke mana dialog baru harus dikirim sekarang. Pemetaan itu tidak mengatakan apa pun tentang di mana media berada, dan registrasi yang diterima tidak membuktikan bahwa INVITE berikutnya membawa alamat media yang dapat dijangkau. Registrasi juga kedaluwarsa dengan pengatur waktu, sehingga telepon yang berhenti menyegarkan kehilangan panggilan masuk saat terowongannya masih tampak sehat. Perhatikan kedaluwarsa kontak, bukan status terowongan.

Saat softphone berada di belakang terowongan, tajuk kontak dapat membawa alamat privat. PBX yang meneruskannya ke titik akhir lain membuat dialog yang diarahkan ke jaringan yang tidak dapat dijangkau pihak yang dipanggil. Menyetel rewrite_contact=yes pada titik akhir PJSIP membuat PBX mengganti alamat sumber yang diamatinya, dan itu sering menjadi perbedaan antara dering dan batas waktu.

Apa yang ditawarkan INVITE dan siapa yang dapat menggunakannya

INVITE dengan badan SDP mengusulkan tempat pemanggil ingin menerima media: satu alamat, satu port, dan daftar codec. Pihak yang dipanggil menjawab dengan alamat dan portnya sendiri, lalu setiap sisi mengirim RTP ke apa yang diusulkan pihak lain. Jika pemanggil mengusulkan alamat 192.168.x.x yang hanya ada di jaringan rumahnya, pihak yang dipanggil tidak punya tempat mengirim audio, sebersih apa pun pensinyalan. Penyamaran menulis ulang tajuk IP saat paket meninggalkan perute, tetapi tidak pernah menulis ulang teks di dalam badan SDP.

Celah itu menjelaskan panggilan satu arah yang klasik: pensinyalan bekerja karena kedua titik akhir dapat mencapai PBX, dan audio gagal karena satu titik akhir disuruh mengirim ke alamat yang hanya ada di balik NAT lain.

PathWho picks the addressTypical failure
REGISTERSoftphone, rewritten by the registrar if configuredBinding expires or points at a private address
INVITE and SDPEach endpoint in its own offer or answerOffer names a media address nobody can route to
RTPPBX relay policy or the two endpointsPort range blocked, or no return path

Siapa yang membawa audio adalah pilihan konfigurasi

Pensinyalan dan media adalah peran terpisah. Proksi dapat tetap berada di jalur pensinyalan selama seluruh panggilan dan tidak pernah menyentuh satu paket RTP pun. Apakah PBX menjadi relai media bergantung pada konfigurasi, bukan pada keberadaan terowongan.

Dengan media langsung, titik akhir bertukar RTP sendiri, yang bekerja baik di satu LAN dan buruk saat satu sisi berada di balik rentang port sempit.

Menyetel direct_media=no memaksa PBX masuk ke jalur media sehingga kedua kaki berakhir pada alamat yang dikendalikannya, menukar bandwidth dan CPU dengan pengalamatan yang dapat diprediksi. Saat merelai, PBX tetap harus mengumumkan alamat yang dapat dijangkau. Pada host multi-jaringan, external_media_address dan external_signaling_address di pjsip.conf menentukan apa yang muncul di SDP dan di tajuk Via. Biarkan tidak disetel dan PBX dapat menawarkan alamat LAN-nya kepada pemanggil yang satu-satunya jalur adalah sisi jauh terowongan.

Lacak setiap arah sebelum menyentuh pengaturan

Mulai dari tabel soket di PBX saat panggilan aktif: ss -uanp | grep -E '5060|10000' menunjukkan apakah port RTP terikat dan alamat lokal mana yang dipakai. Jika tidak ada yang terikat di rentang media, relai tidak aktif dan titik akhir berbicara langsung. Lalu tangkap di sisi softphone dengan tcpdump -ni any -s0 udp portrange 10000-20000 -w rtp.pcap. Paket keluar tanpa paket masuk mempersempit masalah ke jalur balik atau ke alamat yang disuruh dipakai pihak jauh, dan tangkapan kosong berarti media tidak pernah mencapai antarmuka terowongan. Tangkapan pensinyalan dengan sngrep menjawab separuh lainnya dengan menunjukkan baris koneksi SDP sebagaimana dikirim.

Bandingkan alamat di baris koneksi itu dengan alamat yang benar-benar dapat dirutekan pihak jauh. Satu perbandingan itu menyelesaikan sebagian besar laporan audio satu arah lebih cepat daripada tinjauan konfigurasi apa pun.

Enkripsi berhenti di tepi terowongan

SIP di atas TLS melindungi lompatan pensinyalan yang dikonfigurasinya, SRTP melindungi media saat kedua ujung menegosiasikannya, dan terowongan melindungi lalu lintas antara titik akhirnya sendiri. Tidak satu pun memberi yang lain. Panggilan yang terenkripsi di dalam terowongan dapat meninggalkan gerbang dalam teks polos menuju PBX, dan itu keputusan desain, bukan cacat.

Sebelum menutup tiket, pastikan tiga hal secara berurutan: registrasi masih segar, SDP membawa alamat yang dapat dijangkau pihak jauh, dan paket mengalir dua arah pada port media. Jika salah satunya tidak benar, terowongan bukan tempat masalahnya. Perbaiki jalur yang gagal, lalu jalankan ulang tangkapan yang sama untuk memastikan perubahan. Menyimpan tangkapan sebelum dan sesudah membuat laporan satu arah berikutnya menjadi pemeriksaan lima menit alih-alih sepanjang sore.

Artikel terkait