使 Asterisk 为另一个子网提供服务

使 Asterisk 为另一个子网提供服务

我有服务器Linux Ubuntu 12.04。它有两个子网 -192.168.0.1(eth0)192.168.1.1 (eth1)

有一个Asterisk 服务器(IP PBX)连接到第一个子网,假设它有 IP 地址192.168.0.28

我需要 SIP来自 192.168.1.x 的客户端子网能够连接到该 Astersik 服务器。

我的想法是让所有要连接的 SIP 客户端网关服务器(位于两个子网中的服务器,即192.168.1.1其子网)并使其端口转发所有 UDP 5060连接到192.168.0.28(IP BPX)。

这是我的想法:

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -d 192.168.0.28 -p udp --dport 5060 -m state \
    --state NEW -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 5060 -j DNAT \
    --to-destination 192.168.0.28
iptables -t nat -A POSTROUTING -p tcp --dport 5060 -d 192.168.0.28 \
    -o eth0 -j MASQUERADE

但是来自 192.168.1.x 的 SIP 客户端(软件电话)无法注册。我尝试过端口转发 http 端口来测试它:

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -d 192.168.0.28 -p tcp --dport 80 -m state \
    --state NEW -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT \
    --to-destination 192.168.0.28:80
iptables -t nat -A POSTROUTING -p tcp --dport 80 -d 192.168.0.28 \
    -o eth0 -j MASQUERADE

并且它工作正常,但是对于第一个带有 UDP 转发的功能,我无法让客户端在 Asterisk 服务器上注册。

更新:

正如建议的那样评论我需要使用route而不是iptables所以我猜命令会是这样的:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.28 dev eth0

但那并没有真正起作用。另外,我不想将整个 IP PBX 主机暴露给 192.168.1.x 网络,只为 SIP 客户端(软件电话)开放 5060 端口。

答案1

为什么要使用 NAT?在这种情况下,您可以直接在两个 LAN 之间进行路由,而无需进行任何端口转发。

无论如何,如果你真的想要使用 NAT,端口 5060 就足够了如果您的客户端是标准 SIP 客户端。如果它们是混合/自定义协议客户端(例如:Cisco H323 和/或 SCTP/SCCP 实现),您将需要打开其他端口范围。

编辑:您添加的路由是错误的。让我说明一下您的网络设置:

    局域网 192.168.0.x/24 局域网 192.168.1.x/24
     ---------------- ----------------
     | | | | | | | | | | | |
     | | | |
     | | | |
    PBX | UBUNTU 服务器 | SIP 客户端
192.168.0.28 192.168.0.1 192.168.1.1 例如:192.168.1.10
                    | |
                    |________________|

根据您的描述,Ubuntu 服务器是多宿主主机 - 它在 LAN 192.168.0.x 上有一个接口,在 LAN 192.168.1.x 上有一个接口。为了在网络之间路由,您需要宣布对客户Ubuntu 机器作为网关对于另一个 LAN。假设所有涉及的机器都是 Linux 客户端,您需要:

  • 在每台 192.168.0.x 机器上执行route add -net 192.168.1.0/24 gw 192.168.0.1
  • 在每台 192.168.1.x 机器上执行route add -net 192.168.0.x/24 gw 192.168.1.1
  • 在 Ubuntu 服务器上,你可以设置防火墙规则,只转发/路由 192.168.0.28 发出的数据包iptables -A FORWARD -d 192.168.0.28 -j ACCEPT,并iptables -A FORWARD -s 192.168.0.28 -j ACCEPT

请注意,上述步骤仅用于说明目的,不是最佳实践:例如,您可以(并且应该)在 LAN 各自的网关上插入正确的路由,而不是在每个客户端内部发出特定的路由命令。

然而,这只是最基本的社交层面——如果你问的是这个,你真的需要记录路由/NAT 是什么以及如何有效地使用它们。

相关内容