ページ

2019年9月28日土曜日

Rapberry Pi をスイッチングハブ化する 【bridge-utils】

こんな代物を作ってどんなメリットがあるか具体的には何も思いついていないが,Raspberry Pi に USB の NIC を接続すことで LANポートを2個に増設しブリッジ接続してみた.要するに Raspberry Pi のスイッチングハブ化だ.

最初に必要なソフトとして,bridge-utilsをインストールする.
# apt install bridge-utils

次に,/etc/network/interfaces と /etc/dhcpcd.conf にそれぞれ,以下を追記する.
/etc/network/interfaces
------------------------------
auto br0
iface br0 inet manual
    bridge_ports eth0 eth1
    bridge_stp off
    bridge_maxwait 3

/etc/dhcpcd.conf
------------------------------
denyinterfaces eth0 eth1

interface br0
static ip_address=192.168.100.3/24
static routers=192.168.100.1
static domain_name_servers=192.168.100.1 8.8.8.8 

設定が完了したあと再起動すると,Raspberry Pi のハブ化が完了する.

なお,/etc/interfaces では,ブリッジデバイスを作成し,それを eth0 と eth1 に接続するよう設定している.

また,/etc/dhcpcd.conf では,eth0 と eth1 を無効にしたあと,作成したブリッジデバイスに対して,
・固定IPアドレス
・ルーターのIPアドレス
・ネームサーバーのIPアドレス

として,それぞれ
・192.168.100.3/24
・192.168.100.1
・192.168.100.1 及び 8.8.8.8

を設定している.

なお,br0 の IPアドレスとして設定する IPアドレスのセグメントはルーターと同じ,192.168.100系に設定する必要性は必ずしもなく,例えば,192.168.0系にしてもハブとしては問題なく動作するが,192.168.100系に設定しない場合,私の環境ではハブ化した Raspberry Pi に 192.168.100系から SSH でアクセスできなくなったため,特段の理由がなければ,ルーターと同じ 192.168.100系に設定するほうが良さそうだ.

(SSHでのアクセスはルーターの設定や固定IPアドレスの192.168.100.3/24の/24部分の見直しで変更できそうに思えるが,今回はそこまでは調査できていない)

ハブ化完了後に ifconfig コマンドを実行すると,以下のような結果が得られる.eth0,eth1 には IPアドレスが振られていない一方,br0 の MACアドレスは eth0 と同じになっていることがわかる.
br0: flags=4163  mtu 1500
        inet 192.168.100.3  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::ba27:ebff:fe0c:aa33  prefixlen 64  scopeid 0x20
        ether b8:27:eb:0c:aa:33  txqueuelen 1000  (Ethernet)
        RX packets 1881  bytes 284206 (277.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 817  bytes 94855 (92.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163  mtu 1500
        ether b8:27:eb:0c:aa:33  txqueuelen 1000  (Ethernet)
        RX packets 60144  bytes 52977687 (50.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 48782  bytes 8986129 (8.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163  mtu 1500
        ether cc:e1:d5:02:ae:db  txqueuelen 1000  (Ethernet)
        RX packets 49563  bytes 7969264 (7.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 60885  bytes 54152782 (51.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

また,arpコマンドを実行すると,eth0,eth1 に接続されたそれぞれの端末の IPアドレス,MACアドレスが表示され,インターフェースが br0 になっていることがわかる.
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.100.1            ether   b8:27:eb:91:d5:48   C                     br0
192.168.100.2            ether   b0:83:fe:9e:36:a6   C                     br0


ちなみに,ラズパイ歴の長い方ならご存知だと思うが,/etc/interfaces は以前の Raspbian(確かjessieより前)で IPアドレスを固定化する際に編集していたファイルで,/etc/dhcpcd.conf は現在の Raspbianで IPアドレスを固定化する際に編集しているファイルだ.それらの合わせ技というのがなんとなく感慨深い(←なんだそりゃ).

以上

0 件のコメント:

コメントを投稿