Following netplan
creates a virtual bridge br0
connected to interface enp2s0
and both have same mac address (as required by hetzner)
network:
version: 2
renderer: networkd
ethernets:
enp2s0:
match:
macaddress: 44:8a:5b:9b:a0:5b
dhcp4: no
dhcp6: no
bridges:
br0:
macaddress: 44:8a:5b:9b:a0:5b
interfaces: [enp2s0]
addresses:
- 148.251.151.77/32
- 2a01:4f8:210:504c::2/64
routes:
- on-link: true
to: 0.0.0.0/0
via: 148.251.151.65
gateway6: fe80::1
nameservers:
addresses:
- 213.133.100.100
- 213.133.98.98
- 213.133.99.99
- 2a01:4f8:0:1::add:1010
- 2a01:4f8:0:1::add:9999
- 2a01:4f8:0:1::add:9898
Create a vm using the following commands:
Note the following:
-
We have set the network to
default
so we have internet connectivity via the host -
VNC is set to listen on
0.0.0.0
so we can connect using VNC and complete the installation.
qemu-img create -f qcow2 images/hellovm-9.qcow2 10G
virt-install --virt-type kvm \
--name hellovm-9 \
--ram 2048 \
--disk images/hellovm-9.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole \
--cdrom boot/ubuntu-18.04.5-live-server-amd64.iso
After the installation is complete, start the VM, SSH into it and change the network as follows. Here we are setting a static IP to the only interface. This means internet connectivity, but no connectivity from the KVM host.
network:
version: 2
renderer: networkd
ethernets:
ens3:
addresses:
- 148.251.151.90/32
routes:
- to: 0.0.0.0/0
via: 148.251.151.65
on-link: true
nameservers:
addresses:
- 213.133.100.100
- 213.133.98.98
- 213.133.99.99
Save the configuration and shutdown the guest.
Back on the KVM host, edit the guest configuration using the following command:
virsh edit hellovm-9
And change the network config from this:
<interface type='network'>
<mac address='52:54:00:86:2b:c4'/>
<source network='default'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
to this:
<interface type='bridge'>
<mac address='00:50:56:00:20:0d'/>
<source bridge='br0'/>
<target dev='vnet0'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
We have changed the following:
-
Interface type changed to
type='bridge'
-
MAC address updated to whatever you get from Hetzner.
-
Source changed to
bridge='br0'
Save and edit. Restart the guest. It should now be connected to the Internet with both incoming and outgoing.