文章首发及后续更新:https://mwhls.top/4122.html,无图/无目录/格式错误/更多相关请至首发页查看。
新的更新内容请到mwhls.top查看。
欢迎提出任何疑问及批评,非常感谢!

VoIP通话-基于SIP协议的Asterisk

该篇仅包含实现流程,各步骤的原因见该系列后续文章。

目录
项目说明

项目内容
项目目标
项目成果

Ubuntu 22.04 安装于 WSL

说明
下载与安装
进入与退出
报错
换 163 源

GCC 安装
Asterisk 安装

配置 sip.conf
配置 extensions.conf
WSL 端口映射
重启并检查

IP 电话安装

ZoiPer
Linphone

IP 通话

账户添加
信息汇总
通话

项目说明

项目内容

  • 基于 Linux 编译并搭建 oSIP 系统并通过 IP 电话通信测试

项目目标

  • 在 Linux 中编译安装 oSIP 或 eXosip。
  • 安装 mysql。
  • 使用 IP 电话通信测试。

项目成果

  • 于 Windows 子系统(WSL)的 Ubuntu22.04 中安装 Asterisk 作为 SIP 服务器,并于 Windows 中使用 ZoiPer 与 Linphone 相互通信。

Ubuntu 22.04 安装于 WSL

说明

  • WSL 即 Windows Subsystem for Linux,微软开发的安装于 Windows 中的 Linux 系统。
  • WSL 可以安装桌面,但我这里用不到,所以没安装。

下载与安装

  • 微软商店下载:https://www.microsoft.com/store/apps/9PN20MSR04DW

进入与退出

  • 命令行输入 wsl 进入 WSL。
  • exit 退出至 Windows 环境。

报错

  • 参考的对象类型不支持尝试的操作。

    • 卸载小黑盒加速器。
  • 安装其中一个文件系统时出现错误。有关详细信息,请运行'dmesg'。
    • 网上说 wsl --update 然后 wsl --shutdown 即可,但我没成功。
    • 我用 Tabby 里的 WSL 运行起来了,它似乎是运行了 C:\Windows\system32\wsl.exe 文件。

换 163 源

  • 参考:https://blog.csdn.net/xiangxianghehe/article/details/122856771
  • 说明:使用 163 的源,阿里源和清华源在我这里没效。
  • 执行:
    • cd /etc/apt
    • sudo vim s,按 a 进入输入模式,粘贴下载源,按 esc 进入模式选择,输入冒号,输入 wq 保存退出。
    • sudo cp sources.list sources.list.bak,备份下载源
    • sudo mv s sources.list,覆盖下载源,一个个删不如覆盖来的快。
  • 更新 apt
    • sudo apt update
    • sudo apt upgrade
deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse

GCC 安装

  • 说明:或许不安装也行。
  • 参考:https://blog.csdn.net/wjl18270365476/article/details/122659969
  • 安装:sudo apt install build-essential

Asterisk 安装

  • 参考:

    • 自己动手搭建免费VoIP服务器
    • 官方教程:http://www.asterisk.org.cn/asterisk-cn-doc/doc/295240.html
  • 安装:
  • sudo apt install asterisk
  • 备份配置文件:
    • sudo cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.backup
    • sudo cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.backup

配置 sip.conf

  • sudo vim /etc/asterisk/sip.conf
  • 说明:这里和参考的那篇不同,因为我看到后面有重复设置,为了避免被后面设置项覆盖,我选择修改后增加内容,而非博主的直接增加。
  • 修改
    • context=default
    • tcpenable = yes
  • 添加
[general]
bindport = 5060
bindaddr = 0.0.0.0
tcpbindaddr = 0.0.0.0

[1001]
type = friend
username = 1001
secret=1001
host=dynamic
disallow = all
allow = ulaw
transport = udp
context=from-1001

[1002]
type = friend
username = 1002
secret = 1002
host = dynamic
disallow = all
allow = ulaw
transport = udp
context=from-1002

配置 extensions.conf

  • sudo vim /etc/asterisk/extensions.conf
  • 说明:同样与参考的那篇不同,我发现已经有该参数了,所以省去。
  • 添加
[from-1001]
exten => 1001,1,Answer()
exten => 1001,n,Dial(SIP/${EXTEN},20,tr)
exten => 1001,n,Hangup

[from-1002]
exten => 1002,1,Answer()
exten => 1002,n,Dial(SIP/${EXTEN},20,tr)
exten => 1002,n,Hangup

WSL 端口映射

  • 安装 net-tools

    • sudo apt install net-tools
  • 查看 WSL ip 地址:
    • ifconfig
    • 即 eth0 的 inet,172.31.220.163
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.31.220.163  netmask 255.255.240.0  broadcast 172.31.223.255inet6 fe80::215:5dff:feb5:9751  prefixlen 64  scopeid 0x20<link>ether 00:15:5d:b5:97:51  txqueuelen 1000  (Ethernet)RX packets 23127  bytes 30204687 (30.2 MB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 15749  bytes 1157545 (1.1 MB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 端口映射

    • netsh interface portproxy add v4tov4 listenport=5060 listenaddress=0.0.0.0 connectport=5060 connectaddress=172.31.220.163
    • 检查:netsh interface portproxy show all

重启并检查

  • sudo /etc/init.d/asterisk restart
  • 查看 Linux 端口:
    • sudo lsof -i:5060
    • 有 asterisk 进程。
  • 查看 Windows 端口:
    • netstat -aon| findstr 5060
    • 输出: TCP 0.0.0.0:5060 0.0.0.0:0 LISTENING 5824

IP 电话安装

ZoiPer

  • 官网:https://www.zoiper.com/

  • 启动,选择免费账户运行。

  • 用户名及密码输入 1001,ip 172.31.220.163:5060(前文 WSL 的 ifconfig 命令获得)

Linphone

  • 官网:https://www.linphone.org/
  • SIP 账户登录,用户密码为 1002,ip 同上,协议选择 UDP

IP 通话

  • 查询 WSL 于 Windows 中的 IP:

    • Windows 下,ipconfig,找到 WSL 对应的 ip,我这里为 172.31.208.1

账户添加

  • ZoiPer 添加联系人 1002,通话地址为 1002@172.31.208.1:5060
  • Linphone 添加联系人 1001,通话地址为 1001@172.31.208.1:5060

信息汇总

账号 密码 SIP 地址 协议 联系方式
1001 1001 172.31.220.163:5060 UDP 1001@172.31.208.1:5060
1002 1002 172.31.220.163:5060 UDP 1002@172.31.208.1:5060
Asterisk 配置 Asterisk 配置 ip 由 WSL 的 ifconfig 得知
端口由 Asterisk 配置
Asterisk 配置 ip 由 Windows 的 ipconfig 得知
这里指的是其它账户联系该账户的地址

通话

  • 下图为 ZoiPer 的1001账户向 Linphone 的1002账户拨打
  • 下图为 Linphone 的1002账户向ZoiPer 的1001账户拨打
  • 下图为两个软件的拨打历史
  • 下图为两个软件的拨打时的截图,当我说话时,有声音
  • 拨打六分钟后的通话记录

VoIP通话-基于SIP协议的Asterisk(一)-实现流程相关推荐

  1. VoIP通话-基于SIP协议的Asterisk(零)-Demo

    文章首发及后续更新:https://mwhls.top/4116.html,无图/无目录/格式错误/更多相关请至首发页查看. 新的更新内容请到mwhls.top查看. 欢迎提出任何疑问及批评,非常感谢 ...

  2. VoIP通话之SIP协议

    一.前言 作为一名VoIP产品职业开发者,SIP可以说是我工作中接触最多的一种协议,是时候好好总结一下了. 二.概要 SIP(Session Initiation Protocol)属于应用层的控制协 ...

  3. 图解基于SIP协议的VoIP通话过程

    基于SIP协议的VoIP通话流程: 一次通话过程的抓包情况: 呼叫请求报文内容: 呼叫响应报文内容: 客户端样机上抓的RTP/RTCP语音流数据报文: RTP数据报文内容: RTCP报文内容(RTP数 ...

  4. 【个人作品】推荐一个SIP客户端-软电话,基于SIP协议,语言C++,界面QT4 开源,asterisk,tribox测试成功

    推荐一个SIP客户端-软电话,基于SIP协议,语言C++,界面QT4 开源,asterisk,tribox测试成功 属于个人独创作品,欢迎使用测试,欢迎与作者联系,共同研究.如果大家喜欢将拿出源码. ...

  5. linux sipp 呼叫转移_基于SIP协议的呼叫转移功能实现.pdf

    ea句拣 却m川1归3 年第却卷材第 u E,sw部署跚跚跚. E囚le倪cb胁'O响叫ni沁cS缸ci. &τT.e优ch. /De盹ι 15 , 2013 基于 SIP 协议的呼叫转移功能 ...

  6. 基于SIP协议的IP电话系统设计与实现

    网络IP电话不仅具有成本低廉.网络资源利用率高等诸多优点,而且还可以进一步集成多媒体信息(包括语音.图像.数据等),以实现交互式的实时通信等,具有很大的发展潜力,且有逐渐取代传统PSTN电话的趋势,成 ...

  7. 基于SIP协议的IP电话增值业务实现技术

    基于SIP协议的IP电话增值业务实现技术 王瑜,乐正友 (清华大学电子工程系,北京 100084)    摘  要:讨论了SIP协议以及基于SIP协议的IP电话增值业务实现技术,并对SIP CGI.C ...

  8. sip服务器开发--linphone是一款开源的基于sip协议的网络电话软件

    Android上最优秀的开源voip(网络电话)软件 目前知道有sipdroid.imsdroid.linphone,不知道还有没有其他的 还有MPhoneGG,使你使用Android手机也能拨打网络 ...

  9. 基于SIP协议的视频通讯

    1.sip协议及其发展 sip(session initiation protocal)称为会话发起协议,是由ietf(internet engineering task force)组织于1999年 ...

最新文章

  1. 寄快递要在面单上写身份证号?市民担心个人信息泄露
  2. Python中的numpy矩阵运算
  3. VC里的#define new DEBUG_NEW
  4. paramiko在windows上的安装和使用
  5. java用for循环修改密码_Java for循环的几种用法分析
  6. jsp java el表达式_jsp相关笔记,el表达式、jsp标签库(jstl)
  7. Oracle数据库的表结构 简单表的建立
  8. SpringMVC中的拦截器、过滤器的区别、处理异常
  9. ubuntu下如何查看和设置分辨率 (转载)
  10. Windows 平台sqlalchemy 连接oracle数据库
  11. Memento - 备忘录模式
  12. html网页老是崩溃,MSHTML.dll 错误模块导致ie9最近经常崩溃
  13. 修改文件 火车票买下铺_12306修改代码买下铺?12306码农太弱了吧 (转载)
  14. CSDN博客专家证书发放名单(10月已更新)
  15. listlength函数头文件_length函数
  16. c语言十六进制字母,c语言读取十六进制文件
  17. c语言中的三角函数公式,高中三角函数公式大全-必背基础知识点.doc
  18. 高铁对合肥及周边城市可达性及商业腹地变化影响研究
  19. 对控制台EXE程序的自动运行问题——以6S模型6s.exe为例
  20. 安装mysql包有问题_安装mysql数据库及问题解决方法

热门文章

  1. 设计模式 - 装饰器模式
  2. Java经典入门教程!java工程师的进阶之路
  3. 013 基于truffle的PetShop案例
  4. Could not resolve placeholder ‘project.version‘ in value “${project.version}”
  5. 【数据结构与算法】线性表的查找
  6. 华三(h3c)交换机操作命令详解vlan切换
  7. 回顾 2022 年 — 回顾 Elastic 这一年
  8. 数据结构与算法第2章:链表
  9. drupal 中基本的数据库操作
  10. 计算机副教授要求,计算机科学与技术学院副教授一二级岗申报评审条件