私窒素ネットワークVアイデア右エコーダーはイーサネットを介してRaspberry Piに直接接続され、Raspberry Piはイーサネットを介して接続されますwlan0
。 Raspberry PiのVPN接続を介してNVRのすべてのトラフィックをルーティングしたいと思います。
VPNを起動する方法は次のとおりです。
openvpn --config /home/pi/my_conf.conf --pull-filter ignore redirect-gateway --route-noexec
このコマンドは、サーバーがプッシュしたパスを無視しています。OpenVPNチュートリアルでこれを見つけました。確認すると、tun0
VPN接続後にデバイスが作成されたことが確認されました。
したがって、NVRからVPNにトラフィックをルーティングするには、eth0
NVRが使用する範囲内の静的IPをRaspberry Piのインターフェイスに提供する必要があります。私は次の方法でやりました/etc/dhcpcd.conf
。
interface eth0
static ip_address=192.168.1.1/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
私のRaspberry Piにはwlan0
ゲートウェイがあるので、192.168.0.1
競合はありません。これで、NVRの範囲にあるethインターフェイスのIPアドレスがあり、VPNサーバーに接続されているので、NVRのIPアドレスにアクセスできるルートを追加tun0
するだけですtun0
。 192.168.0/24の範囲の一部のIPカメラにアクセスしたいので、ルーティングテーブルで次のことを行います。
pi@raspberrypi:~ $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 304 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 304 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.255.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
指標があるため、その範囲内のすべての項目が192.168.1.0/24
通過するのがわかります。tun0
0
dnsmasq
NVRでもeth0
固定IPアドレスを使用していますが192.168.1.9
。
明らかに、NVRのどのカメラにもアクセスできません。 NVRの接続を192.168.1.189
カメラに追加してみました。私は実行しようとしましたが、tcpdump
これはeth0
基本的に私が見るものです:
17:10:46.673062 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.1.189 tell 192.168.1.9, length 46
NVR(192.168.1.9
)が誰であるかを見つけようとしていますが、192.168.1.189
応答がありません。私の考えには何もルーティングされないようです。私も192.168.1.189
それが動作することを確認するためにラズベリーパイにpingを試みました。最初の試みに成功しました。数分後にはもうPingを送信できなくなり、その理由がわかりません。しかし、Pingは192.168.1.1
常に動作します。
修正する:
私は私が経験している問題をある程度理解しています。 NVRは192.168.1.0/24
サブネット上にあり、同じサブネット上のカメラにアクセスしようとするため、IPパケットはゲートウェイ(Raspberry Pi)に送信されません。代わりに192.168.1.189
tcpdumpが示すように、ARP要求を送信してカメラがどこにあるかを調べようとします。
この問題を解決するために、NVRのサブネットをに変更し、192.168.2.0/24
Raspberry Piのインターフェイスにアドレスを提供しました192.168.2.1
。eth0
これで、NVRがカメラや一部のAmazonサーバーなどに送信するすべてのパケットを見ることができます。しかし、答えはありませんでした。 NVRはパケットを送信するだけで何も受信しません。確認してみるtun0
と到着経路に異常がないのでパケットは通過しなければならないようです。ただし、パケットは返されません。
修正する:
手動でパスを追加する代わりに、クライアントで開かれたVPN設定ファイルに次のものを追加しました.
route 192.168.1.0 255.255.255.0
route-metric 0
route-nopull
真下client
。 VPNに接続すると、ルーティングテーブルにこのルートを表示できるようになりました。 Raspberry Piでpingを実行することもできます。しかし、NVRはまだパケットを送信するだけで、情報を受け取らないようです。
重要:実行すると、カメラにtcpdump -vvv -i eth0
多くのパケットが移動していることがわかります。それらを通過させる測定値があるパスがあるので、192.168.1.189
彼らは行かなければなりません。走れば数分間走っても何も見えない。だから物事はそこで進行しません。ただし、Raspberry Piの内部で(ssh経由で)実行すると、tcpdumpはすべてのpingパケットを見ることができます。これはパスが機能していることを確認します。ただし、イーサネットからの着信パケットには機能しません。tun0
0
tcpdump -vvv -i tun0
ping 192.168.1.189
tun0