<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[BGPGeek]]></title><description><![CDATA[Just Another Networking Blog]]></description><link>http://bgpgeek.com/</link><image><url>http://bgpgeek.com/favicon.png</url><title>BGPGeek</title><link>http://bgpgeek.com/</link></image><generator>Ghost 5.82</generator><lastBuildDate>Wed, 08 Apr 2026 20:24:25 GMT</lastBuildDate><atom:link href="http://bgpgeek.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Installing FRRouting (FRR) on your CentOS KVM/Libvirt host and setting up BGP]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h1 id="introduction">Introduction</h1>
<p>So I had this idea when looking at FRRouting. As it&apos;s a Linux package, you can install it on a box running KVM/Libvirt, then you can enable BGP and redistribute the connected networks. This makes spinning up new virtual networks on the hypervisor very easy as</p>]]></description><link>http://bgpgeek.com/installing-frr/</link><guid isPermaLink="false">6320a8c7275e810001b240f8</guid><category><![CDATA[FRRouting]]></category><category><![CDATA[Networking]]></category><category><![CDATA[Centos7]]></category><category><![CDATA[Cumulus]]></category><category><![CDATA[Libvirt]]></category><category><![CDATA[KVM]]></category><category><![CDATA[Virtual]]></category><category><![CDATA[FRR]]></category><dc:creator><![CDATA[BGPGeek]]></dc:creator><pubDate>Mon, 06 Aug 2018 12:14:44 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="introduction">Introduction</h1>
<p>So I had this idea when looking at FRRouting. As it&apos;s a Linux package, you can install it on a box running KVM/Libvirt, then you can enable BGP and redistribute the connected networks. This makes spinning up new virtual networks on the hypervisor very easy as you do not need to rely on static routes and as soon as you spin up a new virtual network it&apos;s advertising to the rest of your network.</p>
<p>What is FRRouting (FRR)<br>
FRRouting (FRR) is a fork of Quagga. It&apos;s used in Cumulus networks OS as the routing suite.</p>
<p>This guide is based on an install of CentOS 7.5.</p>
<h1 id="step1installfrr">Step 1 Install FRR</h1>
<p>Install the latest FRR rpm from <a href="https://github.com/FRRouting/frr/releases?ref=bgpgeek.com">https://github.com/FRRouting/frr/releases</a>.<br>
<code>yum install -y https://github.com/FRRouting/frr/releases/download/frr-5.0.1/frr-5.0.1-2018070501.el7.centos.x86_64.rpm</code></p>
<p>Edit the daemons file and change the routing protocols you want from no to yes (you must always enable zebra) in this case zebra and bgpd.<br>
<code>vi /etc/frr/daemons</code></p>
<p><code>zebra=yes</code><br>
<code>bgpd=yes</code></p>
<p>Start FRR and set to start on boot.<br>
<code>systemctl enable frr &amp;&amp; systemctl start frr</code></p>
<p>Check status of FRR - should show as active (running).<br>
<code>systemctl status frr</code></p>
<h1 id="step2configurefrrandbgp">Step 2 configure FRR and BGP</h1>
<p>open the FRR shell by typing the command.<br>
<code>vtysh</code></p>
<p>Enter configuration mode.</p>
<p><code>conf t</code></p>
<p>This step is optional this command puts all the FRR configuration into one file.<br>
<code>service integrated-vtysh-config</code></p>
<p>Configure BGP on the KVM host.</p>
<p>I am configuring a route-map used to prevent some routes from being redistributed also will tag a BGP community for all the permitted routes you do not need to do this but it gives you more control and tagging the route helps with visibility.</p>
<p><code>ip prefix-list PL_BGP_DENY_CONNECTED seq 5 permit 10.25.10.0/24</code></p>
<p><code>route-map RM_BGP_REDISTRIBUTED_CONNECTED deny 10</code><br>
<code>match ip address prefix-list PL_BGP_DENY_CONNECTED</code></p>
<p><code>route-map RM_BGP_REDISTRIBUTED_CONNECTED permit 9999</code><br>
<code>set community 65010:10100</code></p>
<p>Here we are configuring the BGP process AS/router id/tuning the timers from the default to 2/6 and configuring the neighbour.</p>
<p><code>router bgp 65010</code><br>
<code>bgp router-id 10.25.10.100</code><br>
<code>bgp log-neighbor-changes</code><br>
<code>timers bgp 2 6</code><br>
<code>neighbor 10.25.10.1 remote-as 65000</code></p>
<p>Now to configure the redistribute connected command and set the route map we have created.</p>
<p><code>address-family ipv4 unicast</code><br>
<code>redistribute connected route-map RM_BGP_REDISTRIBUTED_CONNECTED</code><br>
<code>exit-address-family</code></p>
<p>Exit and save the configuration.</p>
<p><code>end</code></p>
<p><code>write</code></p>
<h1 id="step3verifybgpisupandthatwehaveroutes">Step 3 Verify BGP is up and that we have routes</h1>
<p>Here we can see that the BGP session is up.<br>
<img src="http://bgpgeek.com/content/images/2022/09/Screenshot-from-2018-08-06-13-18-19.png" alt="Screenshot-from-2018-08-06-13-18-19" loading="lazy"></p>
<p>Below we can see that have two connected virtual networks in BGP and are receiving a default route from the router we are connected to.<br>
<img src="http://bgpgeek.com/content/images/2022/09/Screenshot-from-2018-08-06-13-17-47.png" alt="Screenshot-from-2018-08-06-13-17-47" loading="lazy"></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Building a Networking Virtual Lab part 3: Install Vagrant on CentOS 7]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h1 id="introduction">Introduction</h1>
<p>This is part three of Building a Networking Virtual Lab. Vagrant can be used to build a virtual lab on top of KVM/Libvirt.</p>
<h1 id="step1vagrantcentospackagestoinstall">Step 1 Vagrant CentOS packages to install</h1>
<p>Install the latest Vagrant rpm from <a href="https://releases.hashicorp.com/vagrant/?ref=bgpgeek.com">https://releases.hashicorp.com/vagrant/</a>.<br>
<code>yum install -y https://releases.hashicorp.com/</code></p>]]></description><link>http://bgpgeek.com/install-vagrant-on-centos7/</link><guid isPermaLink="false">6320a8c7275e810001b240f5</guid><category><![CDATA[Lab]]></category><category><![CDATA[Networking]]></category><category><![CDATA[KVM]]></category><category><![CDATA[Libvirt]]></category><category><![CDATA[Centos7]]></category><category><![CDATA[Virtual]]></category><category><![CDATA[Vagrant]]></category><dc:creator><![CDATA[BGPGeek]]></dc:creator><pubDate>Mon, 26 Feb 2018 21:36:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="introduction">Introduction</h1>
<p>This is part three of Building a Networking Virtual Lab. Vagrant can be used to build a virtual lab on top of KVM/Libvirt.</p>
<h1 id="step1vagrantcentospackagestoinstall">Step 1 Vagrant CentOS packages to install</h1>
<p>Install the latest Vagrant rpm from <a href="https://releases.hashicorp.com/vagrant/?ref=bgpgeek.com">https://releases.hashicorp.com/vagrant/</a>.<br>
<code>yum install -y https://releases.hashicorp.com/vagrant/2.1.2/vagrant_2.1.2_x86_64.rpm</code></p>
<p>Install required packages for Vagrant.<br>
<code>yum install -y rubygem-nokogiri gcc ruby-devel zlib-devel libvirt-devel</code></p>
<p>Check Vagrant is installed.<br>
<code>vagrant --version</code></p>
<h1 id="step2installvagrantplugins">Step 2 Install Vagrant plugins</h1>
<p>Install plugins for Vagrant.<br>
<code>vagrant plugin install vagrant-libvirt</code><br>
<code>vagrant plugin install vagrant-mutate</code></p>
<h1 id="step3testvagrantisworking">Step 3 Test Vagrant is working</h1>
<p>Add a Vagrant box for testing.<br>
<code>vagrant box add centos/7 --provider=libvirt</code></p>
<p>Make a directory for testing Vagrant.<br>
<code>mkdir test</code><br>
<code>cd test/</code></p>
<p>Create new Vagrant file.<br>
<code>vagrant init centos/7</code></p>
<p>Bring the VM up<br>
<code>vagrant up</code></p>
<p>Check status is running.<br>
<code>vagrant status</code></p>
<p>ssh to test the Vagrant image is working.<br>
<code>vagrant ssh</code><br>
<code>exit</code></p>
<p>Destroy the Vagrant image after you have confirmed Vagrant is working.<br>
<code>vagrant destroy</code></p>
<p>Remove the test directory.<br>
<code>cd ..</code><br>
<code>rm -rf test</code></p>
<h1 id="step4addotherboxestoyourlab">Step 4 Add other boxes to your Lab</h1>
<p>You can add any image from the publicly Vagrant cloud to your lab. you can find them at the link below.<br>
<a href="https://app.vagrantup.com/boxes/search?ref=bgpgeek.com">https://app.vagrantup.com/boxes/search</a></p>
<p>If you can&apos;t find an image on the Vagrant cloud you can also make your own images from VMs that you have created.</p>
<p>You should now have Vagrant running on KVM/Libvirt.</p>
<h1 id="links">Links</h1>
<p><a href="http://bgpgeek.com/install-kvm-on-centos-7/">Part1</a><br>
<a href="http://bgpgeek.com/install-vnc-with-xfce/">Part2</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Building a Networking Virtual Lab part 2: Install VNC with XFCE on CentOS 7]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h1 id="introduction">Introduction</h1>
<p>This is part two of Building a Networking Virtual Lab. VNC can be used to manage your Hypervisor via the Virtual Machine Manager GUI.</p>
<h1 id="step1installvncxfcecentospackages">Step 1 Install VNC/XFCE CentOS packages</h1>
<p><code>yum install epel-release &#x2013;y</code><br>
<code>yum groupinstall xfce -y</code><br>
<code>yum install tigervnc-server -y</code><br>
<code>yum -y groupinstall X11 -y</code></p>]]></description><link>http://bgpgeek.com/install-vnc-with-xfce/</link><guid isPermaLink="false">6320a8c7275e810001b240f6</guid><category><![CDATA[Lab]]></category><category><![CDATA[Networking]]></category><category><![CDATA[XFCE]]></category><category><![CDATA[VNC]]></category><category><![CDATA[KVM]]></category><category><![CDATA[Libvirt]]></category><category><![CDATA[Centos7]]></category><category><![CDATA[Virtual]]></category><dc:creator><![CDATA[BGPGeek]]></dc:creator><pubDate>Mon, 26 Feb 2018 21:30:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="introduction">Introduction</h1>
<p>This is part two of Building a Networking Virtual Lab. VNC can be used to manage your Hypervisor via the Virtual Machine Manager GUI.</p>
<h1 id="step1installvncxfcecentospackages">Step 1 Install VNC/XFCE CentOS packages</h1>
<p><code>yum install epel-release &#x2013;y</code><br>
<code>yum groupinstall xfce -y</code><br>
<code>yum install tigervnc-server -y</code><br>
<code>yum -y groupinstall X11 -y</code></p>
<h1 id="step2setupvncpasswordforuser">Step 2 Setup VNC password for user</h1>
<p>Login as your kvmuser. You can use any username for this.<br>
<code>su - kvmuser</code><br>
Set a VNC password for your user.<br>
<code>vncserver</code><br>
Exit to move back to the root user.<br>
<code>exit</code></p>
<p>Backup the xstatup file.<br>
<code>mv /home/kvmuser/.vnc/xstartup /home/kvmuser/.vnc/xstartup.org</code><br>
create a new xstartup file.<br>
<code>vi /home/kvmuser/.vnc/xstartup</code></p>
<blockquote>
<p>#!/bin/bash<br>
xrdb $HOME/.Xresources<br>
startxfce4 &amp;</p>
</blockquote>
<p>Fix owner/permissions on the new file.<br>
<code>chown kvmuser:kvmuser /home/kvmuser/.vnc/xstartup</code><br>
<code>chmod 755 /home/kvmuser/.vnc/xstartup</code></p>
<p>Copy the sample VNC service.<br>
<code>cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service</code></p>
<p>Edit the following lines in the file to look like the below.<br>
<code>vi /etc/systemd/system/vncserver@:1.service</code></p>
<blockquote>
<p>#User=&lt;USER&gt;<br>
ExecStart=/sbin/runuser -l kvmuser -c &quot;/usr/bin/vncserver %i&quot;<br>
PIDFile=/home/kvmuser/.vnc/%H%i.pid</p>
</blockquote>
<h1 id="step3startvncserver">Step 3 Start VNC server</h1>
<p>Permit the VNC service on the firewall and reload the firewall service.<br>
<code>firewall-cmd --permanent --zone=public --add-service vnc-server</code><br>
<code>firewall-cmd --reload</code></p>
<p>As we have made changes to the systemctl we need to reload the daemon.<br>
<code>systemctl daemon-reload</code></p>
<p>Start the vncserver service and set to start at boot.<br>
<code>systemctl enable vncserver@:1 &amp;&amp; systemctl start vncserver@:1</code></p>
<h1 id="step4startvncserver">Step 4 Start vnc server</h1>
<p>Connect to the hypervisor via VNC to use Virtial Machine Manager.</p>
<p><img src="http://bgpgeek.com/content/images/2022/09/vnc.png" alt="vnc" loading="lazy"></p>
<h1 id="links">Links</h1>
<p><a href="http://bgpgeek.com/install-kvm-on-centos-7/">Part1</a><br>
<a href="http://bgpgeek.com/install-vagrant-on-centos7/">Part3</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Building a Networking Virtual Lab part 1: Install KVM/Libvirt on CentOS 7]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h1 id="introduction">Introduction</h1>
<p>I have split this guide into three parts. Part one deals with installing KVM/Libvirt.<br>
Part two installs VNC to connect to your remote host to use Virtual Machine Manager (VMM), Useful if you are accessing the hypervisor via a Windows or Mac computer, Linux has an installable version</p>]]></description><link>http://bgpgeek.com/install-kvm-on-centos-7/</link><guid isPermaLink="false">6320a8c7275e810001b240f4</guid><category><![CDATA[Lab]]></category><category><![CDATA[Networking]]></category><category><![CDATA[KVM]]></category><category><![CDATA[Libvirt]]></category><category><![CDATA[Centos7]]></category><category><![CDATA[Virtual]]></category><dc:creator><![CDATA[BGPGeek]]></dc:creator><pubDate>Sun, 25 Feb 2018 20:51:19 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="introduction">Introduction</h1>
<p>I have split this guide into three parts. Part one deals with installing KVM/Libvirt.<br>
Part two installs VNC to connect to your remote host to use Virtual Machine Manager (VMM), Useful if you are accessing the hypervisor via a Windows or Mac computer, Linux has an installable version of VMM, making this step optional or you can manage KVM/libvirt using the CLI tool virsh. Part three deals with installing Vagrant, again this is an optional step as you can just spin up virtual devices and connect them together.</p>
<p>Vagrant is used to spin up a virtual environment using KVM in this instance as a Hypervisor. it can be very useful as you can build a lab that is the same as your prod network or a reproducible lab used for your studies that can easily be destroyed and rebuilt in minutes.</p>
<p>This guide is based on a clean install of CentOS 7.5.</p>
<p>Your machine must have a processor that can support the environment.</p>
<h1 id="step1kvmlibvirtcentospackagestoinstall">Step 1 KVM/Libvirt CentOS packages to install</h1>
<p>Update all packages.<br>
<code>yum update -y</code></p>
<p>Install KVM/Libvirt packages.<br>
<code>yum install -y qemu-kvm qemu-img libvirt virt-install libvirt-python libguestfs libguestfs-tools virt-manager</code></p>
<p>Start KVM/Libvirt and set to start on boot.<br>
<code>systemctl enable libvirtd &amp;&amp; systemctl start libvirtd</code></p>
<p>Check status of libvirtd - should show as active (running).<br>
<code>systemctl status libvirtd</code></p>
<h1 id="step2createabridgeinterface">Step 2 Create a bridge interface</h1>
<p>A bridge interface is required for allowing VMs to access the network that the hypervisor is connected to.</p>
<p>Find your machines physical by running the command <code>ip add</code>.<br>
<img src="http://bgpgeek.com/content/images/2022/09/ip_add.png" alt="ip_add" loading="lazy"><br>
Create your bridge interface file.<br>
<code>cd /etc/sysconfig/network-scripts/</code><br>
<code>vi ifcfg-br0</code></p>
<blockquote>
<p>TYPE=Bridge<br>
ONBOOT=yes<br>
DEVICE=br0<br>
BOOTPROTO=static<br>
IPADDR=10.25.3.63<br>
PREFIX=22<br>
GATEWAY=10.25.0.1<br>
DNS1=8.8.8.8</p>
</blockquote>
<p>Add physical interface to bridge.<br>
<code>vi ifcfg-eth0</code></p>
<blockquote>
<p>BRIDGE=br0</p>
</blockquote>
<p>Restart the network service .<br>
<code>systemctl restart network</code></p>
<p>Verify br0 has the static IP address you have set.<br>
<code>ip add</code><br>
<img src="http://bgpgeek.com/content/images/2022/09/ip-add-br0.png" alt="ip-add-br0" loading="lazy"></p>
<h1 id="step3optionalusefulutilities">Step 3 Optional useful utilities</h1>
<p>Some useful packages to install.<br>
<code>yum install wget net-tools nano ntp</code></p>
<p><code>systemctl enable ntpd &amp;&amp; systemctl start ntpd</code></p>
<h1 id="links">Links</h1>
<p><a href="http://bgpgeek.com/install-vnc-with-xfce/">Part2</a><br>
<a href="http://bgpgeek.com/install-vagrant-on-centos7/">Part3</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>