みかづきの色々

デバイス(スマホからキャンプ用品まで)とかプログラミングとか中心のいろいろ試験的なブログ。

ブリッジする時の /etc/network/interfaces 案

ネットで調べると、ブリッジする時の /etc/network/interfaces にはいろんな書き方があるっぽい。
たとえば、以下の様にだ。

なお、LAN側は eth0、ブリッジデバイスは br0 として書いている。

1. brctl を使うタイプ

Debianを用いる設定にはよく、以下のような書き方が見受けられる。

# for Bridge(lxc)
auto br0
iface br0 inet static
       pre-up /sbin/brctl addbr br0
       pre-up /sbin/brctl addif br0 eth0
       pre-up /sbin/ifconfig eth0 up
       address 192.168.1.8
       netmask 255.255.255.0
       network 192.168.1.0
       broadcast 192.168.1.255
       gateway 192.168.1.1

うちの固定Webでも上の書き方は採用されているのだけど、どうもうまく動かない事があるみたいだ。おそらくは br0 と eth0 の成立タイミングによるのだろうけど、いまいち信用できない。

2. オプションを使うタイプ

Ubuntuの設定をやってるブログ等でよく見受けられるが、Debianでももちろん動く。実際にwheezyで試した。

# for Bridge(lxc)
#auto br0
iface br0 inet static
        address 192.168.1.8
        netmask 255.255.255.0
        gateway 192.168.1.1
        bridge_ports eth0
        bridge_stp off
        bridge_maxwait 1

外部コマンドでないぶんスマートになったと思うが、問題は呼び出されるタイミングだろうか。たとえば以下のようにしてみた。

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.1.7
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.1.1
        post-up ifup br0

# for Bridge(lxc)
#auto br0
iface br0 inet static
        address 192.168.1.8
        netmask 255.255.255.0
        gateway 192.168.1.1
        bridge_ports eth0
        bridge_stp off
        bridge_maxwait 1

eth0 が up した時、post-up で br0 をマニュアルで up させるようにしてみた。

ちなみに実際にこれを動かすと、なぜか eth0 側(192.168.1.7) にアクセスできない。eth0側にログインしようと思えば、br0に割り当てている192.168.1.8を狙ってアクセスする事になる。
ifconfigの内容(抜粋)は以下の通り。

mikaduki@test7:~$ /sbin/ifconfig
br0       Link encap:イーサネット  ハードウェアアドレス 00:0c:29:27:bd:f6
          inetアドレス:192.168.1.8 ブロードキャスト:192.168.1.255  マスク:255.255.255.0
          inet6アドレス: 2001:c90:8000:6cc3:20c:29ff:fe27:bdf6/64 範囲:グローバル
          inet6アドレス: fe80::20c:29ff:fe27:bdf6/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:10352 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:222 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:0
          RXバイト:1261257 (1.2 MiB)  TXバイト:28905 (28.2 KiB)

eth0      Link encap:イーサネット  ハードウェアアドレス 00:0c:29:27:bd:f6
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:13578 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:417 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000
          RXバイト:2685991 (2.5 MiB)  TXバイト:50737 (49.5 KiB)
:
(中略)
:
$

もう少しうまく書く方法がありそうである。
また後で工夫してみよう。