/etc/network/interfaces で Xen Bridge っぽいの

Xenのbridge再現するとこんな感じなんかなぁ

前提の話

OSインストール直後ではp4p1とかいうのがDHCP捕まえてた。
ifconfigするとloとp4p1が見えてる状態。eth0どこ行った?
とりあえずp4p1が物理Nicだと思ってください

/etc/network/interfaces

auto lo
iface lo inet loopback

auto peth0
iface peth0 inet static
    address 0.0.0.0
    hwaddress	FE:FF:FF:FF:FF:FF
    pre-up	ip link set dev p4p1 name peth0
    post-up	ip link set dev peth0 arp off
    post-up	ip link set dev peth0 multicast off
    post-down	ip link set dev peth0 name p4p1

auto eth0
iface eth0 inet static
    address	192.168.0.2
    hwaddress	10:72:E2:56:10:10
    netmask	255.255.255.0
    gateway	192.168.0.1
    pre-up	ip link add name veth0 type veth peer name eth0
    pre-up	ip link set dev veth0 address FE:FF:FF:FF:FF:FF
    post-up	ip link set dev veth0 arp off
    post-up	ip link set dev veth0 multicast off
    post-down	ip link del dev eth0
    post-down	ip link del dev veth0

auto br0
iface br0 inet static
    address 0.0.0.0
    hwaddress	FE:FF:FF:FF:FF:FF
    bridge_ports peth0 veth0
    bridge_stp off
    bridge_fd 2
    post-up	ip link set dev br0 arp off
    post-up	ip link set dev br0 multicast off

ifconfig

$ ifconfig
br0       Link encap:Ethernet  HWaddr fe:ff:ff:ff:ff:ff  
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:400 (400.0 B)  TX bytes:468 (468.0 B)

eth0      Link encap:Ethernet  HWaddr 10:72:e2:56:10:10  
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::1278:d2ff:fe46:1050/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:108 errors:0 dropped:0 overruns:0 frame:0
          TX packets:74 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12721 (12.7 KB)  TX bytes:15139 (15.1 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:64 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:4736 (4.7 KB)  TX bytes:4736 (4.7 KB)

peth0     Link encap:Ethernet  HWaddr fe:ff:ff:ff:ff:ff  
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:99 errors:0 dropped:0 overruns:0 frame:0
          TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12043 (12.0 KB)  TX bytes:15271 (15.2 KB)

veth0     Link encap:Ethernet  HWaddr fe:ff:ff:ff:ff:ff  
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:74 errors:0 dropped:0 overruns:0 frame:0
          TX packets:108 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15139 (15.1 KB)  TX bytes:12721 (12.7 KB)

brctl show

$ brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.feffffffffff	no		peth0
							veth0

Xenだと /etc/xen/scripts/network-bridge で(結構頑張って) macアドレスをpeth0(=p4p1=普通で言うeth0)からeth0へ移してるけど↑ではmacアドレスをハードコードしてるので実運用にはeth0のmacアドレスを動的に記述する仕組みが必要。
Xen が HWaddr fe:ff:ff:ff:ff:ff、NOARP、NO MULTICASTな設定を入れてるので真似したけどなんでXenがこの設定入れてるのか調べてないので意味はわかってません。

ちなみにこれはLXCでXenのブリッジ構成を使おうとして書きました(家鯖

追記

何やってるのか図がないとわかりづらいので図を追加してみた

ビフォー

ホストに p4p1 て変な名前のNICが物理NICそのまま生えてる普通の構成
f:id:shoichimasuhara:20131116222423p:plain

アフター

p4p1をpeth0にリネーム、peth0,veth0,vethXXXがbr0に参加してて、veth0と親ホストのeth0が、vethXXXと子ホストのeth0がつながってる構成
f:id:shoichimasuhara:20131116222727p:plain

こういうのちゃんと図を書くべきだな