通过 ZeroTier 连接来自不同 LAN 的两个 SIP 电话

通过 ZeroTier 连接来自不同 LAN 的两个 SIP 电话

我想通过 ZeroTier 连接来自不同位置的两部 SIP 电话。配置星号没有问题,但我不知道如何使用转发功能连接远程 (LAN 2) 电话。

情况可以这样描绘:

--------------------------+---------------------------------     
LAN 1                     I           LAN 2
192.168.2.0/24            I           192.168.3.0/24
--------------------------+---------------------------------
                          I                          
  ASTERISK +              I           
ZeroTier node 1           I           ZeroTier node 2
192.168.192.117  <================>   192.168.192.128                               
192.168.2.117             I           192.168.3.105
      ^                   I                 ^
      |                   I                 |
      v                   I                 v                                   
SIP phone 1               I           SIP phone 2                                        
192.168.2.101             I           192.168.3.101

我的 asterisk 服务器在 192.168.2.117 上运行。在 LAN 1 上查看电话没有问题。问题是如何在 LAN 2 上查看电话。

我阅读了一些关于 iptables 的解释,并取得了部分成功——似乎我可以看到来自 LAN 1 上 ZeroTier 节点上的远程电话的数据包,因为有这样的规则:

iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A PREROUTING -p udp -i eth0 -j DNAT --to 192.168.192.117

这个想法是转发来自 LAN 2 的所有传入 UDP 并将其转发到 LAN 1 上的 ZeroTier。我必须承认我不完全理解这里写的内容......而且它也可能完全是错误的 :(

但就这样了。没有办法回复。

ZeroTier 本身支持一些桥接,但我必须承认网络对我来说是“高深的数学”。

有人可以帮忙吗?

答案1

在同事的大力帮助下,我成功实现了这个功能。我的想法是让 Asterisk 看到来自 ZeroTier 节点 2 的电话 2 数据包 - 让 192.168.3.101 看起来像是 192.168.192.128。所以:

  • 对于来自电话 2(192.168.3.101)的每个 UDP 数据包,将源 IP 更改为 192.168.192.128,将目标 IP 更改为 192.168.192.117
  • 对于来自 asterisk (192.168.192.117) 的响应数据包 - 将源 IP 更改为 192.168.192.128,将目标 IP 更改为 192.168.3.101
iptables -t nat -A PREROUTING  -p udp -s 192.168.3.101   -j DNAT --to 192.168.192.117
iptables -t nat -A POSTROUTING -p udp -s 192.168.3.101   -j SNAT --to 192.168.192.128
iptables -t nat -A PREROUTING  -p udp -s 192.168.192.117 -j DNAT --to 192.168.3.101
iptables -t nat -A POSTROUTING -p udp -s 192.168.192.117 -j SNAT --to 192.168.192.128

现在,通过一些超基本的星号配置,我可以通过 ZeroTier 呼叫远程 SIP 电话,而无需对 ZeroTier 节点进行任何额外配置或以任何方式更改 LAN 2 配置。

相关内容