VLAN, dummy a bridge

dummy rozhraní

Podobně jako se na Cisco routerech používají loopback interfacy pro nastavení adres, které představují endpoint nebo nějakou službu na routeru, tak se v Linuxu používají dummy rozhraní. Na Linuxu totiž nejde použít loopback podobně, jako na Cisco zařízeních, protože cokoliv, co v Linuxu pošlete na lo rozhraní, zůstává uvězněno na localhostu. Není to žádná magie, ve skutečnosti za to můžou Policy Based Routing pravidla, která jsou ve výchozím nastavení Linuxového kernelu, pro loopback rozhraní. Ještě se k tomu vrátíme v kapitole o PBR.

Dummy rozhraní tedy můžeme vytvořit, zapnout, nastavit na něj adresu a s pomocí statického routingu nebo pomocí směrovacích protokolů (například OSPF) můžeme zařídit jeho dostupnost pro ostatní hosty.

Dummy interface

Dummy interface vytvoříme pomocí:

root@c1:/# ip link add dummy0 type dummy

root@c1:/# ip link
1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0@if4: <broadcast,multicast,up,lower_up> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 00:16:3e:73:04:49 brd ff:ff:ff:ff:ff:ff link-netnsid 0
3: eth0.10@eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 00:16:3e:73:04:49 brd ff:ff:ff:ff:ff:ff
6: dummy0: <broadcast,noarp> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 3a:52:c3:d0:68:50 brd ff:ff:ff:ff:ff:ff

Je tu ale přece jen trochu chyták: LXC kontejner nemusí mít práva na to, incializovat modul jádra dummy a proto můžete dostat chybu na první příkaz. To se dá vyřešit snadno tak, že modul zavedete ručně ve VM:

root@osboxes:/home/osboxes# modprobe -v dummy 
insmod /lib/modules/5.4.0-28-generic/kernel/drivers/net/dummy.ko numdummies=0

Jakmile dummy rozhraní existují, můžeme je zapnout a dát na ně adresy stejně, jako na jakékoliv rozhraní. Z hlediska adresního plánu se k dummy rozhraní chováme stejně, jako k loopbacku na Ciscu, tedy dáváme na ně jednotlivé IP adresy (/32 pro IPv4 a /128 pro IPv6).

Pro další lab potřebujeme na obou kontejnerech nastavit jednu adresu na každé dummy rozhraní tak, aby nekolikdovala s žádným adresním prostorem, který jsme dosud použili. V našem případě jsme vybrali:

Kontejner dummy0
c1 10.254.1.1/32
c2 10.254.2.1/32