Raspberry Piをルーティングデバイスとして使用している人はいますか?
主にネットワークの監視に使用したいのですが、イーサネットの入力と出力があればいいのですが、ないので、イーサネット入力を持つことでネットワークを監視するのが非常に効果的かどうか疑問に思います次に、USBドングルをWi-Fiルーターとして使用します。誰もこのようなことをしましたか?インターネットの速度が大幅に低下しますか?
Raspberry Piをルーティングデバイスとして使用している人はいますか?
主にネットワークの監視に使用したいのですが、イーサネットの入力と出力があればいいのですが、ないので、イーサネット入力を持つことでネットワークを監視するのが非常に効果的かどうか疑問に思います次に、USBドングルをWi-Fiルーターとして使用します。誰もこのようなことをしましたか?インターネットの速度が大幅に低下しますか?
回答:
私はモデルBを、トラフィックシェーピングを備えたルーターとして使用し、付属のイーサネットポートを1つだけ使用しています。方法について簡単に説明します。
Piを静的ネットワーク構成で構成して、以下に提案するDHCPの変更の影響を受けないようにします。/etc/network/interfaces
参照としてのmyの内容は次のとおりです。
# pi@flux:/home/pi/projects/adsl/rrdlogger (master *) # cat /etc/network/interfaces auto lo iface lo inet loopback #iface eth0 inet dhcp iface eth0 inet static address 192.168.1.1 netemask 255.255.255.0 gateway 192.168.1.254 # IP of my ADSL router box allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
次に、ネットワークのDHCP設定を変更して、デフォルトゲートウェイ/ルーターがPiになるようにします。これはおそらく、既存のADSLルーターボックスの設定を変更することを意味します。上記の例では、PiのIPアドレスは192.168.1.1
です。
デバイスが次にネットワークに再接続すると、Piがインターネットへのゲートウェイであることが通知され、インターネットにバインドされたすべてのトラフィックがそこに送信されます。Piはそのすべてのトラフィックを通常のルーターに中継します。これらの変更を有効にするには、デバイスを切断してから再接続する必要がある場合があります。
vnstatなど、監視を行うツールを作成またはインストールできます。
トラフィックシェーピングについては、不思議な独自の変種wondershaperを利用するもう1つの手軽なガイドがあります。
これを有効にするには、インターネット接続の速度を知る必要があります。通常、これは(元の)ルーターのWebインターフェースから見つけることができますが、失敗するとspeedtestを使用して推定値を取得できます。
sudo apt-get install iptables
wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
sudo ./wondershaper eth0
トラフィックシェーピングの現在のステータスを出力します。当然のことながら、期待されるステータスはシェーピングがないことです。つまり、有効な単一のルールがありますpfifo_fast
。
eth0
は、モデルBの有線ネットワークアダプターifconfig
の名前です。システムのインターフェイスの名前については、を参照してください)# pi@flux:/home/pi/projects/adsl/wondershaper (master *) # sudo ./wondershaper eth0 qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 Sent 1908 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0
sudo ./wondershaper eth0 3000 370
、 どこ:
3000
は、インターネット接続のダウンリンク速度(kbit)です。したがって、3Mbit == 3000kbit370
私のインターネット接続のアップリンク速度(kbit単位)です。sudo ./wondershaper eth0
より多くの出力が表示されるはずです:
# pi@flux:/home/pi/projects/adsl/wondershaper (master *) # sudo ./wondershaper eth0 qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 0 Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 40: parent 1:40 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 10: parent 1:10 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 20: parent 1:20 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 30: parent 1:30 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc ingress ffff: parent ffff:fff1 ---------------- Sent 768 bytes 12 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 class htb 1:1 root rate 370000bit ceil 370000bit burst 10Kb cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 3459453 ctokens: 540531 class htb 1:10 parent 1:1 leaf 10: prio 1 rate 370000bit ceil 370000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 540531 ctokens: 540531 class htb 1:20 parent 1:1 leaf 20: prio 2 rate 246000bit ceil 246000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 813000 ctokens: 813000 class htb 1:30 parent 1:1 leaf 30: prio 3 rate 74000bit ceil 74000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 2702687 ctokens: 2702687 class htb 1:40 root leaf 40: prio 0 rate 100000Kbit ceil 100000Kbit burst 512Kb cburst 1600b Sent 3486 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 15 borrowed: 0 giants: 0 tokens: 654609 ctokens: 1250
これで、アウトバウンドネットワークトラフィックがPiによってシェーピングされ、元のルーティングボックスではなくPiがトラフィックを制御できるように、インバウンドトラフィックがわずかに調整されます。
シェーピングを無効にするには、単に実行しsudo ./wondershaper eth0 clear
ます。最初にクリアせずにアップリンクとダウンリンクのレートを変更できますが、問題はありません。
更新:シェーピングを行うには、すべてのトラフィックがPiを通過する必要があるため、ICMPリダイレクトの送信も無効にする必要があります。Linuxカーネルは、ホームネットワーク上のクライアントがPiを介してトラフィックをバウンスするのではなく、ADSLボックスと直接通信できることを把握できるほど賢く、あらゆる機会にこれを伝えます。その後、クライアントはトラフィックをADSLボックスに直接送信しますが、Piはそれを形成する機会を得られません。そのようにオンザフライで無効にします(次回の再起動時に失われます):
echo 0 | sudo tee /proc/sys/net/ipv4/conf/*/send_redirects
起動時にこれを設定するには、次を更新します。 /etc/sysctl.conf
net/ipv4/conf/eth0/send_redirects = 0
(このヒントについてはhttps://unix.stackexchange.com/a/58081/22537に感謝します)
Linuxゲートウェイの構成に関する個人的なメモにも興味があるかもしれません:http : //www.robmeerman.co.uk/unix/gateway
wondershaper
しかし、あなたの提案について質問があります:制限はクライアントごとですか、それとも全体ですか?
ネットワークの背景が少しあるので、最初に思い浮かぶのは、それをSnortボックスとして使用することです。そうすれば、インターフェイスが1つだけになることを心配する必要がなくなります。すべてのトラフィックをPiに転送するようにスイッチ/ルーターを設定しますが、エンドデバイスにも転送します。これはスイッチポートモニターと呼ばれますが、デバイスがサポートしていない場合があります。これを行うには、マネージドスイッチが必要になる場合があります。その後、Snortはトラフィックを分析してレポートします。Snortの詳細http://www.snort.org/
この種のセットアップの良い点は、Piがデータに沿って座っているのではなく、スイッチを介して実行されているすべてを監視していることです。この方法でソフトウェアの不具合が発生した場合、トラフィックは監視されないだけで流れます。2つのインターフェイスで説明していることで、プログラムがクラッシュし、ネットワークがクラッシュします。
これはpiをルーターとして使用しませんが、ネットワークを介して移動しているトラフィックを監視およびレポートできます。
ルーティングにRaspberry Piを使用しましたが、うまく機能しました。あなたが言うように、Raspberry Piには1つのイーサネットポートしかないため、少なくとも1つ以上のネットワークインターフェイスが必要です。USBポートに接続された別のインターフェイスを追加できます。GSMモデムとWi-Fiスティックを使用しました。
注意事項:
ルーティングに関する私のブログ投稿と、Wi-Fiアクセスポイントのセットアップに関する別のブログ投稿です。このガイドは、ルーティングのセットアップに役立ちました。ルーティングは、Raspberry Piに固有のものではありません。一般にLinuxで動作するものなら何でも可能です。詳細は、使用するディストリビューションによって少し異なります。
Raspberry Piを約1か月間ルーターとして問題なく使用しています。自宅のWi-Fiルーターではなく、実際の商用Wi-Fiアクセスポートを持っているので、それを使用しました。また、Wiiから "借用"されたUSB-to-Ethernetコンバーターもあります。それはホームLANに行き、Raspberry Piの内蔵イーサネットはWAN /インターネットに行きます。
Raspberry Pi用のIPFireのコピーを入手してください。シリアルコンソールと最新の安定バージョンのないARMバージョンが必要です。[ARM]タブをクリックします。「armv5telアーキテクチャのイメージ」をダウンロードします。
それから起動します。HDMIテレビとキーボードを接続します。最初のいくつかの質問に答えてください。残りの設定はホームネットワーク上のブラウザから実行できるため、その後はテレビやキーボードは必要ありません。
それほど難しくはなく、チャンピオンのように働きました!正式な手順は次のとおりです。http://wiki.ipfire.org/en/hardware/arm/rpi
最後に一つだけ。USB電源のWi-Fiドングルを使用する場合は、Raspberry Piの電源を確認してください。Raspberry Piに電力を供給するには700 mAのUSB電源で十分かもしれませんが、Wi-Fiに電力を供給することはあまりありません。給電されたUSBハブを使用するか、1〜2 AのUSB電源でRaspberry Piに給電します。
幸運を!
(この補遺は、 PiをLANのインターネットゲートウェイとして設定する方法に関するガイドであった、以前の回答に続きます)
インターネット全体の使用状況を監視することに満足するのではなく、LAN上の各デバイスのインターネット使用状況を監視するツールを作成しました。これにより、コンソールウィンドウで瞬間的な使用状況を確認したり、過去の使用状況のグラフを生成したりできるため、一晩で何が起こったかを確認できます。
Rhodes、LANデバイスのリアルタイムおよび過去のネットワーク使用状況を監視するツール(MACアドレスに基づく):https : //github.com/meermanr/adsl/tree/master/rhodes
コンソール出力のサンプル:
193 kiB/s TX 17 kiB/s RX 0004edbf98c0 home.gateway (Billion Electric Co.)
0 kiB/s TX 0 kiB/s RX 2002af18dc15 Samsung Galaxy Tab 10.1, Vicky
0 kiB/s TX 0 kiB/s RX 34af2c01197b Nintendo 3DS:XL, Robert
0 kiB/s TX 0 kiB/s RX 34af2c3af204 Nintendo 3DS:XL, Vicky
0 kiB/s TX 0 kiB/s RX 34af2c9cfffd Nintendo WiiU
0 kiB/s TX 0 kiB/s RX 6045bd9c9dbc Xbox360 Slim
0 kiB/s TX 0 kiB/s RX 745e1c56c297 Pioneer SX-LX57
13 kiB/s TX 109 kiB/s RX 7831c1be0c34 Az Pro (Macbook Pro)
0 kiB/s TX 0 kiB/s RX 80ea96e6214e Roberts-AirPort-Time-Capsule
0 kiB/s TX 0 kiB/s RX 88308a770370 Samsung Galaxy S3, Vicky
189 kiB/s TX 211 kiB/s RX b827eb8fc0f3 Flux (Raspberry Pi)
2 kiB/s TX 39 kiB/s RX b8e8563acb34 Macbook Pro, Vicky
0 kiB/s TX 0 kiB/s RX d022be2c26ef Samsung Galaxy Note 3, Rob
0 kiB/s TX 0 kiB/s RX f82fa89368ea
最初の列は、送信するデバイスの量を示します。これは通常、インターネットへのアップロードを意味します。これの例外は、ADSLルーター自体(上記のサンプルではhome.gateway)で、ISPから受信したデータを要求したデバイスに送信します(つまり、ダウンロードします)。もちろんアップロードもインターネットに送信されますが、ADSLモデムを使用して送信します。ADSLモデムはLAN上にないため、このツールには表示されません。
もう1つの例外は、Raspberry Pi(上記の「Flux」)自体であり、もちろん、それが管理するすべてのデータを双方向に送信します。
ただし、これらの例外は別として、TX(送信)番号はアップロードを指し、RX(受信)番号はダウンロードを指します。3番目の列は、デバイスのMACアドレスです(通常の「:」または「-」セパレータなし)。4番目の列には、人間が読める形式のデバイス名が表示されます(既知の場合)。
チャートはを実行して生成されます./index.py
。これは、などのWebサーバーから呼び出されることを目的としていますlighttpd
(index.py
のindex-file.names
構成設定に追加されます/etc/lighttpd/lighttpd.conf
)。手動で実行するだけで、いくつかの画像が生成され、HTMLがSTDOUTに出力されます。そのため、ブラウザで開くことができるファイルにそれをリダイレクトする必要があります。
./index.py > index.html
次に、好みのブラウザーでindex.htmlを開きます。
インストール要件(すべてでインストールできますapt-get install
):
tcpdump
-ネットワークトラフィックをキャプチャおよび説明するためのコマンドラインツールrrdtool
-ラウンドロビンデータベースツール、時系列データの記録とチャートrrdcached
-ラウンドロビンデータベースキャッシュデーモン、複数のRRDファイルを同時に使用する場合のオーバーヘッドを削減するサービス。pypy-upstream
(Pythonプログラミング言語の高速実装)
python rhodes.py
(pypy
Just-In-Time(JIT)コンパイルを行うPythonプログラミング言語の代替実装であるため、長時間実行されるスクリプトはより多くのメモリを必要としますがCPUサイクルは少なくなります)使用上の注意:このスクリプトで使用される「tcpdump」ツールには、生のネットワークトラフィックにアクセスするためのルート権限が必要です。これはsudo tcpdump
、スクリプトの起動時に起動することで実現されるため、パスワードの入力を求められる場合があります。個人的には、NOPASSWDルールを追加した/etc/sudoers
ため、プロンプトは表示されません。