Stun/Turn server cần được cài đặt riêng trên một server (có thể cài đặt chung với DOCS server).

Tài liệu Zimbra: https://wiki.zimbra.com/wiki/STUN_TURN_Guide

Nếu bạn đã cài đặt Connect trên Zimbra và phát hiện ra khi dùng thử:

  • Người dùng không thể kết nối đến Connect.
  • Người dùng không nhìn thấy video của phía gọi.
  • Không nghe âm thanh.
  • Không thấy chat message.

Điều này có nghĩa là bạn cần sử dụng TURN server. Một trong những phần mềm TURN hiện phổ biến là https://www.resiprocate.org/Main_Page . TURN server đóng vai trò điểm trung chuyển cho các bên tham gia cuộc gọi khi mà họ không thể thiết lập kết nối WebRTC trực tiếp với nhau được (vì nằm sau NAT router).

Các bước tiến hành:

1. Cài đặt Centos 7 bản minimum, thiết lập hostname, DNS, ip address,…

2. Cài đặt firewalld. Ta dùng firewalld để quản lý iptables. Tiến hành mở các port 3478 (tcp/upd), 49152-65535(udp).

yum install firewalld

systemctl start firewalld

systemctl enable firewalld

firewall-cmd --zone=public --add-port=3478/tcp --permanent

firewall-cmd --zone=public --add-port=3478/udp --permanent

firewall-cmd --zone=public --add-port=49152-65535/udp --permanent

firewall-cmd --reload

3. Update server và reboot

yum upgrade

reboot

4. Cài đặt epel-release

yum install epel-release

5. Cài đặt reTurn server

yum install resiprocate-turn-server

6. Cấu hình reTurn server trong file /etc/reTurn/reTurnServer.config. Thực hiện các thay đổi sau:

TurnAddress = 1.2.3.4

TurnPort = 3478

AuthenticationRealm = zimilab.com

UserDatabaseHashedPasswords = true

AllocationPortRangeMin = 49152

AllocationPortRangeMax = 65535

7. Tạo user để cho phép Zimbra server kết nối đến reTurn server này.

Ví dụ bạn muốn tạo user zimilab, mật khẩu là 123abc, và AuthenticationRealm là zimilab.com (ở bước 6 ở trên) thì sẽ dùng lệnh:

echo -n zimilab:zimilab.com:123abc | md5sum

Lệnh này sẽ tạo ra chuỗi MD5 hash kiểu như sau:

403f476b81442de0bf2df8424bad31b3 -

Kế tiếp, mở file /etc/reTurn/users.txt, bỏ đi user test và thêm vào nội dung sau:

zimilab:403f476b81442de0bf2df8424bad31b3:zimilab.com:authorized

Cú pháp là: tên user:mã md5 hash:authenticationrealm:trạng thái

8. Chạy reTurn server

systemctl restart resiprocate-turn-server

systemctl enable resiprocate-turn-server

Nếu báo lỗi liên quan đến log file không thể chown thì bạn phải tự tạo:

mkdir /var/log/reTurnServer

touch /var/log/reTurnServer/reTurnServer.log

Kiểm tra log file /var/log/messages và /var/log/reTurnServer/reTurnServer.log bạn sẽ thấy dòng kiểu như:

Mar 19 16:36:47 turn reTurnServer: INFO | 20200319-163647.815 | | RETURN | 140267831281792 | ReTurnConfig.cxx:293 | Processed 1 user(s) from 23 line(s) in /etc/reTurn/users.txt

Dùng lệnh netstat -npl | grep -i turn để kiểm tra reTurn server đang lắng nghe trên các cổng:

tcp 0 0 1.2.3.4:3478 0.0.0.0:* LISTEN 1102/reTurnServer

tcp 0 0 1.2.3.4 :443 0.0.0.0:* LISTEN 1102/reTurnServer

tcp6 0 0 :::3478 :::* LISTEN 1102/reTurnServer

tcp6 0 0 :::443 :::* LISTEN 1102/reTurnServer

udp 0 0 1.2.3.4 :3478 0.0.0.0:* 1102/reTurnServer

udp6 0 0 :::3478 :::* 1102/reTurnServer

9. Cuối cùng trên Zimbra server, với quyền zimbra chạy lệnh:

zxsuite connect iceServer add turn:1.2.3.4:3478?transport=udp credential 123abc username zimilab

Trong đó:

  • 2.3.4:3478?transport=udp là địa chỉ ip của reTurn server, cổng và loại giao thức.
  • 123abc là mật khẩu bạn đã tạo ở trên.
  • zimilab là tên user bạn đã tạo ở trên.

Để biết thêm thông tin, vui lòng tham khảo: https://zimbra.github.io/adminguide/latest/#_stunturn_server

Nếu bạn cần bỏ cấu hình reTurn server trên zimbra, dùng lệnh:

zxsuite connect iceServer remove turn:1.2.3.4:3478?transport=udp credential 123abc username zimilab

Để liệt kê các Turn server mà Zimbra server đang kết nối đến:

zxsuite connect iceServer get

Tip:

Nếu sau khi thiết lập Turn server mà vẫn gặp sự cố kết nối, bạn có thể dùng các site sau để test:

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

https://test.webrtc.org

Test webRTC trên Chrome: chrome://webrtc-internals