Fedora 22 comes with libvirt and NetworkManager and it is pre-configured with “default” NAT network. That’s fine, until you want to reach the NATed servers from your LAN. By the way this works in CentOS 7 too.
Good solution is network interface bridging. It was always a pain to configure this, but in Fedora 21 most of bugs were fixed and now it is possible to configure everything via NetworkManager.
In this tutorial, I will show you how to configure things without GUI. The
commands below adds bridge in the system and reconfigures primary wired
connection over that bridge. Make sure you set
MAIN_CONN variable to the
correct connection (use
nmcli c show to find it).
I recommend to execute this in screen or tmux because connection will be lost during execution! Comment out IPv4 static configuration, if that’s your case.
yum -y install bridge-utils yum -y groupinstall "Virtualization Tools" export MAIN_CONN=enp8s0 bash -x <<EOS systemctl stop libvirtd nmcli c delete "$MAIN_CONN" nmcli c delete "Wired connection 1" nmcli c add type bridge ifname br0 autoconnect yes con-name br0 stp off #nmcli c modify br0 ipv4.addresses 192.168.1.99/24 ipv4.method manual #nmcli c modify br0 ipv4.gateway 192.168.1.1 #nmcli c modify br0 ipv4.dns 192.168.1.1 nmcli c add type bridge-slave autoconnect yes con-name "$MAIN_CONN" ifname "$MAIN_CONN" master br0 systemctl restart NetworkManager systemctl start libvirtd systemctl enable libvirtd echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-ipforward.conf sysctl -p /etc/sysctl.d/99-ipforward.conf EOS
Do not, I repeat, do not execute this one by one. You need to do this in one
“transaction” because connection will be lost and screen wont help you in this
case. That’s why I use
bash -x HEREDOC there.
Reboot might be needed if you encounter networking issues.
Now, when creating a VM in libvirt, make sure you select “br0” as the interface to use bridged networking. That’s all for today!