采用源碼編譯的方式實現STUN/TURN服務器的搭建
服務器:coturn
環境:Ubuntu20.04
下載coturn源碼:https://github.com/coturn/coturn
放置到linux的/WebRTC目錄
如果沒有編譯工具首先請apt install gcc
命令行切換至此目錄./configure --prefix=/usr/local/coturn/,然后./configure --prefix=/usr/local/coturn/,然后make,然后make install,安裝完畢
切換至,修改配置文件中的主要4項,listening-port,external-ip,user,realm修改完畢即可開始運行turn服務器
啟動命令:
如覺得不方便把turnserver加入環境變量中即可
前往https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/進行測試
遇到的問題:
錯誤1:ERROR: Libevent2 development libraries are not installed properly in required location.
解決:apt install libevent-dev
錯誤2:OpenSSL Crypto development libraries are not installed properly in required location
解決:apt install libssl-dev
turnserver的手動啟動:./usr/local/coturn/bin/turnserver -c ./usr/local/coturn/etc/turnserver.conf,
在實際使用的時候有可能coturn不正常服務,提示
The server stun:xxx returned an error with code=701:
STUN host lookup received error.
The server turn:xxx?transport=udp returned an error with code=701:
如果收集的信息type已經包含了srflx和relay,那就沒問題,如果沒有那么出現這個問題,不要擔心,解決辦法如下:
1)確保你的操作步驟都是上面描述的
2)查看你的端口映射,如果1)中是正確的,那么你的問題原因就是端口映射失敗,重新確定一下要使用的端口的tcp,udp都成功映射出去就好了。如果實際的turnserer服務器是在公司內網,那么需要在對應外網映射端口。
驗證端口的tcp是否成功可以直接telnet外網地址+端口(保證turnserver啟動起來),即可查看;
驗證端口的udp是否成功可以在turnserver系統中運行一個udpserver(寫一個小程序啟動udp接收數據即可,在另一端連接外網映射的地址和端口即可判定是否映射成功)。
目前看來如果turnserver安裝和配置沒有問題,那么唯一問題就是端口映射的問題。
網上還有人說chrome有問題,火狐沒有問題,其實並非如此,如果配置成功了chrome和火狐都不會有任何問題,經過我試驗原因應該是填寫stun服務器地址有誤,應該寫成這樣:
不要寫成stun,這就沒問題了,chrome和火狐都沒有問題