イーサネットスイッチを使用して目的の結果を達成できることを知っていますが、より安価なソリューションを使用してこれを達成できるかどうか疑問に思います。
アイデアは次のとおりです。
Rapsberry Piには2つのイーサネットポートがあります。 1つは内蔵され、もう1つは安価なUSB-Ethernetアダプタです。
ポートの1つがローカルルーターに直接接続され、DHCP IPアドレスを受け取ります。 192.168.1.2だとしましょう。
他のポートは他のデバイスに接続されます。同じルータに直接接続されていると考え、ルータからDHCP IPアドレスを受信するには、このデバイスが必要です。アドレスが192.168.1.3であるとします。
デフォルトでは、RPiはイーサネットスイッチのように動作し、それ自体でIPを要求し、他の要求を別のデバイスにルーティングしたいと思います。
スイッチを使用してこれを行う方法を説明する図は次のとおりです。
私が望む仕組みは次のとおりです。
5つの3ポートスイッチの代わりに、「RPi Plusデバイス」のペアが5つ(またはそれ以上)であると想像してみてください。これには、別々の電源装置と2本の追加の電線が必要です。
この設定をRPiのイーサネットポートおよびイーサネットアダプタと連携させるLinux設定オプションはありますか?
答え1
設定でこれを達成できるはずです。足2つのネットワークインターフェイス間。
統合イーサネットインターフェイスがeth0
USBアダプタを介してオンになっていると仮定すると、eth1
次の設定が/etc/network/interfaces
機能します(bridge-utils
パッケージがインストールされていてカーネルがそれをサポートしている場合)。
auto lo br0
iface lo inet loopback
iface eth0 inet manual
iface eth1 inet manual
iface br0 inet dhcp
bridge_ports eth0 eth1
を実行するとifconfig
インターフェイスが表示されます(私の記憶が正しい場合はおそらくMACアドレスがありますbr0
)。eth0
このインターフェイスは実際にRPiのマージされたインターフェイスになり、ルータからそのIPアドレスを取得します。
他のデバイスからのトラフィックはブリッジを通過し、対応するIPアドレスも取得する必要があります。トラフィックが通過しない場合は、通過を許可する必要がありますiptables
。あなたも正しいかもしれません。 。 。興味があるこの記事。
(しかし、多くのアダプタが同時に複数のMACアドレスを使用できないため、これは必ずしも無線LANアダプタに適用されるわけではありません。)
答え2
最良の方法は、Piを固定IPに設定することです。
そこからDHCPサーバーをインストールします
apt-get install isc-dhcp-server
その後、構成ファイルを編集できます。
/etc/conf.d/dhcp
次の行を使用して、受信するインターフェイスをDHCPサーバーに通知します。
DHCP4_ARGS="... eth0"
その後、次のコマンドを使用してサーバーデーモンを起動できます。
sudo /etc/rc.d/dhcp4 start
eth0に接続されているIPをブロードキャストするすべてのクライアントは、dhcpサーバーによって管理されます。
必要に応じて、eth0をeth1に置き換える必要があります。
答え3
Pi USB+イーサネットは、Pi GPUの単一ポートに接続された単一の愚かなオンボードチップから来ます。つまり、USB-Ethernet アダプタは内蔵イーサネットに「直接接続」されません。
したがって、あるインターフェイスから別のインターフェイスにデータを転送しようとすると、CPUはすべてのバイトを読み取る必要があり、CPUがGPUに別のインターフェイス(外部チップから)を選択するように指示するのを待つ必要があるため、スループットが低下します。データをGPUに送り、別のインタフェースに出力します。
もちろん、「チャンク」を一度に読み書きする方が効率的ですが、Piがあるインターフェイスからチャンクを送信している間に他のインターフェイスの接続が切断されるため、すべての着信が「削除」されているため、削除する必要があります。再送信...
イーサネットおよびUSB「ドングル」ドライバのエンコード方法によっては、100 mbsのイーサネットが10 mbs未満に減少することがあります(kbsの範囲でいくつかのレポートを見たことがあります)。