使用 Raspberry PI 作为 Asterisk 的 OpenVPN 路由器

使用 Raspberry PI 作为 Asterisk 的 OpenVPN 路由器

所以,我已经为这个问题苦思冥想了很长时间了。

我有以下配置:

  • OpenVPN 服务器,IP 1.2.3.1
  • Asterisk 服务器,连接到 OpenVPN 服务器,IP 1.2.3.3
  • Raspberry PI,本地接口 192.168.0.17,连接到 OpenVPN IP 1.2.3.6
  • 与Raspberry PI在同一个本地网络中的IP电话,本地ip 192.168.0.81

网络配置如下:

  • 树莓派上的本地连接是eth0
  • Raspberry 有额外的虚拟接口 eth0:1,其 IP 为 192.168.0.91
  • 树莓派上的 OpenVPN 连接是 tun0
  • 电话的本地 IP 为 192.168.0.81,网关设置为 192.168.0.91(树莓派)

在树莓派上,iptables如下:

#Empty all routing tables
sudo iptables -t nat -F
sudo iptables -F

#Masquerade all traffic leaving tun0 as if coming from 1.2.3.6
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

#redirect all traffic coming from eth0:1 to tun0
sudo iptables -A FORWARD -i eth0:1 -o tun0 -j ACCEPT

#redirect all traffic coming from tun0 to eth0:1
sudo iptables -A FORWARD -i tun0 -o eth0:1 -j ACCEPT

#Modify all packets coming to tun0 to forward then to the IP telephone
sudo iptables -t nat -A PREROUTING -i tun0 -j DNAT --to-destination 192.168.0.81

因此,我可以拨打电话,也可以接听电话(我有另一台笔记本电脑直接连接到 VPN 服务器并使用 Zoiper 进行测试)。我可以拨打电话,也可以从电话拨打电话,并且从电话到笔记本电脑的音频可以正常工作,但电话上根本没有传入音频。

我究竟做错了什么?

更新

我也尝试了以下

  1. 手机的设置是 192.168.200.1 / 255.255.255.0,连接到的树莓派的设置是 192.168.200.2 / 255.255.255.0(树莓派的 IP 是手机的网关)

  2. Raspberry pi 的 tun ip 为 10.34.87.2(使用 wlan0 连接到 wifi,然后连接到 vpn)。

  3. IP表 sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

  4. 在VPN服务器上(10.34.87.1)

route add 192.168.200.0/24 10.34.87.2

注意:iptables 没有伪装。现在我设法将流量从 192.168.200.1 路由到 10.34.87.1(vpn 服务器),但不能反过来。

有任何想法吗?

答案1

伪装是必需的吗?如果不是,由于您的手机将 Pi 作为其默认网关,因此它们可以毫不费力地访问服务器,只需确保服务器可以访问手机,在服务器上通过 Pi 为 192.168.0.0/24 添加路由(如果需要)(根据需要进行调整)。

相关内容