Raspberry Piをルーターとして使用していますか?

Raspberry Piをルーティングデバイスとして使用した人はいますか?

主にネットワークの監視に使用したいのですが、イーサネット用の入力と出力があれば素晴らしいのですが、そうではないので、イーサネット入力を使用してからUSBドングルをWi-Fiルーターとして使用してネットワークを監視することが非常に効果的かどうか疑問に思います。誰かがこのようなことをしましたか?インターネットの速度が大幅に低下しますか?

コメント

  • インターネット接続の速度によって異なります。私のものは100Mbです。したがって、’速度が低下すると確信しています;)
  • ‘ 30Mbpsのインターネット接続があります。現時点では、5Mbpsのトラフィックで、snortを使用したインラインラズベリーパイは約50〜95%のCPUと85%のメモリを消費しています。セットアップはまだ調整されていませんが、実際の数値をいくつか示したいと思います。
  • ラズベリーパイを使用してカスタマイズされたルーターでbadwidthの割り当てがどのように機能するかは誰にもわかりませんか? 3Mbpsインターネット接続のeed、私は10人のユーザーがいます。どのように分割されるのか説明できますか? 3Mbpsの速度。ありがとう。ご理解いただければ幸いです。 🙂
  • こんにちはカーブ。他の質問についてはご遠慮ください。代わりに、ページ上部の質問リンクを使用して新しい質問を開きます。ありがとう。
  • 多分これ? learn.adafruit.com/ …

回答

モデルBを、付属のイーサネットポートを1つだけ使用して、トラフィックシェーピングを備えたルーターとして使用してきました。ここでは、その方法について簡単に説明します。 :

  1. IPv4転送を有効にするので、Piは受信したトラフィックを転送することでルーターとして機能します
  2. Piを静的ネットワーク構成で構成して、以下に提案するDHCPの変更の影響を受けないようにします。参考として、私の/etc/network/interfacesの内容は次のとおりです。

    # 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 
  3. 次に、デフォルトゲートウェイ/ルーターがPiになるように、ネットワークのDHCP設定を変更します。これは、既存のADSLの設定を変更することを意味する可能性があります。ルーターボックス。上記の例では、PiのIPアドレスは192.168.1.1です。

デバイスが次に再接続するときネットワークでは、Piがインターネットへのゲートウェイであることが通知され、インターネットに接続されたすべてのトラフィックがそこに送信されます。次に、Piはそのすべてのトラフィックを通常のルーターに中継します。これらの変更を有効にするには、デバイスを切断してから再接続する必要がある場合があります。

これで、 vnstat

トラフィックシェーピング

トラフィックシェーピングについては、私自身の個人的なバリエーションを利用するもう1つの手っ取り早いガイドです。 ワンダーシェーパー

これを有効にするには、インターネット接続の速度を知る必要があります。通常、これは(元の)から見つけることができます。 )ルーターのウェブインターフェースですが、 speedtest を使用して見積もりを取得できません。

  1. sudo apt-get install iptables
  2. wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
  3. 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 
  4. sudo ./wondershaper eth0 3000 370、ここで:

    • 3000は、インターネット接続のダウンリンク速度( kbit )です。 。したがって、3Mbit == 3000kbit
    • 370は、インターネット接続のアップリンク速度であり、kbit単位です。
  5. 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を実行します。最初にクリアせずにアップリンクとダウンリンクのレートを変更できます。 、ただし、問題はありません。

更新:また、 ICMPリダイレクト。シェーピングを行うには、すべてのトラフィックがPiを通過する必要があるためです。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

コメント

  • 他のデバイスが接続できるwifiネットワーク名とパスワードをどのように設定しますか?
  • すばらしいガイドです。wondershaperの提案:クライアントごとまたは全体的な制限ですか?
  • @fommil:上記のガイドでは、ISPから提供されたモデム/ルーター/ WiFiアクセスポイントを引き続き使用することを前提としています。ただし、接続するすべてのクライアントに通知されるように構成すること”トラフィックをPi “に送信します。これは通常、Pi ‘(静的!)IPアドレスをISPボックスのDHCP設定に入力することによって行われます。通常、”ゲートウェイ”、”デフォルトゲートウェイ、またはおそらく”デフォルトルート”。
  • @Bob:あなたの番号入力は、インターネットリンクの合計です。 デマンドに基づいてこれをすべてのクライアントに公平に共有しようとするよりも、不思議なスクリプトです。したがって、インターネットを使用しているクライアントが1つだけの場合は、100%取得する必要があります。別のクライアントが起動すると、”セトリングタイム”(〜10秒)の後に、それぞれ50%を使用することになります。など。
  • 完璧です。 @fommilに注意してください。私のルーターはどれも(そして他の多くのルーターも同じだと思いますが)、DHCPを介して割り当てられたゲートウェイを設定する簡単な方法を提供していません。結局、ルーターでDHCPをオフにし、PiでDHCPサーバーをセットアップしました。’非常に簡単なプロセスです(必要に応じてガイドを検索してください)。

回答

ネットワークの背景が少しあるので、最初に頭に浮かぶのは、それをSnortボックスとして使用することです。そうすれば、インターフェイスが1つしかないことを心配する必要はありません。すべてのトラフィックをPiに転送するだけでなく、エンドデバイスにも渡すようにスイッチ/ルーターを設定します。これはスイッチポートモニターと呼ばれますが、デバイスによってはサポートされていません。これを行うには、管理対象スイッチが必要になる場合があります。Snortはトラフィックを分析してレポートします。Snortの詳細 http://www.snort.org/

この種のセットアップの良いところは、Piが横に座ってすべてを監視していることです。データとインラインで座っているのではなく、スイッチを介して実行されています。ソフトウェアを使用している場合gこのようにリッチしても、トラフィックは引き続き流れる可能性があり、監視されないだけです。 2つのインターフェースで説明しているように、プログラムがクラッシュし、ネットワークがクラッシュします。

これはpiをルーターとして使用しませんが、ネットワーク上を移動するトラフィックを監視およびレポートすることはできます。 。

回答

ルーティングにRaspberryPiを使用しましたが、うまく機能しました。あなたが言うように、Raspberry Piにはイーサネットポートが1つしかないため、少なくとももう1つのネットワークインターフェイスが必要です。 USBポートに接続された別のインターフェースを追加できます。 GSMモデムとWi-Fiスティックを使用しました。

注意事項:

  • 電源付きのUSBハブを使用してください。 Wi-FiおよびGSMデバイスは、RaspberryPiのUSBポートが供給できる電力よりも多くの電力を必要とします。
  • Wi-Fiデバイスを購入する場合は、Linuxを適切にサポートするデバイスを入手してください。アクセスポイントモードであり、すべてのスティックが機能するわけではありません。 linuxwireless.org で確認してください。

これが私のルーティングに関するブログ投稿と、 Wi-Fiアクセスポイントの設定に関する別の投稿。このガイドは、ルーティングの設定に役立ちました。ルーティングに関するものは、Raspberry Piに固有のものではなく、Linuxで一般的に機能するものなら何でも可能です。詳細は、どちらに少し依存します。使用するディストリビューション。

回答

Raspberry Piをルーターとして約1か月間、問題なく使用しています。 。自宅のWi-Fiルーターではなく、実際の商用Wi-Fiアクセスポートを持っているので、それを使用しました。 Wiiから”を借りました。これはホームLANに送られ、RaspberryPiの組み込みイーサネットはWAN /インターネットに送られます。

IPFire Raspberry Piの場合。シリアルコンソールと最新の安定バージョンを含まないARMバージョンが必要です。[ARM]タブをクリックします。” armv5telアーキテクチャの画像をダウンロードします”。

起動します。HDMITVとキーボードを接続します。最初のいくつかの質問に答えます。残りの構成は次のブラウザから実行できます。ホームネットワークなので、その後はテレビやキーボードは必要ありません。

それほど難しくはなく、チャンピオンのように機能しました。正式な手順は次のとおりです。 https://wiki.ipfire.org/hardware/arm/rpi/threeplus

最後にもう1つ。 USB電源のWi-Fiドングルを使用する場合は、RaspberryPiの電源を確認してください。700mAのUSB電源でRaspberryPiに電力を供給できますが、Wiに電力を供給するのに十分な容量はありません。 -Fi。電源付きのUSBハブを使用するか、1〜2AのUSB電源でRaspberryPiに電源を供給します。
幸運を祈ります!

回答

(この補遺は、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 

最初の列は、その量を示していますデバイスは送信しています。これは通常、インターネットへのアップロードを意味します。これに対する例外は、ISPから受信したデータを要求したデバイス(つまりダウンロード)を送信するADSLルーター自体(上記のサンプルのhome.gateway)です。もちろん、アップロードをインターネットに送信しますが、LAN上にないためこのツールからは見えないADSLモデムを使用して送信します。

もう1つの例外は、Raspberry Pi( “上記の「フラックス」)自体は、もちろん、管理するすべてのデータを双方向に送信します。

ただし、これらの例外を除いて、TX(送信)番号はアップロードを示し、RX(受信)番号はアップロードを示します。 )ダウンロードする番号。 3番目の列はデバイスのMACアドレスです(通常の「:」または「-」区切り記号はありません)。4番目の列は、デバイスがわかっている場合は、人間が読める形式のデバイスの名前を示します。

グラフ./index.pyを実行することで生成されます。これは、lighttpdindex.pyindex-file.names構成設定に追加されました/etc/lighttpd/lighttpd.conf)。手動で実行するだけで、いくつかの画像が生成され、 HTMLをSTDOUTに出力します。したがって、ブラウザで開くことができるファイルにリダイレクトする必要があります。

./index.py > index.html 

次に、お好みでindex.htmlを開きます。ブラウザ。

インストール要件(すべてapt-get installでインストールできます):

  • tcpdump-ネットワークトラフィックをキャプチャして説明するためのコマンドラインツール
  • rrdtool-ラウンドロビンデータベースツール、時系列データの記録とグラフ化
  • rrdcached -Round Robin Database Caching Daemon、複数のRRDファイルと同時に作業する場合のオーバーヘッドを削減するサービス。
  • pypy-upstream(Pythonプログラミング言語の高速実装)

    • お好みのストックPythonを使用できます:python rhodes.pypypyは、ジャストインタイム(JIT)コンパイルを実行するPythonプログラミング言語の代替実装であるため、長時間実行されるスクリプトは、より多くのメモリを犠牲にして、より少ないCPUサイクルを使用します)

使用上の注意:「tcpdump」ツールこのスクリプトで使用するには、生のネットワークトラフィックにアクセスするためのroot権限が必要です。これは、スクリプトの開始時にsudo tcpdumpを起動することで実現されるため、パスワードの入力を求められる場合があります。個人的には、/etc/sudoersにNOPASSWDルールを追加したので、プロンプトが表示されることはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です