私の家のデバイスは、インターネットデータを過度に使用していくつかの問題を引き起こしています。問題は、どのデバイスが自分のデータをすべて取得しているのかわからないことです。
常にオンになっているラズベリーパイがあります。私の計画は、イーサネットを介してパイをアクセスポイントに接続し、パイにホットスポットを設定して、すべての家電製品がパイのホットスポットに接続できるようにすることです。
これにより、すべてのインターネットトラフィックがpiのホットスポットを通過するため、piを使用して各デバイスのデータ使用量を監視する方法が必要になると思います。
私の研究ではWiresharkを見つけましたが、このユースケースでは過度で非効率的なようです。 (非常に複雑なことは言うまでもありません)。
一部のサイトではntopの使用を提案していますが、機能しているかどうかわかりません。
Tcpdump: また、非常に複雑で過度に見えます。
私が使用できるものについての提案はありますか? (私のルーターはドライブ機能を使用せず、ルーターを購入したくありません。)Pyのネットワークネットワークハードウェアの悪さによって引き起こされる小さなボトルネックを引き起こす可能性があります。
答え1
まず、どのデバイスかを知るためにデバイスを識別する方法が必要です。プライバシー保護のために、一部の最新のモバイルデバイスは、工場出荷時のMACアドレスを使用するために特定のネットワークを信頼するように特別に設定しない限り、MACアドレスをランダムに指定します。
通常、固定MACアドレスがあれば、IPアドレスをある程度安定して維持するのに十分ですが、RasPiホットスポットのDHCPサーバーを設定して、常にMACアドレスを介して各クライアントに特定の固定IPアドレスを提供できます。
既知のIPアドレスを使用するクライアントがある場合は、iptables
デバイスごとに2つのルールがパケット/バイトカウンタとして機能する独自のルールチェーンを追加できます。
iptables -N packetcount # create a custom rule chain
iptables -A packetcount -s <device IP> -o <wired interface> -j RETURN -m comment --comment "FROM <device name>"
iptables -A packetcount -i <wired interface> -d <device IP> -j RETURN -m comment --comment "TO <device name>"
[...add a pair of rules for each device...]
次に、このカスタムチェーンを次のように追加します。最初標準ルールチェーンのFORWARDルール:
iptables -I FORWARD 1 -j packetcount
これで、デバイスごとに入出力するデータのパケット/バイトカウンタセットがあり、次を使用して読み取ることができます。
iptables -L packetcount -vn
(-n
ここでオプションを使用すると、コマンドはホスト名のIPを解決するのに時間を費やすことはなく、前の-m comment --comment ...
操作によって各カウンタに対して人が読める名前が生成されます。)
リストの長さは80文字を超えるため、広い端末ウィンドウを使用して確認してください。リストの最初の 2 列は、ルールに一致するパケット数と合計バイト数です。
カウンタをゼロにリセットするには(たとえば、カウンタを読んだ後1日に1回)、次のようにします。
iptables -Z packetcount
最大の精度を得るために、リストとゼロ調整を組み合わせて、各カウンタをゼロ調整直前にリストすることができます。
iptables -Z packetcount -L -vn