Linuxでdummyインターフェースの数を増やす

Xenで複雑な仮想ネットワークを作ろうと考えていて、物理インターフェース数以上のネットワークを作ろうとしている。その際Domain0からはeth0などの実インターフェースではなくdummy0などの仮想インターフェースを使って接続することになる。

dummyインターフェースを使う機能はカーネルモジュールとして実装されていて、CentOS5.0ではデフォルトで利用可能になっていた。しかしifconfig dummy0 up、ifconfig dummy1 upなど複数使おうととしてもdummy0のひとつしか使えなかった。

これはdummyモジュールにnumdummies=<数>というパラメータを渡すことにより増やすことができる。

[root@ml115 ~]# modprobe dummy numdummies=3

これを恒久化したい場合は/etc/modprobe.confに下記を追記する。3にするとdummy0,dummy1,dummy2の計3つを使えるようになる。

options dummy numdummies=3

なお、こういったモジュールのパラメータ情報はmodinfoコマンドでしらべられる。

[root@ml115 ~]# modinfo dummy
filename:       /lib/modules/2.6.18-8.1.15.el5xen/kernel/drivers/net/dummy.ko
license:        GPL
srcversion:     CDD194430BC7DEC14488837
depends:
vermagic:       2.6.18-8.1.15.el5xen SMP mod_unload gcc-4.1
parm:           numdummies:Number of dummy pseudo devices (int)
[root@ml115 ~]#

あとは/etc/sysconfig/network-script/に設定を記述したファイルを用意する。

[root@ml115 ~]# cat /etc/sysconfig/network-script/ifcfg-dummy0
DEVICE=dummy0
BROADCAST=192.168.2.255
IPADDR=192.168.2.254
NETMASK=255.255.255.0
NETWORK=192.168.2.0
ONBOOT=yes

ここまで設定して再起動すると、新しいdummyインターフェースが認識される。

[root@ml115 ~]# ifconfig dummy0
dummy0    Link encap:Ethernet  HWaddr 00:16:3E:2B:02:fe
          inet addr:192.168.2.254  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::1ca4:5ff:fe2c:ee8b/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:294 (294.0 b)

認識しているインターフェースは/sys/class/netから情報が取れる。

[root@ml115 ~]# ls /sys/class/net/dummy0
address    carrier   flags    link_mode  statistics    type
addr_len   dormant   ifindex  mtu        subsystem     uevent
broadcast  features  iflink   operstate  tx_queue_len  weight