【发布时间】:2014-02-16 10:44:18
【问题描述】:
我有一个带有公共 IP 地址的 Asterisk 盒子和同一 NAT 设备后面的两个 SIP 客户端;我也有不同 NAT 后面的 SIP 客户端。我想知道 Asterisk 是否可以检测两个客户端是否位于同一个 NAT 之后,并在它们之间使用直接媒体,并对位于不同 NAT 之后的客户端使用其他选项?
PS:我假设每个 NAT 盒子都有一个外部 IP 地址,这个假设对我有好处。
【问题讨论】:
我有一个带有公共 IP 地址的 Asterisk 盒子和同一 NAT 设备后面的两个 SIP 客户端;我也有不同 NAT 后面的 SIP 客户端。我想知道 Asterisk 是否可以检测两个客户端是否位于同一个 NAT 之后,并在它们之间使用直接媒体,并对位于不同 NAT 之后的客户端使用其他选项?
PS:我假设每个 NAT 盒子都有一个外部 IP 地址,这个假设对我有好处。
【问题讨论】:
Asterisk 11.6 具有此功能,请查看 sip.conf.example 并查找 directmedia 部分。
【讨论】:
不,不可能。
原因:大多数现代路由器都有网络 192.168.1.0/24,因此它会认为几乎所有客户端都在同一个网络中。
但是对于某些客户端,您可以强制 nat=never directmedia=yes。使用该设置,它将直接工作,但不能与服务器一起工作。
您可以选择将 vpn(openvpn?) 隧道连接到您的网络,将其添加到 localnet= 列表并使用不带 NAT 的直接路由。
【讨论】:
您可以尝试将其设置为 directmedia=nonat。这样,只有在客户端不在 NAT 之后,它才会这样做。但是我认为它不适用于您的情况,因为您还需要 PBX 在与 2 个客户端相同的 NAT 后面,这是无用的。
【讨论】:
我有相同的设置,它正在工作。
Asterisk 1.8 所需的配置在sip.conf(或任何其他包含的文件)中。我输入了[general] 部分:
[general]
directmediapermit=192.168.0.0/24 (local_network/netmask)
directmediadeny=0.0.0.0/0
...
在 SIP 设备定义中,在这种情况下,SIP 电话:
[phones]
nat=no
directmedia=nonat
...
【讨论】: