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

文章首发及后续更新: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

OSIP2.png

配置 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

OSIP3.png

WSL 端口映射
  • 安装 net-tools
    • sudo apt install net-tools
  • 查看 WSL ip 地址:
    • ifconfig
    • 即 eth0 的 inet,172.31.220.163
eth0: flags=4163  mtu 1500
        inet 172.31.220.163  netmask 255.255.240.0  broadcast 172.31.223.255
        inet6 fe80::215:5dff:feb5:9751  prefixlen 64  scopeid 0x20
        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 0
        TX 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

OSIP4.png

重启并检查
  • 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 命令获得)

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

IP 通话

  • 查询 WSL 于 Windows 中的 IP:
    • Windows 下,ipconfig,找到 WSL 对应的 ip,我这里为 172.31.208.1
账户添加
信息汇总
账号 密码 SIP 地址 协议 联系方式
1001 1001 172.31.220.163:5060 UDP [email protected]:5060
1002 1002 172.31.220.163:5060 UDP [email protected]:5060
Asterisk 配置 Asterisk 配置 ip 由 WSL 的 ifconfig 得知
端口由 Asterisk 配置
Asterisk 配置 ip 由 Windows 的 ipconfig 得知
这里指的是其它账户联系该账户的地址
通话
  • 下图为 ZoiPer 的1001账户向 Linphone 的1002账户拨打
  • VoIP通话-基于SIP协议的Asterisk(一)-实现流程_第1张图片OSIP8.png
  • 下图为 Linphone 的1002账户向ZoiPer 的1001账户拨打
  • OSIP9.png
  • 下图为两个软件的拨打历史
  • OSIP10.png
  • 下图为两个软件的拨打时的截图,当我说话时,有声音
  • VoIP通话-基于SIP协议的Asterisk(一)-实现流程_第2张图片OSIP11.png
  • 拨打六分钟后的通话记录
  • OSIP12.png

你可能感兴趣的:(服务器,服务器,SIP,VoIP,Asterisk)