
ネットワークの設定に問題があります。ほぼ動作しますが、完全ではありません:)
田舎の建物にあるカメラにアクセスしたいです。パブリック IP なしでインターネットにアクセスできるので、VPN を作成することにしました。田舎の家には、IP カメラに接続された RaspberryPI (VPN クライアント) と LTE ルーター (Huawei B315) が 1 台ずつあります。パブリック IP のモデムがある私の家には、別の RPI (VPN サーバー) があります。VPN はルーティング モードになっています (RPI は別のネットワークを作成します)。
まとめると次のようになります。
- ゲートウェイ - 自宅のモデム
- RPI1 - 自宅のモデムに接続された VPN サーバー (IP: eth0-192.168.0.6 (ローカル ネットワーク)、tun0-10.8.0.1 (VPN ネットワーク))
- PRI2 - 相手宅のモデムに接続された VPN クライアント (IP: eth0-192.168.0.100、tun0-10.8.0.2)
- カメラ - Planet ICA-4150 (Active-X Web インターフェイス付き) - 別の家のモデムに接続 (IP: 192.168.0.10)
VPN は機能します。両方の RPI を相互に ping でき、自宅から RPI1 に、そして RPI2 に ssh できます。
カメラの Web インターフェイスを次のように開くことができるようにします: example.ddns.net:9000。DDNS が設定されており、動作します。
自宅のモデムで、ポート 9000 を外部からローカル IP 192.168.0.6:9000 (RPI1) に転送しました。
私のiptables設定: RPI1:
iptables -A PREROUTING -t nat -p tcp --dport 9000 -j DNAT --to-destination 10.8.0.2:9000
iptables -A PREROUTING -t nat -p udp --dport 9000 -j DNAT --to-destination 10.8.0.2:9000
iptables -A FORWARD -p tcp -d 10.8.0.2 --dport 9000 -j ACCEPT
iptables -A FORWARD -p udp -d 10.8.0.2 --dport 9000 -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE
RPI2:
iptables -A PREROUTING -t nat -p tcp --dport 9000 -j DNAT --to-destination 192.168.0.10:80
iptables -A PREROUTING -t nat -p udp --dport 9000 -j DNAT --to-destination 192.168.0.10:80
iptables -A FORWARD -p tcp -d 192.168.0.10 --dport 80 -j ACCEPT
iptables -A FORWARD -p udp -d 192.168.0.10 --dport 80 -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE
ブラウザに適切なアドレスを入力すると、Web インターフェイスは表示されますが、ログインできません。もちろん、ラップトップがカメラとローカルに接続されている場合はログインできます。また、カメラを自宅の LAN に接続し、自宅のモデムの 1 つのポートをカメラに直接エクスポートするという実験も行いました。これも機能しますが、TCP ポートと UDP ポートの両方をリダイレクトした場合のみです。自宅のローカル ネットワークからブラウザに 192.168.0.6:9000 と入力しても、ログインできません。
ポート 9000 を 24000 に変更することも試みましたが、うまくいきませんでした。
私が何を間違っているのか、誰か分かる人はいませんか? もしかしたら、iptables で何かを見逃したのでしょうか?
答え1
これは、ブラウザで 9000 ポートで Web ページを取得しているが、サーバーをホストしているカメラはポート 80 で要求を認識しているためだと思います。そのため、絶対 URL を配置した場合のポスト アクションはポート 80 に送信されます。これはブラウザのネットワーク タブで確認できます。その場合は、宛先 IP と dport 80 の iptable dnat を追加します。