<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Homelab on 0x2142 | Networking Nonsense</title>
    <link>https://0x2142.com/tags/homelab/</link>
    <description>Recent content in Homelab on 0x2142 | Networking Nonsense</description>
    <image>
      <title>0x2142 | Networking Nonsense</title>
      <url>https://0x2142.com/logo.jpg</url>
      <link>https://0x2142.com/logo.jpg</link>
    </image>
    <generator>Hugo -- 0.143.1</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 09 Dec 2022 16:40:49 +0000</lastBuildDate>
    <atom:link href="https://0x2142.com/tags/homelab/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>[How To] Set up AdGuard Home on OPNsense</title>
      <link>https://0x2142.com/how-to-set-up-adguard-on-opnsense/</link>
      <pubDate>Fri, 09 Dec 2022 16:40:49 +0000</pubDate>
      <guid>https://0x2142.com/how-to-set-up-adguard-on-opnsense/</guid>
      <description>In this post, we&amp;rsquo;ll walk through how to install, setup, and configure AdGuard Home on OPNsense for DNS-level ad blocking.</description>
      <content:encoded><![CDATA[<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/7RC7q5WOYC0?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

<p>In this post - we&rsquo;ll take a look at how to set up &amp; configure AdGuard Home on OPNsense.</p>
<p>Please note that the AdGuard Home plugin for OPNsense is a <a href="https://github.com/mimugmail/opn-repo">community built plugin</a>, and not officially supported by OPNsense.</p>
<hr>
<h2 id="whats-adguard-home-why-use-it">What&rsquo;s AdGuard Home? Why use it?</h2>
<p>Almost every website we visit these days is loaded with additional components for  advertisements, analytics, and engagement tracking. One one side, these tools can be very helpful for the company or website owner to monetize their platform and/or track &amp; understand their audience&rsquo;s interests.</p>
<p>However, it&rsquo;s also becoming more popular to want to <em>avoid</em> being tracked on every website, or reduce the amount of advertisements you see. Unfortunately, a lot of these scripts &amp; code snippets are automatically embedded in websites and most don&rsquo;t allow you to opt-out.</p>
<p>A while back, there were a few browser extensions that became popular by automatically blocking the advertisement &amp; tracking elements from loading. These were great (and still are!), but a lot of website owners have been fighting it &amp; making it harder to block their content. In addition, these types of extensions operate at your web browser level - meaning that your computer has already made a few calls out to the internet before the extension even has a chance to block something.</p>
<p>Here&rsquo;s where we&rsquo;ve started to see more ad blockers come out that operate at the network level. AdGuard Home is one of them, but you also may have seen similar packages like Pi-hole or NextDNS. These are typically packages that you install on your home network &amp; run as a local Domain Name System (DNS) server.</p>
<p>Each time your browser needs to load something from the web, the first step is figuring out what IP address to connect to. For this, the computer reaches out to it&rsquo;s configured DNS server and provides the website name (like 0x2142.com). The DNS server looks up where that lives &amp; provides the computer with the IP address (like 203.0.113.52). Then your computer can load the website by connecting to that address.</p>
<p>With a DNS-level blocker, like AdGuard Home, we can block your computer from ever trying to establish that connection. If you tried to go to a website (like 0x2142.com), and there was an embedded advertisement or tracking, AdGuard would tell your computer that the domain hosting the advertisement doesn&rsquo;t exist (usually via returning a 0.0.0.0 or NXDOMAIN response). So your browser would still be able to load the main site (0x2142.com), but it would never even try to establish a connection to the advertisement or tracking components.</p>
<p>So we gain a few benefits here - the big ones being some level of privacy &amp; reduced advertisement noise when browsing the web. But also since we block so much of that noise early in the process, your computer never has the opportunity to load that content - meaning that we also save on bandwidth usage &amp; data costs. There may also be small performance improvements since each site has less content that needs to be loaded.</p>
<p>The other bonus worth considering is security. There are quite a handful of DNS blocklists that are constantly updated with the latest malicious or suspicious domains. The quicker we can block  &amp; stop clients from potentially connecting to those domains, the better off we are!</p>
<p>Is there a down side? Yeah, of course there is! A lot of these DNS-level blockers pull from varying website blocklists - which are not always 100% accurate. So sometimes you may still see advertisements or get tracked. It&rsquo;s not a perfect system. In addition, you may also (and sometimes often) see the reverse - parts of websites being blocked that are legitimate. And there are quite a handful of websites these days that won&rsquo;t work correctly unless they can load 3rd party components. Most of the time everything will be fine, but just be aware that there may be some time spent troubleshooting &amp; manually unblocking website components.</p>
<h3 id="do-i-have-to-install-this-on-opnsense">Do I have to install this on OPNsense?</h3>
<p>Nope. AdGuard Home has a number of packages &amp; ways to get running. Check out their <a href="https://github.com/AdguardTeam/AdguardHome">GitHub</a> repo.</p>
<p>If you&rsquo;re already running OPNsense, it&rsquo;s easy to install this as an add-on package &amp; not have another system to manage. However, if you prefer to set up AdGuard (or Pi-hole, or others) elsewhere, that&rsquo;s fine too. You&rsquo;ll just need to update your client network&rsquo;s DHCP options to use the new DNS servers. See the last section below on how to do that.</p>
<p>Okay - Let&rsquo;s get started with setting this up!</p>
<h2 id="topology">Topology</h2>
<p>For the purposes of this walkthrough, we&rsquo;ll be using a fairly simple &amp; straightforward topology. A single OPNsense appliance connected to the internet via it&rsquo;s WAN port, as well as a single client PC connected via the LAN port.</p>
<p>In this setup, the OPNsense appliance is configured to provide IP address &amp; DNS information to our client PCs via DHCP.</p>
<p><img alt="topology" loading="lazy" src="/content/images/2022/12/topology.png#center"></p>
<h2 id="adding-the-community-repository-to-opnsense">Adding the Community Repository to OPNsense</h2>
<p>So by default, AdGuard Home is not included in the available plugins to download/install in OPNsense. However, someone built a community plugin repository that includes a small handful of additional packages.</p>
<p>Before we can install the AdGuard Home plugin, we will need to setup &amp; install that <a href="https://github.com/mimugmail/opn-repo">community repository</a>.</p>
<p>To do this, we&rsquo;ll need direct SSH or console access to our OPNsense appliance.</p>
<p>SSH is disabled by default, but we can enable it quickly by navigating to <strong>System &gt; Settings &gt; Administration</strong> and then scrolling down to the <strong>Secure Shell</strong> section.</p>
<p><img alt="enable-ssh-1" loading="lazy" src="/content/images/2022/12/enable-ssh-1.png#center"></p>
<p>We&rsquo;ll need to check the box for <strong>Enable Secure Shell</strong> and <strong>Permit Password Login</strong>. If you&rsquo;re logging into OPNsense with the <strong>root</strong> account, you&rsquo;ll also need to select <strong>Permit root user login</strong>.</p>
<p>Then scroll down to the bottom of the page &amp; click <strong>Save</strong>.</p>
<blockquote>
<p>Note: By default OPNsense will also have the SSH <strong>Listen Interface</strong> set to <strong>All</strong>. I would highly recommend setting this to only enable on your <strong>LAN</strong> interface
Also: If you don&rsquo;t need SSH access all the time, please remember to disable this service once you&rsquo;re finished setting this up!</p></blockquote>
<p>Okay, now that&rsquo;s enabled - we can connect to our OPNsense appliance using your preferred SSH client (like <a href="https://www.putty.org/">PuTTY</a>).</p>
<p>If you&rsquo;re using the <strong>root</strong> account, you&rsquo;ll likely be dropped into the OPNsense shell - but you can select option 8 here to access the underlying FreeBSD shell.</p>
<p>In order to install the community repository, we&rsquo;ll pull down the repository config file using the following command:</p>
<pre tabindex="0"><code>fetch -o /usr/local/etc/pkg/repos/mimugmail.conf https://www.routerperformance.net/mimugmail.conf
</code></pre><p>Then, we&rsquo;ll need to ask OPNsense to update it&rsquo;s local cache with the new repo - so it knows what packages are hosted there:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">pkg update
</span></span></code></pre></div><p>If everything is successful, you&rsquo;ll see output similar to below - which lists the <code>mimugmail</code> repository now:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">root@0xOPNsense:/home/matt <span class="c1"># pkg update</span>
</span></span><span class="line"><span class="cl">Updating OPNsense repository catalogue...
</span></span><span class="line"><span class="cl">Fetching meta.conf: 100%    <span class="m">163</span> B   0.2kB/s    00:01
</span></span><span class="line"><span class="cl">Fetching packagesite.pkg: 100%  <span class="m">229</span> KiB 234.3kB/s    00:01
</span></span><span class="line"><span class="cl">Processing entries: 100%
</span></span><span class="line"><span class="cl">OPNsense repository update completed. <span class="m">822</span> packages processed.
</span></span><span class="line"><span class="cl">Updating mimugmail repository catalogue...
</span></span><span class="line"><span class="cl">Fetching meta.conf: 100%    <span class="m">163</span> B   0.2kB/s    00:01
</span></span><span class="line"><span class="cl">Fetching packagesite.pkg: 100%   <span class="m">54</span> KiB  54.8kB/s    00:01
</span></span><span class="line"><span class="cl">Processing entries: 100%
</span></span><span class="line"><span class="cl">mimugmail repository update completed. <span class="m">177</span> packages processed.
</span></span><span class="line"><span class="cl">All repositories are up to date.
</span></span></code></pre></div><h2 id="installing-the-adguard-home-package">Installing the AdGuard Home Package</h2>
<p>Now that the additional package repository is set up, we can download &amp; install the AdGuard Home plugin via the OPNsense web interface.</p>
<p>So back in our browser, we can nagivate to: <strong>System &gt; Firmware &gt; Plugins</strong>. On this page we can search for <strong>adguard</strong> or scroll through the list to find it.</p>
<p><img alt="plugin-install" loading="lazy" src="/content/images/2022/12/plugin-install.png#center"></p>
<p>Then we just click the plus icon on the right side to install (not shown in the screenshot above).</p>
<p>This should install pretty quickly:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">***GOT REQUEST TO INSTALL***
</span></span><span class="line"><span class="cl">Currently running OPNsense 22.7.9 <span class="o">(</span>amd64/OpenSSL<span class="o">)</span> at Sun Dec  <span class="m">4</span> 12:48:38 EST <span class="m">2022</span>
</span></span><span class="line"><span class="cl">Updating OPNsense repository catalogue...
</span></span><span class="line"><span class="cl">OPNsense repository is up to date.
</span></span><span class="line"><span class="cl">Updating mimugmail repository catalogue...
</span></span><span class="line"><span class="cl">mimugmail repository is up to date.
</span></span><span class="line"><span class="cl">All repositories are up to date.
</span></span><span class="line"><span class="cl">The following <span class="m">1</span> package<span class="o">(</span>s<span class="o">)</span> will be affected <span class="o">(</span>of <span class="m">0</span> checked<span class="o">)</span>:
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">New packages to be INSTALLED:
</span></span><span class="line"><span class="cl"> os-adguardhome-maxit: 1.8 <span class="o">[</span>mimugmail<span class="o">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Number of packages to be installed: <span class="m">1</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">The process will require <span class="m">35</span> MiB more space.
</span></span><span class="line"><span class="cl"><span class="m">7</span> MiB to be downloaded.
</span></span><span class="line"><span class="cl"><span class="o">[</span>1/1<span class="o">]</span> Fetching os-adguardhome-maxit-1.8.pkg: .......... <span class="k">done</span>
</span></span><span class="line"><span class="cl">Checking integrity... <span class="k">done</span> <span class="o">(</span><span class="m">0</span> conflicting<span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="o">[</span>1/1<span class="o">]</span> Installing os-adguardhome-maxit-1.8...
</span></span><span class="line"><span class="cl"><span class="o">[</span>1/1<span class="o">]</span> Extracting os-adguardhome-maxit-1.8: .......... <span class="k">done</span>
</span></span><span class="line"><span class="cl">Stopping configd...done
</span></span><span class="line"><span class="cl">Starting configd.
</span></span><span class="line"><span class="cl">Migrated OPNsense<span class="se">\A</span>dguardhome<span class="se">\G</span>eneral from 0.0.0 to 0.0.1
</span></span><span class="line"><span class="cl">Reloading plugin configuration
</span></span><span class="line"><span class="cl">Configuring system logging...done.
</span></span><span class="line"><span class="cl">Reloading template OPNsense/Adguardhome: OK
</span></span><span class="line"><span class="cl">Checking integrity... <span class="k">done</span> <span class="o">(</span><span class="m">0</span> conflicting<span class="o">)</span>
</span></span><span class="line"><span class="cl">Nothing to <span class="k">do</span>.
</span></span><span class="line"><span class="cl">***DONE***
</span></span></code></pre></div><p>Now all we have to do is enable the plugin.</p>
<p>So we&rsquo;ll navigate down to <strong>Services &gt; Adguardhome &gt; General</strong>. Our only option here will be an <strong>Enable</strong> checkbox, so we&rsquo;ll select that &amp; <strong>Save</strong>.</p>
<p><img alt="enable-adguard" loading="lazy" src="/content/images/2022/12/enable-adguard.png#center"></p>
<p>The rest of the setup &amp; initial configuration will be done directly from the AdGuard-specific web interface.</p>
<h2 id="initial-setup">Initial Setup</h2>
<p>By default, the AdGuard Home web interface will run on port 3000 &amp; is not HTTPS-enabled. So if your OPNsense firewall is at <code>https://192.168.1.1</code>, you&rsquo;ll need to connect to <code>http://192.168.1.1:3000</code>.</p>
<p>As long as that works - we&rsquo;ll see the initial setup prompt below:</p>
<p><img alt="adguard-setup-01" loading="lazy" src="/content/images/2022/12/adguard-setup-01.png#center"></p>
<p>We&rsquo;ll click on <strong>Get Started</strong>.</p>
<p>Now we&rsquo;ll be asked to configure the Admin Web interface (the interface we&rsquo;re connected to now) and the DNS server interface (which clients will use to resolve domain names).</p>
<p>By default, AdGuard home will try to set both of these to listen on <strong>All interfaces</strong> - and set the web on port 80 &amp; DNS on port 53.</p>
<p>I would recommend setting the <strong>Listen Interface</strong> on both of these to only your LAN-side networks. There is no reason to enable them on your WAN, and it can be a security risk to do so.</p>
<p>You may also get warnings that port 80 &amp; 53 may already be in use. For the web interface, we could change 80 to 3000 &amp; just keep what we&rsquo;re using now.</p>
<p>However, if we change the default DNS port, that will cause some additional problems since client machines will query port 53. Likely if port 53 is already in use, it&rsquo;s because another service on OPNsense (like Unbound DNS) is already enabled. In my case, I disabled this in favor of using AdGuard. However, if you want to use both - you can change the default DNS port in AdGuard to something like 65353, then have Unbound forward requests to AdGuard (More on this down below).</p>
<p>So here&rsquo;s what my set up looks like so far, with <code>192.168.1.1</code> being my LAN side interface:</p>
<p><img alt="adguard-setup-02" loading="lazy" src="/content/images/2022/12/adguard-setup-02.png#center"></p>
<p>On the next page, we&rsquo;ll be prompted to set up an administrative user &amp; password for logging into AdGuard.</p>
<p><img alt="adguard-setup-03" loading="lazy" src="/content/images/2022/12/adguard-setup-03.png#center"></p>
<p>Next we&rsquo;ll be given instructions on how to set up client devices. In my lab network, the OPNsense firewall is providing DNS server configuration via DHCP - so we&rsquo;ll get to that configuration shortly.</p>
<p>For now, we&rsquo;ll just click <strong>Next</strong>.</p>
<p><img alt="adguard-setup-04" loading="lazy" src="/content/images/2022/12/adguard-setup-04.png#center"></p>
<p>On the last screen, we&rsquo;ll just get a message saying that setup is complete &amp; a link to open the dashboard:</p>
<p><img alt="adguard-setup-05" loading="lazy" src="/content/images/2022/12/adguard-setup-05.png#center"></p>
<p>And now we can log in:</p>
<p><img alt="adguard-setup-06" loading="lazy" src="/content/images/2022/12/adguard-setup-06.png#center"></p>
<h2 id="adguard-home-configuration">AdGuard Home Configuration</h2>
<p>After logging in, the first thing we&rsquo;ll see is a pretty empty dashboard. We don&rsquo;t have any clients configured to use this yet, so there isn&rsquo;t anything to report on.</p>
<p><img alt="adguard-dashboard-initial" loading="lazy" src="/content/images/2022/12/adguard-dashboard-initial.png#center"></p>
<h3 id="blocking-domains">Blocking Domains</h3>
<p>First thing we&rsquo;ll look at is our DNS blocklists. We&rsquo;ll navigate to <strong>Filters &gt; DNS blocklists</strong>.</p>
<p>Here is where we can ask AdGuard to query lists of what domains to block. By default, AdGuard does include two - but we can add more if we want:</p>
<p><img alt="adguard-dns-blocklists" loading="lazy" src="/content/images/2022/12/adguard-dns-blocklists.png#center"></p>
<p>If we want to add to the configured blocklists, we can do so by clicking the <strong>Add Blocklist</strong> button. This will prompt us whether we want to choose from a pre-populated list, or supply our own custom list:</p>
<p><img alt="add-blocklist" loading="lazy" src="/content/images/2022/12/add-blocklist.png#center"></p>
<p>The easy option will be selecting from the provided lists:</p>
<p><img alt="choose-blocklist" loading="lazy" src="/content/images/2022/12/choose-blocklist.png#center"></p>
<p>There are a ton of different curated block lists available depending on what you&rsquo;re trying to block. If we wanted to use a custom list, a lot can be found on GitHub just by searching for <a href="https://github.com/topics/pihole-blocklists">PiHole</a> or <a href="https://github.com/topics/adguard-blocklist">Adguard</a> blocklists.</p>
<p>How to pick a blocklist will be up to you. There are blocklists that focus on advertisements, tracking &amp; analytics, parental controls, etc. So it just depends on what areas you want to focus on.</p>
<h3 id="allowing-domains--custom-filtering">Allowing Domains &amp; Custom Filtering</h3>
<p>If we have a list of known services that we want to ensure are never blocked, we can pull those lists via <strong>Filters &gt; DNS allowlists</strong>. However, it&rsquo;s more likely you&rsquo;ll find a handful of domains you want to unblock, rather than a whole list.</p>
<p>For that - we can go to <strong>Filters &gt; Custom filtering rules</strong>. At the bottom of this page there is a tool to check filtering, where we can enter a domain name &amp; instantly see what the result is.</p>
<p>For example, with the default ruleset I&rsquo;ll check to see if 0x2142.com is filtered:</p>
<p><img alt="filter-test-default" loading="lazy" src="/content/images/2022/12/filter-test-default.png#center"></p>
<p>So by default that domain isn&rsquo;t found anywhere, so it will be permitted. The tool also gives us a convenient button to quickly block a domain.</p>
<p>We can click that button, or add the syntax <code>||0x2142.com^</code> to the custom filtering rules at the top of the page (and saving via the <strong>Apply</strong> button). Now if we check the results again - the filter check will show the domain is blocked:</p>
<p><img alt="filter-test-block" loading="lazy" src="/content/images/2022/12/filter-test-block.png#center"></p>
<p>And of course, we don&rsquo;t want to block 0x2142.com!! So let&rsquo;s add this to our allowlist instead, so that it can never be blocked 🙃. We can do that by adding <code>@@||0x2142.com^</code> to the custom filtering.</p>
<p>And now we&rsquo;ll see a green box that shows that the domain is permitted via an allowlist:</p>
<p><img alt="filter-test-allow" loading="lazy" src="/content/images/2022/12/filter-test-allow.png#center"></p>
<h3 id="blocking-known-services">Blocking Known Services</h3>
<p>The other option worth mentioning is the ability to block certain known services, like WhatsApp, Twitter, Reddit, etc. This can be great if there are certain services you want to block, or for use as parental controls.</p>
<p>This can be found on the <strong>Filters &gt; Blocked Services</strong> page.</p>
<p><img alt="blocked-services" loading="lazy" src="/content/images/2022/12/blocked-services.png#center"></p>
<p>This way we can select a service to block, rather than having to know all of the individual domains that service uses. For example, I&rsquo;ll go ahead and select <strong>YouTube</strong> to block - and we&rsquo;ll check that later on after we configure our clients.</p>
<h2 id="configure-opnsense-dhcp-to-use-adguard">Configure OPNsense DHCP to use AdGuard</h2>
<p>Now that we&rsquo;ve taken a quick look at the AdGuard Home settings &amp; have a few things configured - let&rsquo;s look at setting up our clients to use our new DNS server.</p>
<p>In the lab environment I&rsquo;m using, the OPNsense appliance is providing client IP address configuration via Dynamic Host Configuration Protocol (DHCP).</p>
<p>By default, if a specific DNS server is not configured for your client DHCP settings, then OPNsense will provide the clients with the same DNS server it uses. This could have been a DNS server that was configured when you set up OPNsense, or it also can use DNS servers that are provided by your internet service provider.</p>
<p>So to update our LAN DHCP configuration, we&rsquo;ll head back to our OPNsense web interface. From there, we&rsquo;ll navigate to <strong>Services &gt; DHCPv4 &gt; [LAN]</strong>.</p>
<p>In the configuration, there is an open option for <strong>DNS Servers</strong>. We&rsquo;ll set this to our OPNsense LAN IP address. In my case, that is <code>192.168.1.1</code>. Then scroll to the bottom of the page &amp; click <strong>Save</strong>.</p>
<p><img alt="opn-dhcp" loading="lazy" src="/content/images/2022/12/opn-dhcp.png#center"></p>
<h2 id="client-testing">Client Testing</h2>
<p>Now we should be all set up! However, it&rsquo;s important to note that because of the way DHCP works, clients may not pick up the new configuration immediately. When DHCP assigns an IP address, it also tells the client how long it can use that address for. So if a client stays powered-on &amp; connected, it won&rsquo;t ask for new configuration until that timer expires.</p>
<p>We can speed that up by resetting the network interface on our clients. This can be done in a number of ways including rebooting the client or simply disconnecting from wifi/ethernet &amp; reconnecting.</p>
<p>I&rsquo;m using a Linux computer as my test system, so first I&rsquo;ll check via the <code>nslookup</code> command - which will query our configured DNS server &amp; return the resolved IP addresses.</p>
<p>If you remember, I blocked all of YouTube&rsquo;s services earlier:</p>
<p><img alt="client-test-before" loading="lazy" src="/content/images/2022/12/client-test-before.png#center"></p>
<p>As we can see, we did get the correct IP addresses - which means our filtering isn&rsquo;t working yet.</p>
<p>I&rsquo;ll reset the network adapter on the test PC, which will refresh the DHCP configuration - then try again:</p>
<p><img alt="client-test-after" loading="lazy" src="/content/images/2022/12/client-test-after.png#center"></p>
<p>Now that&rsquo;s the result we want! By returning the <code>0.0.0.0</code> result, our client can no longer resolve that domain. So if this was an advertisement or tracking domain, it&rsquo;s now blocked from loading.</p>
<p>And sure enough, if we now try to browse to that site via a web browser - we don&rsquo;t be able to access it:</p>
<p><img alt="client-test-browser" loading="lazy" src="/content/images/2022/12/client-test-browser.png#center"></p>
<h2 id="troubleshooting-blocked-domains">Troubleshooting Blocked Domains</h2>
<p>Okay, so now we know our blocking works&hellip;. But now someone in our home is trying to access YouTube &amp; it&rsquo;s not working. How can we tell if that&rsquo;s our AdGuard service?</p>
<p>Our first stop might be the AdGuard query log. Opening this log, we can filter by domain name or client - or show only blocked queries if we like.</p>
<p>Pretty quickly we can see the issue - we blocked YouTube&rsquo;s services:</p>
<p><img alt="adguard-query-log" loading="lazy" src="/content/images/2022/12/adguard-query-log.png#center"></p>
<p>Now we know how to fix the issue, which would be to unblock that service. However, if it was just a specific domain that was blocked, we would likely want to add it to our custom filtering as we showed earlier.</p>
<h2 id="reporting">Reporting</h2>
<p>Last but not least, we can also check our AdGuard Home dashboard again, which should be much more interesting than before:</p>
<p><img alt="adguard-dashboard-after" loading="lazy" src="/content/images/2022/12/adguard-dashboard-after.png#center"></p>
<p>Here we can quickly see how many queries have been made &amp; how many were blocked for various reasons. We&rsquo;ll also see what clients are using our DNS server, and which are making the most queries.</p>
<p>Most interesting (at least to me), is being able to see the top domains that were queried or blocked. Here&rsquo;s where you might find some interesting information. For example, on my test machine - it&rsquo;s a fresh installation of Ubuntu &amp; we used FireFox to test. But we can see that even during the brief time it&rsquo;s been set up, almost all of the highest queried domains belong to Mozilla&rsquo;s analytics services. So it may be tempting to add those to our custom blocklists.</p>
<h2 id="additional-info">Additional Info</h2>
<h3 id="what-if-i-have-adguard-running-on-a-different-server-or-want-to-keep-using-unbound-dns">What if I have AdGuard running on a different server? Or want to keep using Unbound DNS?</h3>
<p>Sure - we can make both of those work.</p>
<p>For the first scenario, maybe we have AdGuard Home installed &amp; set up on a Raspberry Pi on our network. For that, all we need to do is set that Raspberry Pi as the DNS server in our DHCP configuration on OPNsense. See above where we did that for our on-box AdGuard setup.</p>
<p>For the other situation, perhaps you want to use Unbound on OPNsense, but also AdGuard. There might be reasons for this - like even though Unbound does support DNS blocklists, AdGuard has better reporting tools. But on the other hand, Unbound has more features &amp; configuration options for DNS than Unbound.</p>
<p>In this case, we would want to run AdGuard on a different DNS port (like 65353), then have Unbound forward those to AdGuard. See below if you need to change the port AdGuard uses for DNS.</p>
<p>Within OPNsense, we could go to <strong>Services &gt; Unbound DNS &gt; Query Forwarding</strong>. Then add a new custom forwarding entry. Here we can forward requests for specific domains if we want - or if we want to forward <strong>all</strong> DNS requests, we can leave the domain field empty. Then fill in the AdGuard information - so in my example this would be 192.168.1.1 and port 65353.</p>
<p><img alt="unbound-custom-1" loading="lazy" src="/content/images/2022/12/unbound-custom-1.png#center"></p>
<p>Then click <strong>Save</strong> and <strong>Apply!</strong></p>
<h3 id="how-do-i-change-the-interface--port-for-the-web-ui-or-dns">How do I change the interface / port for the Web UI or DNS?</h3>
<p>So perhaps we mis-typed something when configuring AdGuard. Or just wanted to change the interface IP address AdGuard listens on. No problem!</p>
<p>Unfortunately, since this is a community plugin - there is no configuration for the plugin within the OPNsense interface.</p>
<p>We&rsquo;ll need to reconnect to the OPNsense command line to make some additional configuration changes. This can be done via SSH or the device console.</p>
<p>Once there, we can use the command <code>edit /usr/local/AdGuardHome/AdGuardHome.yaml</code>.</p>
<p>That config file looks like this:</p>
<p><img alt="adguard-config-file" loading="lazy" src="/content/images/2022/12/adguard-config-file.png#center"></p>
<p>At the top, <code>bind_host</code> &amp; <code>bind_port</code> pertains to the admin web interface. A little below there, under the <code>dns</code> section - you&rsquo;ll see another <code>bind_hosts</code> and <code>port</code> config. Those ones are specific to the DNS server side of things.</p>
<p>Once done, save the config file by pressing <code>Esc</code> then selecting to quit the editor &amp; save the file.</p>
<p>Lastly - Go back into the OPNsense web UI &amp; restart the AdGuard Home service for the changes to take effect.</p>
]]></content:encoded>
    </item>
    <item>
      <title>CCIE: Strategy &amp; What&#39;s Next</title>
      <link>https://0x2142.com/ccie-strategy-whats-next/</link>
      <pubDate>Sat, 25 Jan 2020 15:07:32 +0000</pubDate>
      <guid>https://0x2142.com/ccie-strategy-whats-next/</guid>
      <description>The key to the CCIE is having a good strategy. Let&amp;rsquo;s take a look at what helped me</description>
      <content:encoded><![CDATA[<h2 id="things-that-helped">Things That Helped</h2>
<p>One of the big things that helped me was just the experience I had prior to starting on the CCIE. My experience going into the studying likely gave me a huge step up compared to if I tried the exam earlier in my career. If I tried the CCIE eight years ago like I originally wanted to, it would have been a lot more difficult and much more time consuming. I would have had much more to learn from scratch, and much less practical experience to help.</p>
<p>Additionally - the other huge benefit was going into the lab with a solid strategy around time and task management. There were several places through the exam that I felt like I could have easily lost 30-45 minutes on one item. It was very important for me to be able to step back and admit I couldn’t solve something. Instead, it let me focus my time on completing the tasks that I could do - and working on the unknown stuff if I had time later.</p>
<p>On the task management side - I spent time early in the study process on finding a good strategy that worked for me. Once I had this figured out - I used it on <strong>every single</strong> practice lab. I ended up using a combination of a few things other people have written about previously. My base task management was using a great blog post by Chris Miles (<a href="https://thecontrolplane.com/2019/06/21/ccie-strategy-config-section/">Read it here</a>). In Chris’ blog, he suggests breaking up the tasks per location - then completing all the tasks for a location, one location at a time. That part didn’t work for me. Instead, I only used his method of organizing all of the tasks under individual locations - that way I could easily see what tasks were left and where I still needed to work. For example, if I needed to configure EIGRP - I could easily look at the sheet and see every location that needed some form of EIGRP config.</p>
<p>For the actual order in which I implemented tasks, I followed the guidance of a LinkedIn post by Kim Bartlett (<a href="https://www.linkedin.com/pulse/how-i-passed-ccie-routeswitch-lab-first-attempt-kim-bartlett">Link here</a>). In that article, Kim suggests a logical order of operations - like L2, IGP for MPLS, then MPLS, etc. Doing things in this way made sense to me. So I worked out what order worked for me, and decided to follow it. The big difference in my strategy, was that I found it easier to complete all tasks for a certain protocol/technology at once. For example, if I was configuring OSPF - then I would configure it at <strong>every</strong> location at the same time before moving onto the next piece. My overall order of operations was something like this: L2 -&gt; all IGP -&gt; VPN/MPLS -&gt; MP-BGP -&gt; iBGP -&gt; eBGP -&gt; BGP -&gt; IPv6 -&gt; Anything else. I found this to be a good flow for me. It allowed me to configure things like BGP only after I had already configured all of the underlying dependencies - which meant I could test immediately to see if everything was working as intended.</p>
<p>All of the above combined with constant labbing for months prior to the exam was absolutely critical to helping me pass on the first try. I had found a good strategy that worked for me and applied it to every practice lab, which meant that I walked into the actual exam feeling like I had a good way to guide myself through the onslaught of work. Had I walked in with just labbing experience and no good strategy, I don’t think I could have gotten close at all.</p>
<h2 id="okay-now-what">Okay, Now What?</h2>
<p>I’m now getting around to posting this over three months after I passed the CCIE. I’ve spent a lot of time catching up on things around the house, reading books, running through a few video games, and overall just trying to enjoy the free time.</p>
<p>That being said - it wasn’t long for me to start feeling guilty and itching to start working on something else. My first thought was to begin working on the DevNet certifications. I&rsquo;ve been doing a bit of Python &amp; network scripting over the past few years, and I&rsquo;m excited that Cisco is launching a certification program around it. I&rsquo;ve been working on this a bit recently, which has also helped me get back into a few Python projects I hadn&rsquo;t touched in a while. My current plan is to try taking some of these exams shortly after they launch.</p>
<p>I’ve also kept thinking back to one of the other certifications I considered going after: the CCDE. In my current job as a Systems Engineer at Cisco, the content behind this certification applies a lot more to my job than the CCIE. That’s not saying the CCIE doesn’t help me - it absolutely does. However, my job today is more understanding the technologies and how they fit into a customer’s network, rather than performing in-depth configuration work.</p>
<p>I don’t know yet whether I will fully pursue the CCDE and take the exams. But I have started reading a few of the recommended books, and I’m already finding bits of information that are valuable to me. I’m also really enjoying the content and getting much more interested in some of the topics. For now - I am planning on continuing to read through the information just to learn it and see where I can apply it. Once I get a good feel for everything, I’ll decide whether to chase the actual certification or not. For now, I think I&rsquo;ll just enjoy not looking at a PuTTY window for a while 🙂</p>
<p>Thanks for reading - and thanks to all the people who have supported me over the past few years. It’s was a long journey, and not always an easy one - but I think it was well worth it.</p>
<hr>
<p>Started here? Read the rest of my story:</p>
<p><a href="/story-time-how-i-started-working-toward-the-ccie/">Part 1: Getting Started</a></p>
<p><a href="/ccie-written-exam-lab-prep/">Part 2: Written Exam &amp; Lab Prep</a></p>
<p><a href="/ccie-lab-day/">Part 3: Lab Day</a></p>
<p><a href="/ccie-strategy-whats-next/">Part 4: Lab Strategy &amp; What&rsquo;s Next</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>CCIE: Lab Day</title>
      <link>https://0x2142.com/ccie-lab-day/</link>
      <pubDate>Sat, 25 Jan 2020 15:07:07 +0000</pubDate>
      <guid>https://0x2142.com/ccie-lab-day/</guid>
      <description>Let&amp;rsquo;s talk about my experiences with taking the CCIE Routing &amp;amp; Switching lab!</description>
      <content:encoded><![CDATA[<p>In the weeks leading up to the lab exam - I felt very unsure of where I was at. On one side, I felt like I was doing pretty well at most of the practice labs I was working on. But on the other side, I felt like I didn’t have any true idea of what challenges the real exam would hold - so I could be missing something big and have no idea yet. I know some people will throw the exam blueprint into excel and give themselves ratings on how well they know a particular blueprint item - but I never got into using this after trying it a few times. Realistically, I should have forced myself to do this anyways. Then I would have had a more deterministic way to judge how prepared I was. Instead - I had just reached a point where I knew I just needed to take the actual exam and figure out what I didn’t know yet.</p>
<p>Lab day finally came - and I arrived at Cisco building 5 in Richardson, TX around 7:45am. There were already a handful of other CCIE candidates waiting outside for the building to open. Once it hit 8am, we all went in to get signed in and fill out our lunch order forms. Then it was time to wait.</p>
<p>The exam proctor showed up around 8:17 and guided us to the exam room. I figured there would be more time allotted to the proctor talking through rules, guidelines, etc… but instead he just said a few quick things and we were told to begin.</p>
<h2 id="troubleshooting">Troubleshooting</h2>
<p>The troubleshooting section had me a bit concerned. It’s always difficult to jump into a completely unknown network and try to fix a problem - and this was no different. My first question immediately made me start panicking a little. I read the ticket, looked at the expected output - and began wondering where to start while being very aware of my short time limit. Every question felt like “I’m never going to figure this out in time” - yet after a few minutes of troubleshooting I was able to find the answers to the first few questions.</p>
<p>Halfway through the section I received a few tickets that required a lot more work. Some of these I didn’t make much progress on, and some I was able to get half-way resolved. For each of these I tried very hard to keep to a reasonable time limit per question, then mark it down as something to come back to later if I had time.</p>
<p>A lot of people talk about counting your points during the exam to know where you stand. I had originally assumed that this would just be a waste of time. Yet when I finished going through the remaining tickets, I knew I had to make sure I had enough points. Turned out I was barely on the edge of a passing score - assuming I had resolved all of the tickets correctly. My first two hours ran out, and I got the 30 minute warning. I was hoping to avoid using the extra 30 minutes, but I knew I needed to go back to the 3-4 questions I hadn’t completed.</p>
<p>About 15 minutes later - I had managed to figure out one or two more of the tickets and decided to give up on the remaining items. Based on my estimated point count - I should have been in a good spot on the troubleshooting section….. But I still wasn’t confident in all of my answers. I knew I had a ticket or two that might not be resolved in the correct way. I decided to save the remaining 15 minutes and just move onto the next part of the exam.</p>
<h2 id="diagnostics">Diagnostics</h2>
<p>Next was the diagnostics section. My biggest complaint here (and it&rsquo;s somewhat minor) is that the on-screen timer is located in a completely different place than troubleshooting &amp; config. At first (probably because I was in a rush), I couldn’t find the timer - and I also had not kept track of when I began the section. That was a big mistake on my part. So I forced myself to rush through the section, knowing it could end unexpectedly at any second.</p>
<p>Once I wrapped up my diag questions - I finally found the timer… and to my surprise had just under five minutes left. Not a ton of time, but enough for me to go back and double check a few answers that I had rushed myself through. I also used the last minute or two to run for a restroom break before starting the config section.</p>
<p>I honestly had no idea how well I was doing on this section. One of the questions seemed straightforward, but the answer I picked felt too simple. But maybe I was just overthinking it? The other questions made me waffle back and forth between a few answers. In the end, I just went with what my instincts told me was the most likely answer and just stuck with that.</p>
<h2 id="config">Config</h2>
<p>The config section is extremely overwhelming at first. Well, I suppose it doesn’t get any less overwhelming during the exam - but you quickly get busy enough to stop caring about that 🙂</p>
<p>I had about 30-45 minutes in the config section before we took lunch. That was enough time for me to get through all of the Layer 2 tasks quickly and then build out my task list on the scratch paper. During this time, I thought I was doing okay until I got to the end of one of my first tasks. I had just completed all of the items within that task when I read the last item - which made me realize I had done the entire task incorrectly. That was not a pleasant feeling. Luckily, I caught my mistake before moving on - but the time had already been wasted and now I had to go back and re-configure that entire section.</p>
<p>Lunch was quick. We went out, ate our food, then got back to the exam in less than 15-20 minutes. There was a bit of minor discussion - but not a whole lot.</p>
<p>The remainder of the day went by very quickly. As I had practiced during the prior weeks of practice labs, I placed my trust in strategy &amp; order of operations - then just went heads down and got to work. I tried not to look at the clock and instead just focused on getting the tasks done as quickly and efficiently as possible. I’ll share a little more on my strategy in the next post.</p>
<p>I ran into a few problems here and there throughout the exam, but nothing too crazy. The strategy I used allows for quick connectivity/functionality testing after completing a task, which allowed me to find and fix my errors quickly. Similar to the troubleshooting section, I hit a few tasks that I could only figure out parts of - so I marked them down to follow up later and just moved on. Since you don’t get partial credit for tasks, I knew I would need to circle back to these if I wanted a shot at passing - but there is no sense in wasting too much time on one task if I couldn&rsquo;t figure it out quickly.</p>
<p>By the time I had finished every task, I finally let myself check the clock. I was shocked to see I still had almost a full hour remaining. I quickly took advantage of the time to go back to the several sections I needed more work on. A few of these I stumbled through until I was able to find my problems - and some of it I had to crack open the documentation site to figure out what I needed to do.</p>
<p>Running through a lot of the verification steps - there was still a few things not working as they should. I spent time troubleshooting, changing configs, and finally figuring out a few things. I made quite a few configuration changes here to force a few things to work, but I wasn’t sure if they were valid solutions - or if I would end up losing points for doing things I shouldn’t have.</p>
<p>In the last 10 or so minutes, I tried to very quickly add up my points while performing a quick skim through the tasks again. Being that close to the end of the exam - it made me feel a bit sick to start finding additional items I had missed. I rushed to throw in a few last-minute changes, then retest to make sure nothing broke in the process. I didn’t make it through re-reading all of the tasks, so I was left wondering what else I might have missed.</p>
<p>Assuming I had not missed anything else - my count of points placed me in a fairly decent spot on config. However, since there is an overall cut score for the entire exam - I had no idea if I would have enough total points between all three sections to pass. I was already like I might have just barely scraped enough points together for troubleshooting, and diag felt like a complete wildcard.</p>
<p>When I left the exam center, I found myself feeling much better than when I had entered. If I passed, then that would be awesome. And if I had failed, then at least I was confident in what I needed to go back and study. Rather than having to keep worrying about what tricks the exam might hold, I now had the experience of knowing what to expect. I was happy to have attempted the exam once - and knew I would be far better prepared the next time.</p>
<p>That evening I went to dinner with a few CCIE candidates who would be attempting the exam the following day. Just tried to have a good time, and not check my email too much :). When I got back to the hotel that night, I still had no results yet - so I just went to bed and tried to get some sleep.</p>
<h2 id="the-next-day">The Next Day</h2>
<p>I woke up probably a dozen or more times throughout the night. Every time my first instinct was to grab my phone and see if I had gotten my results yet. Every time I forced myself to <strong>not</strong> check, and just go back to sleep. Around 5am, I finally let myself check once - but still had nothing.</p>
<p>I finally got up around 6:30 - and the CCIE exam site was down. I had a bunch of text messages from people back home asking if I had anything to report - but now I couldn’t even check the site. Later I would find out that the site was broken due to an internal issue at Cisco, but for the time I couldn’t do anything. I tried a few more times throughout the morning, but mostly just gave up and decided to wait it out.</p>
<p>My flight left around 10:30 am. While waiting in the airport, I still kept checking every so often but could not get to the site.</p>
<p>Once I got onto the plane, the site finally loaded! But my results were the same: No score yet. A this point I figured I would just give up, enjoy the flight - and check when I got back home.</p>
<p>Boarding took a little longer than usual for the remaining passengers. Right as it was announced that they were shutting the doors and we would be taking off shortly, I decided to try checking one more time.</p>
<p>As the site loaded - this time I was greeted with a new status: <strong>Pass</strong>.</p>
<p>My initial reaction was just absolute relief to finally be done - knowing that I didn’t have to keep worrying about trying to pass before the upcoming certification changes. I sat back for a minute before refreshing the site again to make sure the result didn’t change. Nope - the result still said pass.</p>
<p>With that - on October 9th, 2019 - I was done. I had my number. CCIE #63461.</p>
<hr>
<p>Keep going for the rest of my story:</p>
<p><a href="/story-time-how-i-started-working-toward-the-ccie/">Part 1: Getting Started</a></p>
<p><a href="/ccie-written-exam-lab-prep/">Part 2: Written Exam &amp; Lab Prep</a></p>
<p><a href="/ccie-lab-day/">Part 3: Lab Day</a></p>
<p><a href="/ccie-strategy-whats-next/">Part 4: Lab Strategy &amp; What&rsquo;s Next</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>CCIE: Written Exam &amp; Lab Prep</title>
      <link>https://0x2142.com/ccie-written-exam-lab-prep/</link>
      <pubDate>Sat, 25 Jan 2020 15:06:47 +0000</pubDate>
      <guid>https://0x2142.com/ccie-written-exam-lab-prep/</guid>
      <description>A short look at my experiences studying &amp;amp; taking the Cisco CCIE written exam</description>
      <content:encoded><![CDATA[<h2 id="written-exam">Written Exam</h2>
<p>Finally in early 2019 I gave up on trying to gauge where I was at - and figured it was time to just give the exam a shot. I had already been studying for almost a year and a half, and I was craving some definitive way of figuring out where I was at. I went ahead and scheduled an exam for Tuesday, March 12th.</p>
<p>When I walked into the written exam, my first question immediately made me feel unprepared. It was something specific to provider WAN switching - not a topic I had spent enough time on yet. I did my best to take an educated guess, but that first question gave me a lot of doubt about how well prepared I was.</p>
<p>The written exam overall felt very&hellip; all over the place. It didn’t feel like a single cohesive exam - instead it felt like 20 different banks of questions shuffled into one. Some people call the exam just random networking trivia - and in some ways that might be accurate. For example, I might have a question on very basic L2, followed immediately by a very in-depth question on MPLS. Then probably over to something completely different. I didn’t want to admit it at the time, but I probably felt far less confident in answering many of the questions I got - and gave my best effort on guessing at quite a few.</p>
<p>Already not feeling great about how well I was doing, the test finally made its way into the evolving technologies section. This section did nothing to ease my nerves :). I completely understand why this section exists, but it felt like there was almost no effort put into some of the questions. Many of the questions I got made no sense, had grammatical errors, or gave a set of possible answers that didn’t line up with what the question was asking. Even for technologies that I did have a lot of experience with, it felt like the question was just written by someone who had no understanding of it.</p>
<p>As I finished my last question, there was no doubt in my mind that I had failed. To me, it was just a matter of how badly did I miss and how can I better prepare for next time. I was already making several mental notes on what topics I desperately needed to go back and review for the next attempt.</p>
<p>However - when I clicked through the remaining screens on the exam, I was extremely surprised to see that I had passed. It was only by a few points - but a pass is a pass!</p>
<p>Walking out of the exam, I sent a message to a few people at work to let them know I had passed. Even with the score sheet in my hand, I didn’t feel comfortable saying that I had passed. At no point during the exam did I feel like I was doing well. Maybe that’s just part of the difficulty? I don’t know&hellip; I&rsquo;m honestly glad to see the written exam requirement is being dropped from the new exam blueprints.</p>
<h2 id="studying-for-the-lab-exam">Studying for the Lab Exam</h2>
<p>Once I had gotten past the written exam, my full attention went into working toward the lab. I spent too much time initially trying to get my lab environment all sorted out. Went back and forth trying to choose between EVE-NG and GNS3, before finally settling on GNS3. Then I wasted a bunch of time trying to find the right images to use and testing them to make sure everything worked.</p>
<p>Finally - I picked up a copy of “CCIE Routing and Switching v5.1 Foundations: Bridging the Gap Between CCNP and CCIE” and got started. Going through this first book was far less enjoyable than I had hoped. Each lab was a completely different topology with a lot of pre-work to get going - and in many cases completing the actual practice lab would take a fraction of the time it took to get set up. I got frustrated with this a lot - but tried to keep pushing through to at least finish the book as a starting point. This ultimately amounted to a rocky start to labbing for me. Not working on it as much as I should, and not necessarily looking forward to it.</p>
<p>My next set of materials would be the INE workbooks - which honestly are structured far better. These labs were all on a shared topology that I could easily clone in GNS3 every time I started a new section. All of the pre-config is done for you - so that you can just focus on the pieces relevant to the topic. For example, if you’re working on a BGP lab - you don’t have to start from scratch with IP addressing or L2 configs. This made the content much easier to consume, and did a lot to help me spend more time working on practice labs. I got through these labs pretty quickly and repeated quite a few for additional practice.</p>
<p>At Cisco Live US 2019 - there was a huge announcement regarding certification changes. The CCIE exam &amp; content was changing (along with pretty much everything else). I wasn’t entirely surprised to hear the announcement since the existing track was several years old, and I had come across a few rumors on the internet of possible changes. Even still, I was finding myself now up against a very finite amount of time to pass the lab exam. The old test would be phased out in just eight months (in February 2020).</p>
<p>After the announcement, I talked to my manager about what to do. We decided it would probably be in my best interests to schedule a lab date, and do whatever I can to try and pass ahead of the exam changes. So - only a few days after the new content was announced, I had scheduled a lab date for October 9th, 2019. This was less than four months away, and I still had a ton of content / practice labs to get through.</p>
<p>Having the looming deadline did great things for my motivation :). On the good side of things - It helped me to spend more and more time studying for the lab exam. I was able to focus more than before, and I was finding it much easier to push myself to practice even when I wasn&rsquo;t necessarily excited to. Over the summer I nearly doubled the amount of time I had spent labbing compared to before the announcement. On the not-so-good side - I had also put together a week-by-week plan of what I still needed to accomplish between now and October. It was a tighter timeline than I was originally looking at, and now it felt like I didn’t have enough time to accomplish everything. I pushed through it anyways, knowing that October was just my first attempt. If I couldn’t finish everything in time, then I would still have time before the second try.</p>
<p>Remember back when I mentioned that six year gap between getting the CCNP and starting on the CCIE? This is the big part where that helped me a ton. Going through a lot of the workbooks - I didn’t necessarily feel like anything was too crazy. Over the past 10+ years I’ve worked at a number of different companies and had the opportunity to play with a lot of networking gear. I had a great base of experience with most L2/L3 technologies, including quite a bit of practice with all the fun that BGP has to offer.</p>
<p>One of the other big things that I think helped was that not all of my prior experience was on Cisco equipment. Having to learn how to configure BGP, VRFs, or switching on multiple vendors forces you to think beyond the syntax. Every vendor implements things in their own unique way - and this helps you to get beyond just memorizing what commands to enter. Instead, you begin having to learn much more about the underlying technologies and how they operate - and understanding what you’re actually trying to accomplish. Then it’s just a matter of researching whatever syntax that specific vendor uses to implement that function.</p>
<p>Having that good base of knowledge and experience helped me burn through the practice labs fairly quickly. A lot of content felt very familiar, with maybe a few new variations of commands - or maybe a new option that I hadn’t previously used. Even some of the pieces that I hadn’t used much of before, like DMVPN or multicast, still seemed easy enough to grasp how it worked and learn the necessary syntax.</p>
<p>That being said - In a lot of ways it also gave me a false sense of security. Feeling like maybe I knew more than I realized and therefore maybe I was better prepared. Yet at the same time, knowing how difficult the lab is supposed to be - and constantly wondering what I could be missing.</p>
<hr>
<p>Keep going for the rest of my story:</p>
<p><a href="/story-time-how-i-started-working-toward-the-ccie/">Part 1: Getting Started</a></p>
<p><a href="/ccie-written-exam-lab-prep/">Part 2: Written Exam &amp; Lab Prep</a></p>
<p><a href="/ccie-lab-day/">Part 3: Lab Day</a></p>
<p><a href="/ccie-strategy-whats-next/">Part 4: Lab Strategy &amp; What&rsquo;s Next</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Story Time! How I Started Working Toward the CCIE</title>
      <link>https://0x2142.com/story-time-how-i-started-working-toward-the-ccie/</link>
      <pubDate>Sat, 25 Jan 2020 15:06:07 +0000</pubDate>
      <guid>https://0x2142.com/story-time-how-i-started-working-toward-the-ccie/</guid>
      <description>Why &amp;amp; how I started studying for the CCIE a few years ago</description>
      <content:encoded><![CDATA[<p>Now that we&rsquo;re firmly into 2020 - I finally decided it was about time to get this posted. I actually wrote most of this shortly after passing the exam, but it just sat unedited and collecting dust since them.</p>
<p>In about a month, most of the exams will be changing over to the new blueprints so I&rsquo;m not sure how relevant any of this will be - but it&rsquo;s still worth throwing out there, right?</p>
<h2 id="why-ccie-why-now">Why CCIE? Why now?</h2>
<p>The two years I spent working on the CCIE dragged on for what seems like forever. Back in late 2017, I had hit a point where I felt like I wasn’t being challenged enough technically - and I missed the old days of excitement when I was studying/labbing for certifications exams. I had always wanted to go after the CCIE for a number of reasons, but it never made sense before. I had decided that maybe it was finally time to give it a shot.</p>
<p>To step back for just a moment - I originally began my career in networking by taking advantage of the Cisco Networking Academy program, which had been offered at my high school. It’s hard to believe I started that over 14 years ago - but it was likely the single most influential thing in getting me where I’m at in my career today. After two years of classes, I walked out in late 2007 with my CCNA and eager to begin working in networking.</p>
<p>Over the next few years - I worked on a number of additional certifications. I always had fun going after certifications because they gave me a path to follow and a goal to achieve. They helped to make the process of learning a bit more fun. On the Cisco side of things, I worked on the CCDA, CCNA Voice (now retired), and my CCNA Security. Finally in 2011 I finished up my CCNP and had to figure out what was next. I was super interested in the CCIE - but there was no way my company would pay for it. For the time I shelved the idea - but I didn’t give up on it as a goal. Instead, I just continued to maintain &amp; recertify my existing certs, and picked up the CCDP along the way.</p>
<p>Fast forward to late 2017. I had officially passed my 10 year anniversary on my CCNA. I was also feeling like I was hitting a wall in my technical abilities. I wanted to do something different and fun - and my first thought went back to pursuing a new certification because of how much I used to enjoy the process. I debated between a handful of certs, including CISSP, CCNP Security, CCDE, and CCIE R&amp;S. After giving it some thought and talking to a few people, I decided it was finally time to tackle the CCIE and work toward one of my long-standing goals. That six year gap between CCNP and starting on the CCIE would come back to cause me a lot of problems, but also help me in a few ways I hadn’t expected - both of which I’ll talk about later.</p>
<h2 id="time-to-study">Time to Study</h2>
<p>On October 4th, 2017 - I ordered by first set of books and began studying for the CCIE Routing &amp; Switching written exam.</p>
<p>To be absolutely honest, I had no plan going into this. Historically when I took certification exams my process was usually watching a set of training videos (usually CBT Nuggets), reading through the official cert guides a few times, picking up maybe another book or two, taking a bunch of notes, then a lot of labbing. It was never enough for me to just watch/read about the stuff - I needed to get hands on and break it to really learn. Usually by the time I had finished all of that, I would be feeling confident enough to go give the test a shot. I went into the CCIE written assuming this strategy would still probably work - and I was absolutely wrong.</p>
<p>When I began working through the books and videos I had - I found that I wasn’t getting as excited about it as I had hoped. In fact, it just felt like so much of the content was just review of things I had learned years ago during CCNP studies. That long gap since my CCNP also left me reluctant to want to memorize all of the little details again. How many things had I studied for the CCNP that I never used in my actual job? I certainly didn’t want to waste the time trying to re-learn/re-memorize those things now&hellip; But I knew I would need to if I wanted to pass the exam. This kinda killed my motivation in some ways - because I would end up having to force myself to try and retain information that I didn’t want to.</p>
<p>Studying for the written was hard for me - and probably more than it should have been. Between the mixed motivation, I was also working through a lot of stress and nonsense in both my personal and work life. I would eventually work through these issues - but sometimes it would mean having to take a few weeks off from studying.Every time I took a break, I knew I needed to - yet it was still very demoralizing.</p>
<p>I got some help toward my goal in June 2018: I had the opportunity to take a job working at Cisco as a Systems Engineer. In terms of working toward the CCIE, this was an absolute key step in getting there. I was finally working for a company that was willing to encourage and help me toward my goal. I was also surrounded by a ton of engineers and enthusiastic networking professionals who were there to support me. I got to spend time with other people who were working on certifications, and even network engineers at my customers who always wanted to ask how my studies were going. This helped a lot to get me back into being excited about the content - and brought a bit of motivation back.</p>
<p>Even though I was spending a lot of time studying for the written exam - I never really felt like I was making true progress. I believe this was likely caused by the fact that the exam blueprint is so large and diverse. I never settled on a good method to reliably track how far I had progressed on all of the content. While I felt like I had learned a lot, I also perpetually felt like I was nowhere close to where I needed to be. I also have an old habit of waiting to schedule the exam until after I already already feel confident I have a good shot at passing. With the CCIE written, I felt like that level of confidence was never going to happen.</p>
<hr>
<p>Keep going for the rest of my story:</p>
<p><a href="/story-time-how-i-started-working-toward-the-ccie/">Part 1: Getting Started</a></p>
<p><a href="/ccie-written-exam-lab-prep/">Part 2: Written Exam &amp; Lab Prep</a></p>
<p><a href="/ccie-lab-day/">Part 3: Lab Day</a></p>
<p><a href="/ccie-strategy-whats-next/">Part 4: Lab Strategy &amp; What&rsquo;s Next</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>How to: Migrating to a New Synology NAS</title>
      <link>https://0x2142.com/how-to-migrating-to-a-new-synology-nas/</link>
      <pubDate>Tue, 24 Oct 2017 08:00:20 +0000</pubDate>
      <guid>https://0x2142.com/how-to-migrating-to-a-new-synology-nas/</guid>
      <description>Just bought an upgraded Synology NAS? Here&amp;rsquo;s how to migrate to the new unit</description>
      <content:encoded><![CDATA[<p><sup><em>Note: I may receive commissions for purchases made through links in this post. This is to help support my blog and does not have any impact on my recommendations.</em></sup></p>
<hr>
<p>Back in 2011 I picked up a Synology DS411 NAS, which has proved to be one of the most beneficial parts of my home lab. When I purchased it, I filled it with 4x 3TB drives for a total of 12TB of storage (~8TB usable with RAID5). I use the NAS as an iSCSI datastore for my home ESX hosts, which has helped me to run many more test virtual machines than I could have otherwise. I&rsquo;ve also been using the NAS as a media server, file server, and a general backup location for everything I do.</p>
<p>The only problem with the DS411 is that the device is now over six years old - which means its processing power just doesn&rsquo;t keep up with what I need it for today. The device is also reaching its end of life state, so I needed to replace it anyways. For reference, the device only came with a single-core 1.6Ghz processor and 512Mb of RAM.</p>
<p>Synology just recently released their new 2018 models, so I opted to pick up the <a href="https://www.amazon.com/gp/product/B075N1Z9LT/ref=as_li_qf_asin_il_tl?ie=UTF8&amp;tag=0x2142-20&amp;creative=9325&amp;linkCode=as2&amp;creativeASIN=B075N1Z9LT&amp;linkId=c2891aca5bc28b1ebf25847b6e687135">DS918+</a>. I could have upgraded to an equivalent model(DS418) of what I already have, but I was really interested in some of the additional features offered by the plus-series model. The DS918+ supports docker containers and Synology&rsquo;s own virtualization hypervisor - along with the ability to add extra RAM modules later if I need them.As sad as I am to see my DS411 go, it was definitely time for an upgrade!</p>
<p>Anyways, I just completed the migration from my old DS411 NAS to a new DS918+. The whole process was much easier than I had anticipated, but I figured I would write up a quick summary of what I did:</p>
<ol>
<li>
<p>First thing - Update the current NAS to the latest version of Synology DSM</p>
<ul>
<li>Control Panel &gt; Update &amp; Restore &gt; Click Update if one is available</li>
</ul>
</li>
<li>
<p>Take a backup of the DSM configuration</p>
<ul>
<li>Control Panel &gt; Update &amp; Restore &gt; Configuration Backup &gt; Click <strong>Backup Configuration</strong></li>
</ul>
</li>
<li>
<p>Power off the old NAS - in my case, my DS411</p>
</li>
<li>
<p>Unplug the old NAS and remove the drives</p>
<ul>
<li>For the DS411, this requires disassembling the chassis</li>
<li><strong>MAKE SURE YOU KEEP THE DRIVES IN ORDER</strong> (I actually printed labels to put on mine)
<ul>
<li>For the DS411, the drive numbers start top to bottom (Disk 1 is top, Disk 4 is bottom)</li>
</ul>
</li>
</ul>
</li>
<li>
<p>Install the drives into the new NAS - in my case, a DS918+</p>
<ul>
<li>Again, these drives must be replaced in the same order!
<ul>
<li>The DS918+ numbers left to right (Disk 1 is the first slot on the left, Disk 4 is last slot on the right)</li>
</ul>
</li>
</ul>
</li>
<li>
<p>Once all of the drives have been inserted - Plug in the new NAS and power it on</p>
</li>
<li>
<p>Download the <a href="https://www.synology.com/en-us/support/download/DS918+#utilities">Synology Assistant</a> application</p>
<ul>
<li>This is necessary because the new NAS will not retain the previous IP configuration of the old NAS</li>
</ul>
</li>
<li>
<p>Once the new NAS is booted up - Open Synology Assistant and click <strong>Search</strong></p>
<ul>
<li>It should locate the NAS, and the status should be <strong>Migratable</strong></li>
<li>In my case, it shows both network adapters for the NAS
<img alt="image" loading="lazy" src="/content/images/2017/10/synology1.png#center"></li>
</ul>
</li>
<li>
<p>Select the NAS and click <strong>Connect</strong> - This will launch the Web UI of the NAS</p>
</li>
<li>
<p>The WebUI should show something similar to the screenshot below, with the button to <strong>Migrate</strong></p>
<ul>
<li><strong>If the WebUI does not show you a migrate option, DO NOT CONTINUE.</strong> You may need to double-check that the drives have been inserted in the correct order.
<img alt="image" loading="lazy" src="/content/images/2017/10/synology2.png#center"></li>
</ul>
</li>
<li>
<p>Click <strong>Migrate</strong>, then you will be prompted to select whether you would like to migrate all settings or perform a clean install of DSM</p>
<ul>
<li>Performing a clean install will still retain all of the data on the NAS, but all DSM settings will be lost</li>
<li>I selected the option to retain all of my settings
<img alt="image" loading="lazy" src="/content/images/2017/10/synology3.png#center"></li>
</ul>
</li>
<li>
<p>Next, Click through the prompts to install the newest version of DSM
<img alt="image" loading="lazy" src="/content/images/2017/10/synology4.png#center"></p>
</li>
<li>
<p>Wait for the system to download and install DSM</p>
</li>
</ol>
<p><img alt="image" loading="lazy" src="/content/images/2017/10/synology5.png#center"></p>
<p>Once complete - you will be brought to your DSM login screen and the migration is complete!</p>
<p>If you selected to keep the DSM settings, everything should still be there - with the exception of your IP/network configuration.</p>
<hr>
<p>After all that is complete - you&rsquo;re ready to enjoy your new Synology NAS! The migration was significantly easier than I had expected it to be. The longest part for me was just removing the drives from the DS411 - since it requires disassembling the chassis and removing multiple screws to free the drives from the drive sleds. So far the <a href="https://www.amazon.com/gp/product/B075N1Z9LT/ref=as_li_qf_asin_il_tl?ie=UTF8&amp;tag=0x2142-20&amp;creative=9325&amp;linkCode=as2&amp;creativeASIN=B075N1Z9LT&amp;linkId=c2891aca5bc28b1ebf25847b6e687135">DS918+</a> is fantastic - and I would highly recommend purchasing one to anyone who is interested.</p>
<p>Hope this quick tutorial helps out - Let me know in the comments!</p>
]]></content:encoded>
    </item>
    <item>
      <title>How to: Synology Backups with CrashPlan</title>
      <link>https://0x2142.com/synology-backups-with-crashplan/</link>
      <pubDate>Tue, 16 May 2017 08:00:28 +0000</pubDate>
      <guid>https://0x2142.com/synology-backups-with-crashplan/</guid>
      <description>In this post, we&amp;rsquo;ll walk through a tutorial on setting up Crashplan to back up a Synology NAS via NFS</description>
      <content:encoded><![CDATA[<p><sup><em>Note: I may receive commissions for purchases made through links in this post. This is to help support my blog and does not have any impact on my recommendations.</em></sup></p>
<hr>
<p>As part of my home lab, I have an older Synology DS411 that I picked up in early 2012. I&rsquo;ve been using the device since then with 4x 3TB drives as an iSCSI backend to my ESX host. Of course, I&rsquo;ve also been using the NAS for general file storage (photos, videos, documents, etc). So in late 2014 I decided that I needed to find a good backup solution for it.</p>
<p>I started using <a href="https://www.crashplan.com/en-us/">CrashPlan</a>, because they offer unlimited cloud storage for only $5.99 a month. This was amazing to me, because I had around 1.2TB of data at the time. I found a great community package <a href="https://pcloadletter.co.uk/2012/01/30/crashplan-syno-package">here</a>, which allowed me to install the backup client directly on the NAS. This ran great until late 2016 when CrashPlan updated to 4.8.0 and ended support for ARM processors (which is what the DS411 uses). For the past 6-7 months, I&rsquo;ve been unable to back up my primary storage device at home. Since my DS411 is reaching the end of it&rsquo;s life anyways, I figured I would just wait until I replaced it with one of the new Synology devices that use an Intel processor.</p>
<p>Well a few days ago, I received an email from CrashPlan threatening to delete my backups since my NAS hadn&rsquo;t connected in over 6 months. It makes sense why they do that - but I didn&rsquo;t want to lose my backups before I could replace the device. Re-seeding my backups whenever I picked up a replacement NAS would take forever (I think I have ~2TB backed up currently). So I finally forced myself to sit down and find an alternate solution.</p>
<p>Alright - so as of today I now have a dedicated CentOS VM running on my ESX host, which is connected to the Synology via NFS. This VM is running the CrashPlan client, and my backups have resumed! Here is how I got this all set up:</p>
<h2 id="synology-configuration">Synology Configuration</h2>
<ol>
<li>
<p>Enable NFS on the Synology</p>
<ul>
<li>Open up the <strong>Control Panel</strong> and go to <strong>File Services</strong></li>
<li>Scroll down to the <strong>NFS</strong> section, and check the box for <strong>Enable NFS</strong></li>
<li>Click <strong>Apply</strong></li>
</ul>
</li>
<li>
<p>Apply NFS permissions to each share</p>
<ul>
<li>Still under <strong>Control Panel</strong>, visit <strong>Shared Folders</strong></li>
<li>For each folder you need to back up via CrashPlan:
<ul>
<li>Select the folder and click <strong>Edit</strong></li>
<li>Click the tab for <strong>NFS Permissions</strong>, then click <strong>Create</strong></li>
<li>Enter the IP address for your CentOS VM (or other linux system)</li>
<li>Set privilege to <strong>Read-Only</strong> (you could probably leave this read-write, but CrashPlan only needs read permissions to back up data)</li>
<li>Click <strong>OK</strong></li>
</ul>
</li>
</ul>
</li>
</ol>
<h2 id="linux-vm-setup">Linux VM Setup</h2>
<ol>
<li>
<p>Build a CentOS VM - This can be on an ESX host like I used, or just a standalone PC</p>
<ul>
<li>Don&rsquo;t forget to use the same IP address that we entered in the Synology for NFS</li>
</ul>
</li>
<li>
<p>Install packages</p>
<ul>
<li>Make sure you get the latest package updates first: <strong>yum -y update</strong></li>
<li>Install NFS tools: <strong>yum -y installnfs-utils nfs-utils-lib</strong></li>
</ul>
</li>
<li>
<p>Test NFS</p>
<ul>
<li>If you have the packages installed and NFS set up correctly on the Synology, then you should be able to validate the configuration by using showmount. For example, here are the directories that I was using CrashPlan to backup:</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">[root@SynologyBackupVM~]# showmount -e 10.12.32.2
</span></span><span class="line"><span class="cl">Export list for 10.12.32.2:
</span></span><span class="line"><span class="cl">/volume1/backups   10.12.32.209
</span></span><span class="line"><span class="cl">/volume1/documents 10.12.32.209
</span></span><span class="line"><span class="cl">/volume1/homes     10.12.32.209
</span></span><span class="line"><span class="cl">/volume1/photos    10.12.32.209
</span></span></code></pre></div><ul>
<li>Make your local Linux directory structure, which shouldmatch what the Synology structure is. So in my case, I made new directories on my local Linux VM for /volume1/backups, /volume1/documents, etc</li>
<li>Edit <strong>/etc/fstab</strong> to auto-mount your NFS shares on boot. In my case, I added the following lines:</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl"># NFS Share location          Local Folder
</span></span><span class="line"><span class="cl">10.12.32.2:/volume1/backups   /volume1/backups   nfs defaults 0 0
</span></span><span class="line"><span class="cl">10.12.32.2:/volume1/documents /volume1/documents nfs defaults 0 0
</span></span><span class="line"><span class="cl">10.12.32.2:/volume1/homes     /volume1/homes     nfs defaults 0 0
</span></span><span class="line"><span class="cl">10.12.32.2:/volume1/photo     /volume1/photo     nfs defaults 0 0
</span></span></code></pre></div><ul>
<li>Reboot, and check to make sure each NFS share was actually mounted. If you do a <strong>ls /volume1/backups</strong>, do yousee all the files on the NAS in that folder?</li>
<li>If everything works, then grab the CrashPlan Client installer (4.8.2 was the latest at the time)
<ul>
<li><strong>wget <a href="https://download.code42.com/installs/linux/install/CrashPlan/CrashPlan_4.8.2_Linux.tgz">https://download.code42.com/installs/linux/install/CrashPlan/CrashPlan_4.8.2_Linux.tgz</a></strong></li>
</ul>
</li>
<li>Extract the files: <strong>tar -xzvf CrashPlan_4.8.2_Linux.tgz</strong></li>
<li>Run the installer: <strong>cdcrashplan-install/ &amp;&amp; ./install.sh</strong>
<ul>
<li>I just let CrashPlan use all the defaults, so I didn&rsquo;t change any options during install</li>
</ul>
</li>
<li>Set CrashPlan to start automatically: <strong>chkconfig crashplan on</strong></li>
<li>Make sure the service is already running: <strong>/etc/init.d/crashplan status</strong></li>
</ul>
</li>
</ol>
<p>At this point we should be able to run CrashPlan&rsquo;s backup client on our VM, which will pull the data across the network from the NAS. The last step is to set up our local PC for remote administration of the Linux VM. Unfortunately, this process has become more and more painful as CrashPlan keeps updating their clients. They provide their own <a href="https://support.code42.com/CrashPlan/4/Configuring/Using_CrashPlan_On_A_Headless_Computer">documentation</a> on how to do this piece, but I&rsquo;ll summarize what I did here:</p>
<h2 id="connecting-the-crashplan-ui-to-the-linux-vm">Connecting the CrashPlan UI to the Linux VM</h2>
<ol>
<li>
<p>Download and install the CrashPlan Client on your PC (In this case, I&rsquo;m using a Windows 10 laptop)</p>
</li>
<li>
<p>On your linux VM, run the following command to findyour authentication token: <strong>cat /var/lib/crashplan/.ui_info</strong></p>
</li>
<li>
<p>Back on the Windows side, place that token in the following file: <strong>C:\ProgramData\CrashPlan.ui_info</strong></p>
<ul>
<li>You will replace the existing token in the file</li>
<li>Also change the port from 4243 to 4200</li>
<li>Should look something like this when you&rsquo;re done: <code>4200,3da4v903-7q38-4r52-e67e-79aecxf760c4,127.0.0.1</code></li>
</ul>
</li>
<li>
<p>Download <a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html">PuTTY</a>, which will be used to create a SSH tunnel to our linux box</p>
</li>
<li>
<p>Open PuTTY and set the following configurations:</p>
<ul>
<li>On the left side, go to <strong>Connection</strong> &gt; <strong>SSH</strong> &gt; <strong>Tunnels</strong></li>
<li>Enter thesource port: <strong>4200</strong></li>
<li>Enter the destination: <strong>localhost:4243</strong></li>
<li>Click <strong>Add</strong></li>
<li>On the left side, go back up to <strong>Session</strong></li>
<li>Enter the IP address of your Linux VM</li>
<li>(optional) Under <strong>Saved Sessions</strong>, put in a name and click<strong>Save</strong></li>
</ul>
</li>
<li>
<p>Once that&rsquo;s done, go ahead and click<strong>Open</strong> to connect to your Linux VM</p>
</li>
<li>
<p>Log into the VM and just leave the window open.</p>
<ul>
<li><strong>Note:</strong> This SSH session will need to remain open any time you need to connect to your Linux VM and administer CrashPlan</li>
</ul>
</li>
<li>
<p>Open the CrashPlan client locally on your Windows machine</p>
</li>
<li>
<p>Log into CrashPlan using your account (Should be the same one you were previously using to back up your Synology with)</p>
</li>
<li>
<p>CrashPlan may give you a warning about migrating to a new PC, and ask if you want to adopt the backups - You want to acceptthis prompt, and let CrashPlan know that your new Linux VM is a replacement PC for your Synology.</p>
</li>
</ol>
<p>As long as everything went according to plan, the CrashPlan client should start scanning the NFS shares on your Linux VM and comparing them to what&rsquo;s already backed up. Once it completes its synchronization, it will initiate the backup processes again.</p>
<p>I was extremely happy that this worked, because I was able to start backing up my data again (which had apparently almost doubled since the last time CrashPlan was connected). In my case, moving to a Linux VM provided me with much better backup performance as well, since the Synology DS411 only has a 1.6Ghz single-core processor and 512MB of RAM.</p>
<p>I hope this helps out anyone else out there who may have been trapped in a similar scenario. If you have any questions, please feel free to leave me a comment below!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Why Have a Home Lab?</title>
      <link>https://0x2142.com/why-have-a-home-lab/</link>
      <pubDate>Tue, 21 Mar 2017 08:00:20 +0000</pubDate>
      <guid>https://0x2142.com/why-have-a-home-lab/</guid>
      <description>Ever wonder if running a lab at home is worth it? This post explores why I think it&amp;rsquo;s an important investment</description>
      <content:encoded><![CDATA[<p><sup><em>Note: I may receive commissions for purchases made through links in this post. This is to help support my blog and does not have any impact on my recommendations.</em></sup></p>
<hr>
<p>If you really want to become great at something, you practice it a ton, right? Well networking and IT work exactly the same. You&rsquo;re not going to become an expect by just reading a ton of tech books and blogs. While those certainly help, there is nothing better than simply getting your hands dirty. Having a good home lab setup is key to truly understanding how things work.</p>
<p>So how do you get started? Well the way that I built a home lab over the past 10 years is probably much different from you could today, given the amount of virtualization technologies available. Still, I believe that some physical pieces of equipment are necessary. I took classes in high school toward CCNA certification, and we had a lab of several routers and switches there. Once I got into the real world, I wanted to start working on additional certifications and just improve my skills overall. So I picked up an old Cisco 2611 router and a 2950 switch. I played with these for a bit and used them to get my CCNA Security, which at the time covered the basics of securing Cisco IOS routers and switches.</p>
<p>Another year or so down the road and I expanded by picking up a power-over-ethernet switch, and two Cisco 7900 series IP phones. Since I had discovered that the 2611 router could run Cisco&rsquo;s Call Manager Express, I decided to go for the CCNA Voice certification. Having this equipment to work on gave me experience that was much closer to real world, than if I had just studied the textbooks. I could configure things, break things, then sit there for hours until I figured out how to fix my problem. I could configure the entire system, test it all, then tear it down and completely rebuild. Being able to configure the entire CME system from memory gave me a lot of confidence toward taking the certification exam.</p>
<p>So do I still have a home lab today? Oh yeah, you bet I do! It&rsquo;s changed quite a bit from what it used to be, but the same concept still applies. I have an entire environment to play with, which allows me to test and learn new technologies outside of work. In fact, my &lsquo;home lab&rsquo; has evolved into just part of my home networks.
So here is what I&rsquo;ve got running today:</p>
<ul>
<li>Cisco ASA 5505 (Probably soon to be replaced with a <a href="https://www.amazon.com/gp/product/B01ICEO2U4/ref=as_li_qf_asin_il_tl?ie=UTF8&amp;tag=0x2142-20&amp;creative=9325&amp;linkCode=as2&amp;creativeASIN=B01ICEO2U4&amp;linkId=35fbe8300af4e5d1e26e7a860782b3ca">Juniper SRX 300</a>)</li>
<li>Two Cisco 2960G-8TC-L switches</li>
<li><a href="https://www.amazon.com/gp/product/B015PR20GY/ref=as_li_qf_asin_il_tl?ie=UTF8&amp;tag=0x2142-20&amp;creative=9325&amp;linkCode=as2&amp;creativeASIN=B015PR20GY&amp;linkId=864af1f40df3f986b49741655d21e926">Ubiquiti UniFi</a> 802.11n wireless access point</li>
<li>Synology DS411 Network Attached Storage with 4x 3TB drives (Soon to be replaced, as it is over 5 years old(Update: Got myself a <a href="https://www.amazon.com/gp/product/B075N1Z9LT/ref=as_li_qf_asin_il_tl?ie=UTF8&amp;tag=0x2142-20&amp;creative=9325&amp;linkCode=as2&amp;creativeASIN=B075N1Z9LT&amp;linkId=c2891aca5bc28b1ebf25847b6e687135">DS918+</a>!))</li>
<li>A few spare PCs running VMware ESX 6.0</li>
</ul>
<p>The ASA, switches, and AP run just about all of my home network. I even have the ASA running AnyConnect SSL VPN so I can access my storage at home from anywhere. The Synology has been one of the best additions to my network and lab. For one, it acts as a centralized storage device for my home network. I back up all of my PCs to it, and any digital media I own is also stored on it so I can stream it to devices within my home. For two, the Synology acts as an iSCSI backend to my VMware hosts. This setup allows me much more flexibility with my lab.</p>
<p>On the ESX hosts, I have a few VMs for lab use and a few that are for my home network. A GitLab server hosts all of my Git repositories for my own personal coding projects. I have a CentOS box for running the Ubiquiti management web interface. Another few CentOS VMs for running bind DNS, Observium, and Splunk. I also run a personal Minecraft server on there, so it&rsquo;s not all work here 🙂</p>
<p>I love the idea that at any time I can just go home, spin up a few VMs, and start playing with something new. When I was learning Juniper&rsquo;s SRX platform, I downloaded their free trial of the vSRX and had it running for a while. When I changed jobs, I needed to learn a new web proxy software - so I downloaded their free trial and stood up a VM. You really learn a lot by building a platform from scratch, because you gain a better understanding of what impact certain configuration options have. You also have the freedom to change whatever settings you want and see what they do. I once had an idea for a coding project, so I turned up a VM running RabbitMQ - and spent a weekend learning how it works to see if it would accomplish what I needed for the project.</p>
<p>So to sum it up - I just want to say that having a home lab has really contributed a lot to my success. It offers way more flexibility than trying to test something at work, unless they also offer you a complete lab environment. Your lab doesn&rsquo;t have to start off perfect, nor does it need to have expensive equipment - it just needs to help facilitate your ability to learn and gain experience.
Have a lab at home? Tell me about it in the comments below! I would love to hear what other people have done.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
