VLAN for virtual machines: Unterschied zwischen den Versionen
Ingo (Diskussion | Beiträge) K (add references) |
Ingo (Diskussion | Beiträge) (describe Preparation) |
||
Zeile 6: | Zeile 6: | ||
and document it here. | and document it here. | ||
− | In gerneral I will look at | + | 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, 14:17 Uhr
Inhaltsverzeichnis
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:
- oldstyle linux bridge as a hub
- linux bridge as a hub
- linux bridge with libvirt hook scripts
- 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
- 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
References
- https://www.libvirt.org/hooks.html
- https://serverfault.com/questions/696011/libvirt-hook-qemu-suse12