Когда-то драйвер dummy сетевого устойства отличался тем, что позволял создавать дополнительные dummy устройства простой уставновкой модуля и созданием алиаса. А в какой-то версии ядра это положение изменилось. Так как же увеличить количество dummies (dummy) в новых Fedora?
К этому моменту один интерфейс dummy0 у меня уже был и работал. Мне понадобилось создать второй. Я создал файл ifcfg-dummy1
# cat /etc/sysconfig/network-scripts/ifcfg-dummy0 DEVICE=dummy0 BOOTPROTO=static IPADDR=192.168.201.1 NETMASK=255.255.255.255 ONBOOT=yes IPV6INIT=no
# cat /etc/sysconfig/network-scripts/ifcfg-dummy1 DEVICE=dummy1 BOOTPROTO=static IPADDR=192.168.201.3 NETMASK=255.255.255.255 ONBOOT=yes IPV6INIT=no
В файле /etc/modprobe.d/dist.conf есть два алиаса на модуль dummy
# grep -i dumm /etc/modprobe.d/* dist.conf:alias dummy0 dummy dist.conf:alias dummy1 dummy dist.conf:install dummy0 /sbin/modprobe -o dummy0 --ignore-install dummy dist.conf:install dummy1 /sbin/modprobe -o dummy1 --ignore-install dummy
# modinfo dummy filename: /lib/modules/2.6.35.13-91.fc14.i686/kernel/drivers/net/dummy.ko alias: rtnl-link-dummy license: GPL srcversion: 33ED5A95D8BDD087F0FBEBA depends: vermagic: 2.6.35.13-91.fc14.i686 SMP mod_unload 686 parm: numdummies:Number of dummy pseudo devices (int)
Как видно появилась опция numdummies которая отвечает за количество dummy псевдо устройств. Пробуем сделать два. На ходу.
# /sbin/modprobe dummy numdummies=2
Вот это самый отвратительный момент! Система проглатывает опцию и ничего не говорит. А реально никаких действий по увеличению количества dummies не произодится.
Как следствие:
# ifup dummy1 dummy device dummy1 does not seem to be present, delaying initialization.
Смотрим что получилось:
ls -al /sys/class/net/ total 0 drwxr-xr-x 2 root root 0 Jan 18 19:17 . drwxr-xr-x 37 root root 0 Jan 18 19:17 .. lrwxrwxrwx 1 root root 0 Jan 18 19:17 dummy0 -> ../../devices/virtual/net/dummy0 lrwxrwxrwx 1 root root 0 Jan 18 19:17 eth0 -> ../../devices/pci0000:00/0000:00:04.0/virtio1/net/eth0 lrwxrwxrwx 1 root root 0 Jan 18 19:17 eth1 -> ../../devices/pci0000:00/0000:00:05.0/virtio2/net/eth1 lrwxrwxrwx 1 root root 0 Jan 23 17:02 lo -> ../../devices/virtual/net/lo lrwxrwxrwx 1 root root 0 Jan 18 19:17 tun1 -> ../../devices/virtual/net/tun1
Интерфейса нету.
Смотрим что загружено:
# lsmod Module Size Used by ipt_LOG 4243 1 iptable_nat 3945 1 nf_nat 16298 1 iptable_nat tun 11054 2 dummy 1455 0 i2c_piix4 10534 0 i6300esb 4171 0 i2c_core 21552 1 i2c_piix4 virtio_balloon 3557 0 virtio_net 11023 0 virtio_blk 4059 3 virtio_pci 4798 0
теперь попробуем выгрузить модуль и загрузить снова
# rmmod dummy # ls -al /sys/class/net/ total 0 drwxr-xr-x 2 root root 0 Jan 18 19:17 . drwxr-xr-x 37 root root 0 Jan 18 19:17 .. lrwxrwxrwx 1 root root 0 Jan 18 19:17 eth0 -> ../../devices/pci0000:00/0000:00:04.0/virtio1/net/eth0 lrwxrwxrwx 1 root root 0 Jan 18 19:17 eth1 -> ../../devices/pci0000:00/0000:00:05.0/virtio2/net/eth1 lrwxrwxrwx 1 root root 0 Jan 23 17:02 lo -> ../../devices/virtual/net/lo lrwxrwxrwx 1 root root 0 Jan 18 19:17 tun1 -> ../../devices/virtual/net/tun1
# insmod dummy insmod: can't read 'dummy': No such file or directory
Так не проходит.
Укажем где лежит драйвер и передадим параметр
# insmod /lib/modules/2.6.35.13-91.fc14.i686/kernel/drivers/net/dummy.ko numdummies=2
# ls -al /sys/class/net/ total 0 drwxr-xr-x 2 root root 0 Jan 18 19:17 . drwxr-xr-x 37 root root 0 Jan 18 19:17 .. lrwxrwxrwx 1 root root 0 Jan 23 23:05 dummy0 -> ../../devices/virtual/net/dummy0 lrwxrwxrwx 1 root root 0 Jan 23 23:05 dummy1 -> ../../devices/virtual/net/dummy1 lrwxrwxrwx 1 root root 0 Jan 18 19:17 eth0 -> ../../devices/pci0000:00/0000:00:04.0/virtio1/net/eth0 lrwxrwxrwx 1 root root 0 Jan 18 19:17 eth1 -> ../../devices/pci0000:00/0000:00:05.0/virtio2/net/eth1 lrwxrwxrwx 1 root root 0 Jan 23 17:02 lo -> ../../devices/virtual/net/lo lrwxrwxrwx 1 root root 0 Jan 18 19:17 tun1 -> ../../devices/virtual/net/tun1
Теперь всё на месте.
Ну и поднимем интерфейсы после удаления модуля они были опущены.
# ifup dummy0 # ifup dummy1
Проверяем доступность второго dummy1 (первый работал)
# ping 192.168.201.3 -c 4 PING 192.168.201.3 (192.168.201.3) 56(84) bytes of data. 64 bytes from 192.168.201.3: icmp_req=1 ttl=64 time=0.044 ms 64 bytes from 192.168.201.3: icmp_req=2 ttl=64 time=0.025 ms 64 bytes from 192.168.201.3: icmp_req=3 ttl=64 time=0.019 ms 64 bytes from 192.168.201.3: icmp_req=4 ttl=64 time=0.024 ms --- 192.168.201.3 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.019/0.028/0.044/0.009 ms
теперь осталось сделать чтобы он создавался при загрузке системы.
Создаём файлик с опцией options dummy numdummies=2
# echo options dummy numdummies=2 >> /etc/modprobe.d/dummy.conf
Перезагужаем и проверяем что всё поднялось.