<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Vm on Backend Engineering Strategy Tools</title><link>https://backend-engineering-strategy-tools.github.io/site/tags/vm/</link><description>Recent content in Vm on Backend Engineering Strategy Tools</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 14 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://backend-engineering-strategy-tools.github.io/site/tags/vm/index.xml" rel="self" type="application/rss+xml"/><item><title>VyOS</title><link>https://backend-engineering-strategy-tools.github.io/site/public-notes/networking/vyos/</link><pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate><guid>https://backend-engineering-strategy-tools.github.io/site/public-notes/networking/vyos/</guid><description>&lt;p&gt;VyOS is an open-source network operating system built on Debian Linux. It runs on bare metal or as a VM, and is configured via a CLI with a commit/rollback model similar to Juniper JunOS. Configuration changes are staged and only take effect when you explicitly &lt;code&gt;commit&lt;/code&gt; — there is no live-editing a running config and hoping nothing breaks.&lt;/p&gt;
&lt;p&gt;It ships FRRouting (FRR) as the routing engine, giving it native support for BGP, OSPF, IS-IS, and other protocols. This is its main distinction from &lt;a class="link" href="https://backend-engineering-strategy-tools.github.io/site/public-notes/networking/opnsense/" &gt;OPNsense&lt;/a&gt; for homelab use: OPNsense is a firewall appliance that can do some routing; VyOS is a routing OS that can also do firewall.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="configuration-model"&gt;Configuration model
&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;vyos@router# set interfaces ethernet eth0 address &amp;#39;192.168.1.254/24&amp;#39;
vyos@router# set protocols bgp system-as &amp;#39;65001&amp;#39;
vyos@router# commit
vyos@router# save
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;configure&lt;/code&gt; enters configuration mode. &lt;code&gt;set&lt;/code&gt; stages a change. &lt;code&gt;commit&lt;/code&gt; applies it. &lt;code&gt;save&lt;/code&gt; persists it to disk. &lt;code&gt;rollback&lt;/code&gt; reverts to the last committed state if something goes wrong. The separation between staging and applying is genuinely useful when changing routing configuration remotely.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="key-features"&gt;Key features
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Feature&lt;/th&gt;
 &lt;th&gt;Notes&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;BGP&lt;/td&gt;
 &lt;td&gt;Via FRRouting; full eBGP/iBGP support&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;OSPF / IS-IS&lt;/td&gt;
 &lt;td&gt;Also via FRR&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Static routing&lt;/td&gt;
 &lt;td&gt;Standard&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;VLAN&lt;/td&gt;
 &lt;td&gt;802.1Q trunking&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;NAT&lt;/td&gt;
 &lt;td&gt;Source and destination NAT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Firewall&lt;/td&gt;
 &lt;td&gt;Zone-based, stateful&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;WireGuard&lt;/td&gt;
 &lt;td&gt;Built-in&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;OpenVPN&lt;/td&gt;
 &lt;td&gt;Built-in&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;DHCP server&lt;/td&gt;
 &lt;td&gt;Built-in&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;VXLAN&lt;/td&gt;
 &lt;td&gt;Supported&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="vyos-vs-opnsense"&gt;VyOS vs OPNsense
&lt;/h2&gt;&lt;p&gt;VyOS is the right choice when you want a dedicated BGP peer or a router VM with a clean CLI config model. OPNsense is the right choice when you want a full gateway appliance with a web UI.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="automation"&gt;Automation
&lt;/h2&gt;&lt;p&gt;VyOS is designed to be automated — the commit/rollback model maps cleanly onto infrastructure-as-code workflows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;REST API&lt;/strong&gt; — built-in HTTP API for retrieving and applying configuration programmatically. Useful for scripting config changes without SSH.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ansible&lt;/strong&gt; — official &lt;code&gt;vyos.vyos&lt;/code&gt; collection on Ansible Galaxy. Modules for interfaces, BGP, firewall rules, and more. Changes go through the normal commit/rollback cycle.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Terraform&lt;/strong&gt; — community provider available. Less mature than the Ansible collection but usable for provisioning router config alongside other infrastructure.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="related"&gt;Related
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.vyos.io/" target="_blank" rel="noopener"
 &gt;VyOS documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.vyos.io/en/latest/automation/vyos-api.html" target="_blank" rel="noopener"
 &gt;VyOS REST API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.ansible.com/ansible/latest/collections/vyos/vyos/index.html" target="_blank" rel="noopener"
 &gt;VyOS Ansible collection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://vyos.net/get/" target="_blank" rel="noopener"
 &gt;VyOS rolling release downloads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://backend-engineering-strategy-tools.github.io/site/public-notes/networking/bgp/" &gt;BGP&lt;/a&gt; — protocol background&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://backend-engineering-strategy-tools.github.io/site/public-notes/networking/opnsense/" &gt;OPNsense&lt;/a&gt; — the complementary edge gateway&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://backend-engineering-strategy-tools.github.io/site/homelab/vyos-bgp/" &gt;VyOS + BGP in the homelab&lt;/a&gt; — the actual setup&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>