【问题标题】:Asterisk directmedia and NATAsterisk 直接媒体和 NAT
【发布时间】:2014-02-16 10:44:18
【问题描述】:

我有一个带有公共 IP 地址的 Asterisk 盒子和同一 NAT 设备后面的两个 SIP 客户端;我也有不同 NAT 后面的 SIP 客户端。我想知道 Asterisk 是否可以检测两个客户端是否位于同一个 NAT 之后,并在它们之间使用直接媒体,并对位于不同 NAT 之后的客户端使用其他选项?

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

【问题讨论】:

    标签: sip asterisk rtp nat


    【解决方案1】:

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

    【讨论】:

    • directmedia 将为所有人做到这一点。所以不是主题启动者想要的。
    【解决方案2】:

    不,不可能。

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

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

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

    【讨论】:

    • Asterisk 不能使用 NAT 框的公共 IP 地址检测来自同一个 NAT 的客户端吗?例如,如果两个客户端具有相同的公共 IP 地址,则它们位于相同的 NAT 后面。
    • 没有这样的实现。您可以添加/要求其他人添加。估计复杂度接近 1 周专家的工作时间(100+usd/hr)
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      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
      ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-22
        • 2018-07-16
        相关资源
        最近更新 更多