Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sip 星号directmedia和NAT_Sip_Asterisk_Rtp_Nat - Fatal编程技术网

Sip 星号directmedia和NAT

Sip 星号directmedia和NAT,sip,asterisk,rtp,nat,Sip,Asterisk,Rtp,Nat,我有一个带有公共IP地址的星号框,在同一个NAT设备后面有两个SIP客户端;我也有不同NAT背后的SIP客户端。我想知道Asterisk是否可以检测两个客户端是否位于同一NAT后面,并在它们之间使用直接介质,以及是否可以为位于不同NAT后面的客户端使用其他选项 PS:我假设每个NAT盒都有一个外部IP地址,这个假设对我来说很好。不,不可能 原因:大多数现代路由器都有网络192.168.1.0/24,因此它会认为几乎所有的客户端都在同一个网络中 但对于某些客户端,您可以强制nat=never di

我有一个带有公共IP地址的星号框,在同一个NAT设备后面有两个SIP客户端;我也有不同NAT背后的SIP客户端。我想知道Asterisk是否可以检测两个客户端是否位于同一NAT后面,并在它们之间使用直接介质,以及是否可以为位于不同NAT后面的客户端使用其他选项

PS:我假设每个NAT盒都有一个外部IP地址,这个假设对我来说很好。

不,不可能

原因:大多数现代路由器都有网络192.168.1.0/24,因此它会认为几乎所有的客户端都在同一个网络中

但对于某些客户端,您可以强制nat=never directmedia=yes。使用该设置,它将直接工作,但不会与服务器一起工作


可选地,您可以将vpn(openvpn?)隧道放到您的网络中,将其添加到localnet=list并使用不带NAT的直接路由。

星号11.6具有此功能。请查看sip.conf.example并查找directmedia部分。

您可以尝试将其设置为directmedia=nonat。这样,只有当客户端不支持NAT时,它才会这样做。但是,我认为它对您的情况不起作用,因为您还需要PBX在与2个客户端相同的NAT后面,这是没有用的。

我有相同的设置,它正在工作

Asterisk 1.8中所需的配置位于
sip.conf
(或任何其他包含的文件)中。我在
[常规]
部分中输入:

[general]
directmediapermit=192.168.0.0/24 (local_network/netmask)
directmediadeny=0.0.0.0/0
...
在SIP设备定义中,在本例中,SIP电话:

[phones]
nat=no
directmedia=nonat
...

Asterisk是否可以使用NAT框的公共IP地址检测来自同一NAT的客户端?例如,如果两个客户端具有相同的公共IP地址,则它们位于相同的NAT后面。没有这样的实现。你可以加上/请其他人加上。专家工作时间(100+美元/小时)近一周的估计复杂度directmedia将为所有人做到这一点。所以这不是我想要的。