當直接媒體傳輸失敗時,如何透過 Nextcloud Talk 進行通話

若要解決 Nextcloud Talk 通話無法連線或存在單向傳輸的問題,請設定可達的 TURN 中繼,在 Talk 設定中輸入其主機名稱、連接埠和共用金鑰,並允許流量同時透過 TURN 監聽器及其中繼連接埠。 TURN 會在直接連線失敗時為 WebRTC 提供中繼路由;但它無法修復 Wi-Fi 訊號弱、丟包或網路過載等問題。

例如:假設一家小型機構的員工可以在辦公室透過電話會議加入通話,但無法從飯店網路可靠地發送視訊。飯店防火牆可能阻止了直接的媒體路徑。以下範例展示了管理員如何檢查路由、配置 coTURN 並測試變更;這並非實際部署或測試的報告。

1. 確認繼電器是正確的解決方案。

Nextcloud Talk 首先嘗試直接連結參與者。 STUN 幫助設備發現路由器建立的公網位址和連接埠。當防火牆或限制性 NAT 仍然阻止直接連線時,TURN 會中繼媒體。僅靠 STUN 伺服器無法提供這種中繼功能。

將辦公室網路上的通話與獨立網路(例如手機熱點)上的通話進行比較。如果通話在一個地方可以連接,但在受限位置重複無法建立音訊或視訊連接,則下一步可以檢查 TURN 協定。如果通話可以連接,但在所有網路上都出現模糊或卡頓,則首先應測量頻寬、丟包率、Wi-Fi 品質和 CPU 負載;透過中繼路由更多媒體可能會增加負載,而不會提高容量。

一個簡化的管理員設定頁面,配置欄位為空,憑證欄位已屏蔽。
圖示:管理員頁面,包含設定欄位和已封鎖的憑證,表示在測試呼叫之前需要查看的設定。

記錄 Talk 版本、TURN 主機名稱和連接埠、TURN 主機是否位於 NAT 之後,以及是否安裝了高效能後端 (HPB)。務必對這些資訊保密。以下命令假設系統為 Linux 且安裝了 systemd;軟體包路徑可能有所不同。

2. 設定 coTURN 的共享金鑰認證

Nextcloud 的 Talk 文件建議使用 coTURN 4.5.0.8 或更高版本,因為舊版本有 IPv6 UDP 套接字問題。請從發行版的軟體倉庫安裝 coTURN,並找到其活動設定檔(通常位於 `/usr/local/bin` /etc/turnserver.conf)。在 TURN 主機上產生一個隨機金鑰:

openssl rand -hex 32

將該值儲存在密碼管理器或受保護的組態儲存庫中。在活動的 coTURN 設定中,設定監聽器、共用金鑰驗證和網域。將範例主機名稱和金鑰替換為實際值:

listening-port=3478
fingerprint
use-auth-secret
static-auth-secret=REPLACE_WITH_RANDOM_SECRET
realm=turn.example.org
total-quota=0
bps-capacity=0
stale-nonce
no-multicast-peers

Talk 文件lt-cred-mech僅適用於 coTURN 4.5.0.8 之前的版本;請升級舊版本,不要盲目複製舊版設定。如果 coTURN 位於 NAT 之後,請按照部署指南的要求配置其公共位址和中繼位址,並確保 DNS 名稱解析到參與者可存取的位址。

一個深色的程式碼編輯器窗口,顯示抽象的配置行和高亮顯示的設定。
圖示:設定編輯器,表示 coTURN 監聽器和驗證設定;請使用文字中記錄的參數名稱,而不是從影像推斷的值。

3. 開啟監聽器和中繼路徑

允許 TURN 監聽連接埠(本例中為 3478)通過主機和上游防火牆的 UDP 和 TCP 協定。對於 TLS 協議,coTURN 還需要有效的憑證和私鑰,且 Talk 必須使用 TLS 協定turns:。連接埠 443 可以存取限制更嚴格的網絡,但請檢查是否有衝突:HPB 也可能需要該端口,這需要單獨的 IP 位址或主機。

媒體伺服器也使用中繼埠。請在主機防火牆、雲端安全群組和路由器中允許 coTURN 中繼的 UDP 連接埠範圍。如果您已設定 `<command>` 和 `<command>` min-port,max-port請開啟該確切的連接埠範圍;僅允許監聽器是不夠的。對於位於 NAT 後方的 TURN 主機,請同時轉送監聽器和中繼連接埠範圍,並設定其公網/中繼位址。保留 coTURN 對等體限制,以防止存取無關的內部服務。

一個簡化的防火牆規則表,其中包含已啟用的入站和出站網路條目
圖示:防火牆條目表示必須允許的監聽和中繼流量;確切的連接埠範圍取決於 coTURN 設定。

編輯完成後重啟 coTURN 服務並檢查其是否已啟動。例如,在 systemd 主機上:

sudo systemctl restart coturn
sudo systemctl status coturn --no-pager

服務狀態確認進程已啟動,但不證明遠端瀏覽器可以存取中繼伺服器。請分別檢查主機和提供者的防火牆,並查看 coTURN 日誌,尋找綁定錯誤、驗證失敗或配額分配訊息。

4. 在 Talk 中新增伺服器並驗證是否能進行真實通話

以管理員身分開啟「管理設定」>「Talk」。輸入 TURN 主機名稱和端口,例如 `<hostname>` turn.example.org:3478,以及與 `<secret>` 相同的金鑰static-auth-secret。主機名字段中不要包含`<command> https://`、turn:`<command>` 或turns:`<command>`;請在 Talk 的控制面板中選擇協定方案。盡可能保持 UDP 和 TCP 啟用。turns:僅在 coTURN 中配置 TLS 後使用。

如果可用,請儲存並執行 Talk 內建的 TURN 檢查。然後從受限網絡撥打到另一個網絡,並驗證雙向音訊和視訊。通話期間檢查 coTURN 日誌,查看是否有指派或身分驗證失敗的情況。在本例中,管理員將類似飯店的網路連線與辦公室通話進行比較。

一個包含兩名參與者和通話控制按鈕的視訊通話窗口
圖示:雙人通話視窗表示儲存 TURN 設定後的端對端檢查;確認每位參與者都可以發送和接收媒體。

如果檢查失敗,請比較主機名稱、連接埠和金鑰,然後驗證 DNS、防火牆規則、中繼 UDP 範圍、NAT 轉送和服務日誌。基本檢查可能遺漏中繼路徑問題,因此請從外部網路進行測試。對於僅 TURN 的診斷,請按照 Talk 針對不同瀏覽器的具體步驟操作;其控制台方法是臨時的,並且不同瀏覽器的行為有所不同。

TURN 不支援群組通話。 Nextcloud 表示,對於人數較多的群組,超過 5-10 人的通話需要使用 HPB(高優先分組)。如果 TURN 連線成功但視訊品質仍然很差,請在更改中繼配額之前檢查頻寬、丟包率、Wi-Fi 幹擾和伺服器負載。

確認

修復方案由三個可觀察的跡象支援:通話接受 TURN 配置,coTURN 日誌顯示通話期間的中繼分配,以及不同網路上的參與者可以雙向交換音訊和視訊。如果只有辦公室通話有效,或者日誌顯示沒有傳入請求,則公共路由仍然被阻塞,或者配置的主機和連接埠不符。如果媒體串流正常但品質仍然很差,則 TURN 連接正常,剩餘問題可能出在網路或通話基礎設施的其他位置。

參考資料:Nextcloud Talk TURN 伺服器設定;Nextcloud Talk coTURN 設定;coTURN 設定 wiki。

留下評論

使用定時佇列來控制 Nextcloud 預覽版 CPU 峰值

將縮圖製作移至受控的後台計劃,修剪未使用的預覽尺寸,並在不使 Nextcloud 伺服器過載的情況下驗證佇列。

取得 Nextcloud 桌面同步功能,擺脫「處理文件」的束縛

找到導致 Nextcloud 同步失敗的檔案、排除規則、連線問題或用戶端資料庫狀態,然後安全地驗證上傳和下載。

透過調整右側限制來清除 Nextcloud OPcache 警告

找到觸發 Nextcloud 警告的 PHP OPcache 限制,更新正確的 Web PHP 配置,安全重啟,並驗證結果。

將 Nextcloud 連接到 CODE Docker:設定和權衡

將 Nextcloud 連接到 CODE Docker:設定和權衡

比較內建程式碼和基於 Docker 的程式碼,然後透過安全的 HTTPS 反向代理將 Collabora Online 連接到 Nextcloud。

使用 Galera 建構彈性 Nextcloud 集群

規劃一個可靠的 Nextcloud 高可用性部署,包括共用儲存、Redis 鎖定、支援仲裁的 MariaDB 路由和實用的故障轉移檢查。

當直接媒體傳輸失敗時,如何透過 Nextcloud Talk 進行通話

當直接媒體傳輸失敗時,如何透過 Nextcloud Talk 進行通話

當防火牆或限制性 NAT 阻止直接呼叫媒體時,配置並驗證 Nextcloud Talk 的可達 TURN 中繼。

透過恢復正確的檔案清除 Nextcloud 完整性警告

使用無效文件報告來識別已更改、缺失或多餘的 Nextcloud 程式碼,安全地恢復受信任的文件,並驗證結果。

使用 OAuth2 將 Gmail 或 Microsoft 365 連接到 Nextcloud Mail

使用 Gmail 或 Microsoft 365 為 Nextcloud Mail 設定 OAuth2,驗證接收和傳送,並解決常見的同意和 SMTP 失敗問題。

使用 OCC 安全清除卡住的 Nextcloud 維護模式

使用 OCC 安全清除卡住的 Nextcloud 維護模式

使用 OCC 還原 Nextcloud 存取權限,驗證資料庫遷移狀態,並為歸檔、Docker 或 Snap 安裝選擇正確的命令。

設定 Nextcloud LDAP 和 Active Directory 登入

將 Nextcloud 連接到 LDAP 或 Active Directory,使用使用者和群組過濾器限制訪問,並在部署前驗證安全性驗證。