WebRTC服务器Coturn服务器相关测试工具

1、概述

在安装开源的webrtc服务器coturn服务器后,会附带安装coturn的相关工具,主要有以下几种工具

2、turnadmin工具

说明:服务器命令行工具,提供添加用户、添加管理员、生成TURN密钥等功能,turnadmin -h查看详细用法

命令参数用法:

2.1 直接短选项名用法,后面不加=

eg: turnadmin -u ccc

2.2 参数长选项名用法加=

eg: turnadmin --user=ccc

2.3 命令Commands

2.3.1 -P

作用: 生成并将密码的加密形式输出到标准输出,可以生成密钥,然后设置到/etc/turnserver.conf(web-admin/cli-password)中,防止明文保存在配置文件,增加安全性

eg: turnadmin -P -u ccc -p ccc

终端输出:$5$c58bf5b9e61e5c4a$088e97128d5eacac61130713fe15269b17653410704a1b60fc8d1a076c9d6d2d

备注: 这个密钥生成是针对管理账号和telnet连接账号,不是针对普通用户,普通用户长期凭证机制用用-k生成,普通用户还支持临时凭证

2.3.2 -k

作用: 生成长期凭证机制用户密钥的选项

eg: turnadmin -k -u ccc -p ccc -r nort.gov

终端输出: 0xa00561524d93eb959c884a531cda1769

备注: 把这个配置到/etc/turnserver.conf即可,防止了明文的显示,增加安全。

2.3.3 -a

作用: 添加或更新一个长期凭证用户

eg: turnadmin -a -u ccc -p ccc -r nort.gov

数据库保存:会把这个用户保存到数据库表turnusers_lt

备注: coturn数据库支持sqlite、mysql、redis、postgrepsql、mogo-db, 命令选型根据

sqlite: -b /var/db/turndb

mysql: -M

pqsql: -e

redis: -N

mogo: -J

2.3.4 -A

作用:添加或更新管理员账号

eg: turnadmin -A -u ccc -p ccc

数据库: 会把这个用户保存在数据库表admin_user中

2.3.5 -d

作用: 删除长期凭证机制用户

eg: turnadmin -d -u ccc

2.3.6 -D

作用: 删除管理员用户

2.3.7 -l

作用: 列出当前长期凭证机制用户

eg: turnadmin -l

2.3.8 -L

作用: 列出当前管理员用户

eg: turnadmin -L

2.3.9 -s

作用: 为REST API设置共享密钥

eg: turnadmin -s mytestpwd -r nort.gov

备注: 会保存在数据库表turn_secret中

2.3.10 -S

作用: 显示REST API的共享密钥

eg: turnadmin -S

2.3.11 -X

作用: 删除REST API 共享密钥

eg: turnadmin -X mytestpwd -r

2.3.12 -O

作用: 添加源到域中

eg: turnadmin -O -o https://www.my.com -r myrealm

备注: 保存到turn_origin_to_realm 数据表

2.3.13 -R

作用:删除源与域的对应关系

eg: turnadmin -R -o https://www.my.com -r myrealm

2.3.14 -I

作用: 列出源与域的关系

eg: turnadmin -I

2.3.15 -g

作用: 设置域相关参数选项,比如设置某个域的最大比特率,可控制某个域内所有用户总带宽(max-bps)上限制,总配额(total-quota)【网络连接数,会话数等】,每个用户的配额(user-quota)

eg: turnadmin -g -r nort2.gov --total-quota 300 -- max-bps 1020000

eg: turnadmin -g -r nort2.gov --user-quota 20

备注:数据保存在数据库的turn_realm_option这个表中

2.3.16 -G

作用: 显示域相关参数配置

eg: turnadmin -G

3、turnutils_stunclient

作用:检测STUN服务器是否可用,查看客户端公网ip和端口,理解当前环境下NAT类型

示例:turnutils_stunclient -p 3479 117.72.111.221

4、 turnutils_peer

一个简单的无状态UDP echo”服务器,用作中继模式中的最终服务器(“对等”)。对于每一个到来UDP数据包,它只是将其回传

(此程序仅用于测试目的!),就是简单监听UDP端口,然后发什么它就返回什么的一个简单udp程序。

5、turnutils_uclient

用于测试TURN服务器的功能,验证TURN服务器的配置,确保TURN服务器正确配置,能正常工作

5.1 测试coturn服务器基础功能是否正常

5.1.1 先运行turnutils_peer(部署在公网上,有公网IP端口,方便测试)

作为模拟的端侧客户端,只打开UDP端口,接受了什么数据,就源路返回什么。

5.1.2 执行turnutils_uclient -e 117.72.111.221 -r 3480 -n 3 -l 1024 -p 3478 117.72.111.221

-e代表 对端的地址(比如A跟B通信,turnutils_client代表A端,B就是对端116.205.233.111)

-r 3480代表对端的端口为3480

-n 3 代表发送的数据包为3个

-l 1024 代表发送的数据包的内容长度为1024

-p 代表coturn的端口3478

117.72.111.221 代表要测试的coturn服务器的地址

5.1.3 结果分析

turnutils_client会与coturn进行通信,发送3个数据包到对端,然后分析发包、和收包,判断丢包率,RTT等数据分析以此验证coturn是否正常

其中会经历Allocate Request、Channel Binding Request 、Create Peermission Request等TURN协议的发送与接收处理,具体协议的结构格式,类型值看下面的协议篇。

5.2 测试coturn服务器dtls加密功能是否正常

turnutils_uclient -S -i /home/webrtc/webrtc_server.crt -k /home/webrtc/webrtc_server.key -e 117.72.111.221 -r 3480 -n 3 -l 1024 -p 5349 117.72.111.221 -v -u test -w test

6、turnutils_natdiscovery

是一个用于 ‌NAT 类型检测和网络诊断‌ 的命令行工具,其核心作用是通过模拟不同场景的通信请求,帮助开发者或运维人员快速识别设备的 NAT 类型及网络限制条件‌,(NAT映射规则和防火墙过滤行为)

turnutils_natdiscovery -m -f Example Domain

1)-m 参数

开启映射行为发现

映射行为分为:

端点独立映射: 无论请求的外部服务器地址和端口是什么,NAT设备总是将内部主机同一IP地址和端口映射到相同的外部IP地址和端口

地址依赖映射: NAT设备根据请求的外部服务器IP地址创建映射,如果请求不同的外部服务器IP地址,NAT设备会创建不同的映射

地址和端口依赖映射:NAT设备根据请求的外部服务器IP地址和端口创建映射,只有当请求的外部服务器IP地址和端口相同时才会使用相同的映射

2)-f 参数

开启过滤行为发现

过滤行为分为:

端点独立过滤: 主机可以接收来自任何外部主机的响应,只要该响应是对其之前发出的请求的响应

地址依赖过滤: 主机只能接收来自之前请求的IP地址的响应,无论响应的端口是什么

地址和端口依赖过滤: 主机只能接收来自刚才请求的ip和端口的端口的响应

3)-t 参数

开启映射生命周期行为发现,它会测试NAT设备中映射的生命周期,即映射在多长时间保持有效

turnutils_natdiscovery -t -T 60 -p 3478 stun.example.com

-t 启用映射生命周期行为发现

-T 60 指定定时器值为60秒,即等待60秒后再次请求以测试映射是否有效

4) -c参数

用于碰撞行为发现,它会测试当两个不同的内部地址使用相同的端口向外部服务器发送请求时,NAT设备的处理方式

turnutils_natdiscovery -c -L 192.168.1.100 -A 192.168.1.101 -p 3478 stun.example.com

-c 启用碰撞行为发现

-L 192.168.1.100: 指定第一个本地地址为192.168.1.100

-A 192.168.1.101: 指定第二个本地地址为192.168.1.101,该选项在使用-c时是必须的

-p : 指定STUN服务器的端口为3478

stun.example.com: 指定STUN服务器的地址

5)-H选项

用于开启自环行为发现,自环是指当一个内部主机通过NAT设备访问自己外部映射地址时,NAT设备能否正确处理这种情况

turnutils_natdiscovery -H -p 3478 stun.example.com

-H 启用自环行为发现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/77727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何创建Vue3工程

1.首先下载环境 (默认下好了VS code) Node.js: Node.js 中文网 — 下载 Node.js 选择要下载的版本 检查环境: 在命令行中输入 node ,检查版本号 2.创建工程 1.找到自己要创建工程的文件目录,右键打开打开终端 在终端输入创…

基于大模型的肛裂手术全流程预测与治疗方案研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目标与创新点 1.3 研究方法与技术路线 二、肛裂概述与大模型技术原理 2.1 肛裂的医学定义与分类 2.2 肛裂的发病机制与临床症状 2.3 大模型技术简介 三、大模型在肛裂术前预测的应用 3.1 术前风险因素分析与数据收集 3.2 …

【趣味小游戏】--扫雷游戏

目录 一.test.c部分 二.game.h部分 三.game.c部分 前言:前面学习了数组和函数等c语言相关知识,这篇文章我们将通过这些知识分为三个文件来完成扫雷游戏; 1.test.c //文件中写游戏的测试逻辑 2.game.c //文件中写游戏中函数的实现等 3.game.h. //文件中写…

【微服务】SpringBoot制作Docker镜像接入SkyWalking详解

目录 一、前言 二、SkyWalking介绍 2.1 SkyWalking是什么 2.2 SkyWalking核心功能 2.3 SkyWalking整体架构 2.4 SkyWalking主要工作流程 三、前置准备 3.1 搭建SkyWalking服务 3.1.1 下载安装包 3.1.2 上传服务器目录 2.1.3 数据库持久化配置说明 3.1.4 启动skywalk…

从零开始构建微博爬虫与数据分析系统

从零开始构建微博爬虫与数据分析系统 引言 社交媒体平台蕴含着海量的信息和数据,通过对这些数据的收集和分析,我们可以挖掘出有价值的见解。本文将详细介绍如何构建一个完整的微博爬虫和数据分析系统,从数据爬取、清洗、到多维度分析与可视…

深入探索RAG:用LlamaIndex为大语言模型扩展知识,实现智能检索增强生成

大型语言模型(LLM),如ChatGPT和Llama,在回答问题方面表现出色,但它们的知识仅限于训练时所获取的信息。它们无法访问私有数据,也无法在训练截止日期之后学习新知识。那么,核心问题就是……我们如…

【延迟双删】简单解析

使用场景:【高并发】情况下的做【更新操作】 什么是延迟双删 首次删除:当需要更新某个数据项时,首先删除缓存中的该项。 更新数据库:接着,更新数据库中的该项。 短暂延迟:然后等待一段很短的时间&#xff…

解决Windows安全中心显示空白页面

1、电脑重装系统后,发现原本一些软件打不开了,电脑莫名认为有病毒,自动删除插件。附图。 2、第一反应是电脑防火墙的原因,默认威胁防护识别到了病毒软件,自动删除。在开始屏幕搜Windows安全中心,打开之后发…

【回眸】error: failed to compile `xxxxxx`重装rust环境

在ubuntu上安装软件报错 error: failed to compile cxx2flow v0.6.2 Caused by: package cargo-platform v0.1.9 cannot be built because it requires rustc 1.78 or newer, while the currently active rustc version is 1.75.0 Try re-running cargo install with --lo…

算法—冒泡排序—js(教学示例、小数据)

冒泡排序原理 冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置,使较大的元素逐渐“浮”到数组末尾。 特点 时间复杂度:平均 O(n),最优(已有序时)O(n) 空间复杂度&#…

linux sysfs的使用

在Linux内核驱动开发中&#xff0c;device_create_file 和 device_remove_file 用于动态创建/删除设备的 sysfs 属性文件&#xff0c;常用于暴露设备信息或控制参数。以下是完整示例及详细说明&#xff1a; 1. 头文件引入 #include <linux/module.h> #include <linux/…

利用 Deepseek 和 Mermaid 画流程图

提示词 你是一个产品经理&#xff0c;请绘制一个报名比赛的流程图&#xff0c;要求生成符合Mermaid语法的代码&#xff0c;具体要求如下&#xff1a; 1.注册账号 2.填写报名信息 3.参加比赛 4.查看比赛结果 生成的结果 flowchart TDA([开始]) --> B[注册账号]B --> C{账…

【图像标注技巧】目标检测图像标注技巧

介绍一些图像标注技巧。之前引用过别人的文章 yolo目标检测 技巧 trick 提升模型性能&#xff0c;deep research检测调研报告也可以进行参考。 拉框类的标注&#xff0c;如果你不确定哪种方法好&#xff0c;你可以把所标注区域的都剪切出来&#xff0c;然后站在屏幕一米之外眯…

数字信号处理技术架构与功能演进

数字信号处理&#xff08;DSP&#xff09;是通过数字运算实现信号分析、变换、滤波及调制解调的技术领域&#xff0c;其发展过程与技术应用如下&#xff1a; 一、定义与核心功能 技术定义&#xff1a;通过算法将模拟信号转换为数字形式进行处理&#xff0c;具有高精度、可编程…

浏览器上下文通信

文章目录 浏览器上下文通信同源通信同源通信流程同一浏览器上下文通信不同浏览器上下文通信 跨域通信前端和前端跨域前端和后端跨域 浏览器上下文通信 浏览器上下文通信分为两种&#xff1a;同源和跨源。同样的同源通信也分为同一浏览器上下文和不同的浏览器上下文。 同源通信…

Linux 离线部署 Docker 18.06.3 终极指南(附一键安装卸载脚本)

Linux 离线部署 Docker 18.06.3 终极指南&#xff08;附一键安装/卸载脚本&#xff09; 摘要&#xff1a;本文针对无外网环境的 Linux 服务器&#xff0c;提供基于二进制包的 Docker 18.06.3 离线安装全流程指南。包含自动化脚本设计、服务配置优化及安全卸载方案&#xff0c;…

【前端】跟着maxkb学习logicflow流程图画法

文章目录 背景1. 选定学习对象-maxkb应用逻辑编排2. 确定实现框架3. 关键逻辑&#xff1a;查看app-node.js4. 学习开始节点绘制流程数据形式 5. 给节点增加表单输入框遇到过的问题 背景 看看前端如何绘制流程图&#xff0c;界面好看点。 "logicflow/core": "1.…

Android 12系统静态壁纸深度定制指南

1. 需求背景与实现原理 在Android 12系统ROM定制开发中&#xff0c;扩展静态壁纸功能需要深入理解WallpaperManagerService的架构体系。系统壁纸管理通过双端协作实现&#xff1a; WallpaperManagerService&#xff08;frameworks层&#xff09;&#xff1a;负责壁纸状态管理、…

相得益彰 — 基于 GraphRAG 事理图谱驱动的实时金融行情新闻资讯洞察

*本文为亚马逊云科技博客文章&#xff0c;仅用于技术分享&#xff0c;不构成投资建议或金融决策支持。文中涉及的公司名称仅用于技术示例&#xff0c;不代表亚马逊云科技观点或与这些公司的商业合作关系。 背景介绍 在当今这个信息爆炸的时代&#xff0c;金融市场每天都在产生…

OpenCV---图像预处理(四)

OpenCV—图像预处理&#xff08;四&#xff09; 文章目录 OpenCV---图像预处理&#xff08;四&#xff09;九&#xff0c;图像掩膜9.1 制作掩膜9.2 与运算9.3 颜色替换9.3.19.3.2 颜色替换 十&#xff0c;ROI切割十 一&#xff0c;图像添加水印11.1模板输入11.2 与运算11.3 图像…