Итак, я уже довольно долго ломаю над этим голову.
У меня следующая конфигурация:
- 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
- IP-телефон в той же локальной сети, что и Raspberry PI, локальный IP-адрес 192.168.0.81
Сети настраиваются следующим образом:
- Локальное соединение на Raspberry - eth0
- Raspberry имеет дополнительный виртуальный интерфейс eth0:1 с IP 192.168.0.91
- OpenVPN-подключение на Raspberry — tun0
- Телефон имеет локальный IP-адрес 192.168.0.81 и шлюз 192.168.0.91 (raspberry)
На малине 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 для теста). Я могу звонить на телефон и с телефона, и звук с телефона на ноутбук работает, но на телефоне вообще нет входящего звука.
Что я делаю не так?
ОБНОВЛЯТЬ
Я также попробовал следующее
Телефон имеет настройки 192.168.200.1 / 255.255.255.0, подключен к Raspberry, у которого 192.168.200.2 / 255.255.255.0 (IP Raspberry является шлюзом к телефону)
Raspberry Pi с IP-адресом 10.34.87.2 (подключен к Wi-Fi через wlan0, затем к VPN).
IPTables
sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
На 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 является шлюзом по умолчанию, они могут связаться с сервером без дополнительных усилий. Просто убедитесь, что сервер может связаться с телефонами, добавьте на сервере маршрут (при необходимости) для 192.168.0.0/24 (адаптируйте его по мере необходимости) через Pi.