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


50

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

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


3
インターネット接続の速度に依存します。私のものは100Mbなので、私はそれが遅くなると確信しています;)
ジョンラルーイ

3
私は30Mbpsのインターネット接続を使用しており、現時点では5Mbpsのトラフィックで、snortを使用したインラインラズベリーパイは、CPUとメモリの85〜95%を消費しています。私の設定はまだ調整されていませんが、いくつかの実際の数字を見せたいです。
パイプ

誰かがラズベリーパイを使用してカスタマイズされたルーターでbadwidth割り当てがどのように機能するのですか?たとえば、3Mbpsのインターネット接続の速度があり、10人のユーザーがいます。どのように分割されるのか説明できますか?3Mbpsの速度。ありがとう。ご理解ください。:)
kirbs

2
こんにちは。別の質問については質問しないでください。代わりに、ページの上部にある[ 質問する]リンクで新しい質問を開きます。ありがとうございました。

たぶんこれ?learn.adafruit.com/...
zengr

回答:


30

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

  1. IPv4転送を有効にして、Piが受信したトラフィックを転送することでルーターとして機能するようにします
  2. 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
    
  3. 次に、ネットワークのDHCP設定を変更して、デフォルトゲートウェイ/ルーターがPiになるようにします。これはおそらく、既存のADSLルーターボックスの設定を変更することを意味します。上記の例では、PiのIPアドレスは192.168.1.1です。

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

vnstatなど、監視を行うツールを作成またはインストールできます。

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

トラフィックシェーピングについては、不思議な独自の変種wondershaperを利用するもう1つの手軽なガイドがあります。

これを有効にするには、インターネット接続の速度を知る必要があります。通常、これは(元の)ルーターのWebインターフェースから見つけることができますが、失敗すると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ます。最初にクリアせずにアップリンクとダウンリンクのレートを変更できますが、問題はありません。

更新:シェーピングを行うには、すべてのトラフィックが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


他のデバイスが接続できるwifiネットワーク名とパスワードをどのように設定しますか?
-fommil

素晴らしいガイド。wondershaperしかし、あなたの提案について質問があります:制限はクライアントごとですか、それとも全体ですか?
ボブ

@fommil:上記の私のガイドでは、ISPから提供されたモデム/ルーター/ WiFiアクセスポイントを引き続き使用することを想定していますが、接続するすべてのクライアントに「Piにトラフィックを送信」するように設定します。これは通常、ISPボックスのDHCP設定にPi(静的!)IPアドレスを入力することによって行われます。通常、「Gateway」、「Default Gateway」、または「Default route」と呼ばれるフィールドにあります。
RobM

@Bob:入力した数値は、インターネットリンクの合計です。wondershaperスクリプトは、これを需要に基づいてすべてのクライアントに公平に共有しようとします。したがって、インターネットを使用しているクライアントが1人だけの場合、100%を取得する必要があります。別のクライアントが起動した場合、少しの「整定時間」(約10秒)後にそれぞれ50%を使用します。
RobM

パーフェクト。@fommilに注意してください。DHCPを介して割り当てられたゲートウェイを設定する簡単な方法を提供するルーターはありません。ルーターでDHCPをオフにし、PiでDHCPサーバーをセットアップしました。これはかなり簡単なプロセスです(必要に応じてガイドを検索してください)。
ボブ

10

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

この種のセットアップの良い点は、Piがデータに沿って座っているのではなく、スイッチを介して実行されているすべてを監視していることです。この方法でソフトウェアの不具合が発生した場合、トラフィックは監視されないだけで流れます。2つのインターフェイスで説明していることで、プログラムがクラッシュし、ネットワークがクラ​​ッシュします。

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


7

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

注意事項:

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

ルーティングに関する私のブログ投稿と、Wi-Fiアクセスポイントのセットアップに関する別のブログ投稿です。このガイドは、ルーティングのセットアップに役立ちました。ルーティングは、Raspberry Piに固有のものではありません。一般にLinuxで動作するものなら何でも可能です。詳細は、使用するディストリビューションによって少し異なります。


4

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に給電します。
幸運を!


1

(この補遺は 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サーバーから呼び出されることを目的としていますlighttpdindex.pyindex-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を使用できますpython rhodes.pypypyJust-In-Time(JIT)コンパイルを行うPythonプログラミング言語の代替実装であるため、長時間実行されるスクリプトはより多くのメモリを必要としますがCPUサイクルは少なくなります)

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.