openvpnサーバーに接続されたraspbianオペレーティングシステムを備えたラズベリーパイがあります。 OpenvpnサーバーにはパブリックIPがあり、Ubuntuを実行します。この方法でVPNサーバーでポート転送を有効にすると(XXX.XXX.XXX.XXXがパブリックIP)、VPNサーバーのパブリックIPアドレスを介してRaspberry Piで実行されているWebアプリケーションにアクセスできます。
iptables -t nat -A PREROUTING -d XXX.XXX.XXX.XXX -p tcp --dport 8765 -j DNAT --to-dest 10.8.0.6:8765
しかし、ラズベリーパイと同じLANにあるIPカメラも接続したいと思います。残念ながら、IPカメラでopenvpnクライアントを実行できないため、IPカメラはローカルIP 192.168.1.110のみを持ち、ポート80でリッスンします。パブリックIPのポートをraspberry pi openvpnクライアントに転送してから、ローカルLANのWebカメラにさらに転送できますか?
答え1
Raspberry Piで以下を試してください。
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -I PREROUTING -p tcp --dport 8088 -j DNAT --to <cameraip>:<camera port>
# iptables -t nat -I POSTROUTING -s <cameraip>/255.255.255.0 -j MASQUERADE
次に、piからアプリケーションにアクセスするのと同じ方法でカメラにアクセスします。ただし、8765の代わりにポート8088を使用してください。頑張ってください。
答え2
コンピュータでIP転送を有効にしない別のソリューションです。
- OpenVPN サーバーから Raspberry にポートを転送します。
iptables -t nat -A PREROUTING \
-d XXX.XXX.XXX.XXX -p tcp --dport 8888 \
-j DNAT --to-dest 10.8.0.6:8888
- Raspberryでsocatなどを使用して、着信接続をカメラに転送します。
socat TCP-LISTEN:8888,fork TCP:192.168.1.110:80
これの利点は、副作用がある可能性があるコンピュータでIP転送を有効にする必要がないことです。 (ファイアウォールルールを追加せずに)ローカルコンピュータでIP転送を有効にすると、潜在的にLAN上のコンピュータがOpenVPNサーバーネットワーク上のコンピュータを攻撃する可能性があります(OpenVPNサーバーがそれを許可すると仮定します)。