それで、私はかなり長い間このことで頭を悩ませてきました。
次のような構成になっています:
- 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 には、IP 192.168.0.91 の追加の仮想インターフェイス eth0:1 があります。
- ラズベリーの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 を使用している別のラップトップがあります)。電話に電話をかけることも、電話からラップトップへの音声も機能しますが、電話に着信音声はまったくありません。
何が間違っているのでしょうか?
アップデート
私は次のことも試しました
電話機は 192.168.200.1 / 255.255.255.0 に設定されており、192.168.200.2 / 255.255.255.0 の Raspberry に接続されています (Raspberry の IP は電話機へのゲートウェイです)
tun ip 10.34.87.2 の Raspberry pi (wlan0 を使用して WiFi に接続し、次に VPN に接続)。
IPテーブル
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 が設定されているため、追加の作業なしでサーバーにアクセスできます。サーバーが携帯電話にアクセスできることを確認し、Pi 経由で 192.168.0.0/24 のルートをサーバーに追加します (必要な場合) (必要に応じて調整します)。