青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Benjamin

靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠(yuǎn)。
隨筆 - 398, 文章 - 0, 評論 - 196, 引用 - 0
數(shù)據(jù)加載中……

centos安裝turnserver

一、下載依賴庫(非必須)
yum install -y make auomake gcc cc gcc-c++ wget
yum install -y openssl-devel libevent libevent-devel mysql-devel mysql-server
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar xvfz libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable && ./configure
make && make install && cd ..
二、下載安裝turnserver(在http://turnserver.open-sys.org/downloads/頁面選擇合適版本下載,這里載3.2.3.95)
wget http://turnserver.open-sys.org/downloads/v3.2.3.95/turnserver-3.2.3.95.tar.gz
tar -xvzf turnserver-3.2.3.95.tar.gz
cd turnserver-3.2.3.95
./configure
make && make install 
三、創(chuàng)建配置文件
cp /usr/local/etc/turnserver.conf.default /etc/turnserver.conf
cp /usr/local/etc/turnuserdb.conf.default /etc/turnuserdb.conf(非必須)
四、編輯配置turnserverconf
external-ip=54.95.37.26/172.31.43.68 (前者為服務(wù)器公網(wǎng)ip,后者為內(nèi)網(wǎng)IP)
fingerprint (開啟指紋)
lt-cred-mech (開啟長期驗(yàn)證機(jī)制)
user=testuser:123456 (設(shè)置一個(gè)測試用戶名及密碼)
五、端口開放
3478(tcp 、udp),5349(tcp、udp),49152-65535(udp)
六、開啟turnserver
 turnserver -v -r foo.org -c /etc/turnserver.conf (-f參數(shù)必須)
 七、測試
 1、官網(wǎng)測試:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
    add server之后,點(diǎn)擊gather candidates,這個(gè)工具如果測試不成功或
 2、candidates type:host:本機(jī)物理網(wǎng)卡或邏輯網(wǎng)卡地址和端口 srflx:發(fā)送Binding請求到STUN/TURN Server經(jīng)過NAT時(shí),NAT上分配的地址和端口
    prflx:端發(fā)送Binding請求到對等端經(jīng)過NAT時(shí),NAT上分配的地址和端口  relay:端發(fā)送Allocate請求到TURN Server,由TURN server用于中繼的地址和端口
 3、測試:代碼測試(html頁面) 打開開發(fā)工具如在控制臺輸出The TURN server is reachable !  is TURN server active?  yes 即表示服務(wù)器正常
    <html>
    <header>
        <title>ice測試</title>
    </header>
    <body>
    <label for="serverAddress"></label>
    <input id="serverAddress" value="turn:127.0.0.1:13902"/>
    <br/>
    <label for="username"></label><input id="username" value="foo"/>
    <br/>
    <label for="password"></label><input id="password" value="bar"/>
    <br/>
    <button onclick="window.test()">Test</button>
    <script>
        function checkTURNServer(turnConfig, timeout) {
            return new Promise(function (resolve, reject) {
                let promiseResolved;
                setTimeout(function () {
                    if (promiseResolved) return;
                    resolve(false);
                    promiseResolved = true;
                }, timeout || 5000);
                promiseResolved = false;
                let myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection   //compatibility for firefox and chrome
                    , pc = new myPeerConnection({iceServers: [turnConfig]})
                    , noop = function () {
                };
                pc.createDataChannel("");    //create a bogus data channel
                pc.createOffer({}).then((offer) => {
                    if (offer.sdp.indexOf('typ relay') > -1) { // sometimes sdp contains the ice candidates...
                        promiseResolved = true;
                        resolve(true);
                    }
                    pc.setLocalDescription(offer)
                })
                pc.onicecandidate = function (ice) {  //listen for candidate events
                    if (promiseResolved || !ice || !ice.candidate
                        || !ice.candidate.candidate
                        || !(ice.candidate.candidate.indexOf('typ relay') > -1)) return;
                    console.log("ice candidate=", ice.candidate)
                    // If a relay candidate was found, notify that the TURN server works!
                    if (ice.candidate.type === "relay") {
                        console.log("The TURN server is reachable !");
                    }
                    promiseResolved = true;
                    resolve(true);
                };
            });
        }
        window.test = () => {
            let serverAddress = document.getElementById("serverAddress").value;
            let username = document.getElementById("username").value;
            let password = document.getElementById("password").value;
            console.log("Trigger ice test. Server address=", serverAddress,
                ", username=", username, ", password=", password)
            checkTURNServer({
                urls: serverAddress,
                username: username,
                credential: password
            }).then(function (bool) {
                console.log('is TURN server active? ', bool ? 'yes' : 'no');
            }).catch(console.error.bind(console));
        }
    </script>
    </body>
    </html>
  4、http://你自己的公網(wǎng)ip:3478/ 輸出 TURN Server即表示正常
  5、命令行測試 turnutils_uclient -v -u testuser -w 123456 54.249.95.226(外網(wǎng)ip)
  turnserver的終端出現(xiàn)以下類似結(jié)果,則顯示測試成功
  830: handle_udp_packet: New UDP endpoint: local addr 172.31.33.19:3478, remote addr 54.249.95.226:37748
  830: session 003000000000000001: user <>: incoming packet message processed, error 401: Unauthorised
  830: IPv4. Local relay addr: 172.31.33.19:55550
  830: IPv4. Local reserved relay addr: 172.31.33.19:55551
  830: session 003000000000000001: new, username=<testuser>, lifetime=800
  830: session 003000000000000001: user <testuser>: incoming packet ALLOCATE processed, success
  830: session 003000000000000001: refreshed, username=<testuser>, lifetime=600
  830: session 003000000000000001: user <testuser>: incoming packet REFRESH processed, success
  830: handle_udp_packet: New UDP endpoint: local addr 172.31.33.19:3478, remote addr 54.249.95.226:33309
  830: session 003000000000000002: user <>: incoming packet message processed, error 401: Unauthorised
  
  八、signal服務(wù)中使用它,還需要修改相關(guān)配置
  external-ip=54.249.95.226/172.31.43.68 (前者為服務(wù)器公網(wǎng)ip,后者為內(nèi)網(wǎng)IP)
  fingerprint (開啟指紋)
  lt-cred-mech (開啟長期驗(yàn)證機(jī)制)
  use-auth-secret  (開啟secret形式授權(quán) )
  static-auth-secret=12345(# 設(shè)置secret,這個(gè)和signal服務(wù)配置文件里的turnserver的secret要一致,最好復(fù)雜點(diǎn),注意最后別留空格
  九、守護(hù)進(jìn)程運(yùn)行turnserver 
   turnserver -v -r foo.org -c /etc/turnserver.conf -o 
   # 后臺運(yùn)行的話下面這句
   # nohup turnserver -c etc/turnserver.conf &
  十、開機(jī)啟動(dòng)配置
    1、創(chuàng)建turnserver.service文件,內(nèi)容如下
      [Unit]
      Description=turnserver for webrtc
      After=network.target
      [Service]
      Type=forking
      User=tester
      Group=tester
      ExecStart=/home/tester/coturn/coturn/bin/turnserver -o -a -f -user=test:123456 -r Hangzhou
      Restart=always
      RestartSec=5
      [Install]
      WantedBy=multi-user.target
    2、拷貝文件   cp turnserver.service  /lib/systemd/system/
    3、重新加載  systemctl daemon-reload
    4、檢查是否加載成功  systemctl list-unit-files --type=service | grep turn 返回正常顯示turnserver相關(guān)內(nèi)容
      trunserver.service                     disabled
    5、運(yùn)行:    systemctl status turnserver.service
    6、檢測狀態(tài):systemctl status turnserver.service

posted on 2022-12-23 15:44 Benjamin 閱讀(331) 評論(0)  編輯 收藏 引用 所屬分類: linux

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美黄色一区二区| 亚洲午夜影视影院在线观看| 欧美激情网友自拍| 欧美14一18处毛片| 欧美va亚洲va国产综合| 欧美α欧美αv大片| 欧美va天堂| 欧美黄色大片网站| 欧美精品久久久久久久久老牛影院 | 亚洲视频自拍偷拍| 亚洲欧美日韩区| 久久久噜噜噜久久狠狠50岁| 蜜臀久久99精品久久久画质超高清 | 在线观看日韩www视频免费| 国产一区二区三区在线观看视频| 国产日韩欧美亚洲| 亚洲级视频在线观看免费1级| 亚洲毛片av| 亚洲欧美日韩在线观看a三区| 欧美专区18| 亚洲风情在线资源站| 亚洲精品久久久久久下一站| 亚洲欧美在线免费观看| 欧美成人第一页| 国产色视频一区| 亚洲国产一区二区三区高清 | 亚洲日本欧美| 午夜精品久久久久久久久久久久 | 亚洲一区二区免费视频| 久久精品视频一| 亚洲日本va午夜在线影院| 亚洲欧美日韩人成在线播放| 欧美电影免费观看网站| 国产一区二区三区在线观看免费视频| 日韩视频在线观看免费| 久久久另类综合| 夜色激情一区二区| 美女久久网站| 国产一区二区三区av电影 | 中文亚洲欧美| 免费不卡中文字幕视频| 欧美在线观看视频在线| 国产主播精品| 99热这里只有精品8| 久久视频在线看| 一区二区三区四区蜜桃| 欧美**人妖| 在线免费观看成人网| 香蕉久久一区二区不卡无毒影院| 亚洲第一精品夜夜躁人人爽| 午夜影视日本亚洲欧洲精品| 欧美日本中文| 亚洲看片免费| 欧美电影免费观看高清| 久久精品首页| 韩国av一区二区三区四区| 久久精品国产欧美亚洲人人爽| 亚洲一级一区| 国产精品揄拍500视频| 亚洲一区二区三区精品动漫| 亚洲久久视频| 欧美午夜在线一二页| 亚洲伊人久久综合| 亚洲性感激情| 国产亚洲视频在线| 裸体丰满少妇做受久久99精品| 久久精品91久久久久久再现| 精品51国产黑色丝袜高跟鞋| 久久久噜久噜久久综合| 久久精品国产一区二区三| 伊伊综合在线| 亚洲高清av| 欧美日韩伦理在线免费| 亚洲综合精品一区二区| 亚洲男人的天堂在线| 国产一区二区三区丝袜| 开心色5月久久精品| 美女在线一区二区| 99re热这里只有精品免费视频| 亚洲精品欧洲| 国产精品男人爽免费视频1| 欧美伊人久久| 久久婷婷久久| 一区二区三区欧美视频| 中文在线不卡| 韩国亚洲精品| 亚洲美女一区| 国产一区二区三区黄视频| 模特精品在线| 欧美午夜激情视频| 美日韩丰满少妇在线观看| 欧美另类一区二区三区| 久久大香伊蕉在人线观看热2| 久久天堂成人| 亚洲欧美国产精品桃花| 久久一综合视频| 午夜精品福利视频| 欧美大色视频| 久久久久久久一区| 欧美视频日韩视频| 欧美v国产在线一区二区三区| 欧美片网站免费| 久久免费精品视频| 日韩视频在线播放| 一本色道久久综合亚洲二区三区| 欧美视频在线免费看| 老色批av在线精品| 国产精品久久久久av| 老妇喷水一区二区三区| 欧美激情精品久久久| 国产曰批免费观看久久久| 国产精品久久一卡二卡| 久久精品国产免费| 久久免费视频在线观看| 香蕉成人伊视频在线观看| 一区二区日韩伦理片| 99国产精品99久久久久久粉嫩| 麻豆免费精品视频| 久久五月天婷婷| 欧美成人久久| 亚洲激情婷婷| 亚洲高清在线精品| 日韩视频在线观看免费| 一本色道久久综合亚洲精品婷婷| 欧美激情亚洲综合一区| 国产一区二区三区久久久| 欧美精品乱人伦久久久久久| 国产精品第一区| 玖玖玖国产精品| 国产精品视频免费在线观看| 亚洲精品欧美极品| 亚洲欧洲日产国产网站| 久久国产欧美| 久久久精品tv| 国产日韩一区二区三区在线| avtt综合网| 在线亚洲美日韩| 欧美激情在线狂野欧美精品| 亚洲国产精品va在线观看黑人| 黑人极品videos精品欧美裸| 性色av一区二区三区在线观看 | 久久久不卡网国产精品一区| 欧美日韩一区二区视频在线观看| 亚洲国产成人精品久久久国产成人一区| 亚洲视频一区二区免费在线观看| 亚洲欧美在线视频观看| 久久综合九色综合欧美就去吻| 夜夜嗨av色综合久久久综合网 | 亚洲人成在线免费观看| 国产精品久久久久久久久久尿| 国产精品天天看| 日韩视频免费观看高清完整版| 久久精品国产精品亚洲| 亚洲精品在线二区| 欧美激情视频一区二区三区免费| 国内精品视频久久| 久久精品视频免费播放| 欧美一区二区三区在线免费观看 | 黄色日韩网站视频| 亚洲精品一二三| 亚洲一区二区精品在线| 欧美偷拍另类| 亚洲欧美日韩久久精品| 久久精品人人做人人爽| 亚洲电影网站| 欧美日韩中文在线观看| 亚洲综合视频1区| 欧美a级大片| 亚洲一级免费视频| 国产午夜亚洲精品羞羞网站 | 美日韩在线观看| 日韩一级二级三级| 国产精品久久久久av| 久久嫩草精品久久久精品| 亚洲欧洲日本mm| 亚洲欧美激情视频在线观看一区二区三区 | 久久精品视频一| 亚洲黄色在线看| 国产精品国产a级| 开心色5月久久精品| 一区二区三区**美女毛片| 噜噜噜久久亚洲精品国产品小说| 亚洲丝袜av一区| 永久免费精品影视网站| 国产精品黄视频| 免费欧美网站| 欧美一级二级三级蜜桃| 亚洲三级视频| 蜜桃av一区二区| 香蕉久久夜色| av成人天堂| 在线日韩中文字幕| 国产精品久久久久久久久久妞妞| 久久亚洲综合网| 亚洲欧美国产日韩中文字幕| 亚洲国产精品美女| 美国成人直播| 久久精品亚洲一区二区| 亚洲男人影院| 一本一本久久a久久精品综合妖精|