VLAN for virtual machines: Unterschied zwischen den Versionen

Aus Ingos Wiki
Wechseln zu: Navigation, Suche
K (add references)
(describe Preparation)
Zeile 6: Zeile 6:
 
and document it here.
 
and document it here.
  
In gerneral I will look at three methods:
+
In gerneral I will look at four methods:
 +
# [[#oldstyle linux bridge as a hub|oldstyle linux bridge as a hub]]
 
# [[#linux bridge as a hub|linux bridge as a hub]]
 
# [[#linux bridge as a hub|linux bridge as a hub]]
 
# [[#linux bridge with libvirt hook scripts|linux bridge with libvirt hook scripts]]
 
# [[#linux bridge with libvirt hook scripts|linux bridge with libvirt hook scripts]]
 
# [[#Open vSwitch|Open vSwitch]]
 
# [[#Open vSwitch|Open vSwitch]]
 +
 +
== Preparation ==
 +
I have Debian GNU/Linux 9.1 (stretch) on the host and on virtual machines for testing as described here: [[Setup KVM with console]]. I'm sitting on harley as host, my all day workstation.
 +
Now I start the virtual machine, login and show its interface setting:
 +
harley$ virsh start --console deb9-test
 +
login
 +
deb9-test$ cat /etc/systemd/network/08-vlan10.netdev
 +
[NetDev]
 +
Name=vlan10
 +
Kind=vlan
 +
[VLAN]
 +
Id=10
 +
deb9-test$ cat /etc/systemd/network/12-vlan10_attach-to-if.network
 +
[Match]
 +
Name=ens2
 +
[Network]
 +
VLAN=vlan10
 +
deb9-test$ cat /etc/systemd/network/16-vlan10_up.network
 +
[Match]
 +
Name=vlan10
 +
[Network]
 +
Address=192.168.10.57/24
 +
Gateway=192.168.10.1
 +
To test if we have connection direct after startup I append this to .bashrc:
 +
deb9-test$ echo ping -c3 192.168.10.1 >> .bashrc
 +
Because I have to start the test virtual machine many times I setup autologin. It's no problem. There is nothing on the guest.
 +
deb9-test$ grep ^ExecStart= /lib/systemd/system/serial-getty@.service
 +
ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM
 +
modify to
 +
ExecStart=-/sbin/agetty --autologin ''yourloginname'' --keep-baud 115200,38400,9600 %I $TERM
 +
 +
== oldstyle linux bridge as a hub ==
 +
This works always with the old linux bridge that do not know anything about VLAN. The trick is to set it to a complete transparent state for all connected interfaces like a hub. But you have to know that the bridge will then forward all packets to all interfaces simultanously. You can do it by setting
  
 
== linux bridge as a hub ==
 
== linux bridge as a hub ==
 
=== References ===
 
=== References ===
 
* https://www.freedesktop.org/software/systemd/man/systemd.netdev.html
 
* https://www.freedesktop.org/software/systemd/man/systemd.netdev.html
 +
* https://www.freedesktop.org/software/systemd/man/systemd.network.html
  
 
== linux bridge with libvirt hook scripts ==
 
== linux bridge with libvirt hook scripts ==

Version vom 22. September 2017, 13:17 Uhr

Introduction

I wanted to update VLAN connections for virtual machines to newer technologies and put a question on unix.stackexchange. But I do not get any answer. It seems there is very little knowledge for this out there. So I decided to work on it by myself and document it here.

In gerneral I will look at four methods:

  1. oldstyle linux bridge as a hub
  2. linux bridge as a hub
  3. linux bridge with libvirt hook scripts
  4. Open vSwitch

Preparation

I have Debian GNU/Linux 9.1 (stretch) on the host and on virtual machines for testing as described here: Setup KVM with console. I'm sitting on harley as host, my all day workstation. Now I start the virtual machine, login and show its interface setting:

harley$ virsh start --console deb9-test

login

deb9-test$ cat /etc/systemd/network/08-vlan10.netdev
[NetDev]
Name=vlan10
Kind=vlan
[VLAN]
Id=10
deb9-test$ cat /etc/systemd/network/12-vlan10_attach-to-if.network
[Match]
Name=ens2
[Network]
VLAN=vlan10
deb9-test$ cat /etc/systemd/network/16-vlan10_up.network
[Match]
Name=vlan10
[Network]
Address=192.168.10.57/24
Gateway=192.168.10.1

To test if we have connection direct after startup I append this to .bashrc:

deb9-test$ echo ping -c3 192.168.10.1 >> .bashrc

Because I have to start the test virtual machine many times I setup autologin. It's no problem. There is nothing on the guest.

deb9-test$ grep ^ExecStart= /lib/systemd/system/serial-getty@.service
ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM

modify to

ExecStart=-/sbin/agetty --autologin yourloginname --keep-baud 115200,38400,9600 %I $TERM

oldstyle linux bridge as a hub

This works always with the old linux bridge that do not know anything about VLAN. The trick is to set it to a complete transparent state for all connected interfaces like a hub. But you have to know that the bridge will then forward all packets to all interfaces simultanously. You can do it by setting

linux bridge as a hub

References

linux bridge with libvirt hook scripts

References

Open vSwitch

References