<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>router &amp;mdash; For The Love Of Cloud!</title>
    <link>https://blog.chelo.dev/tag:router</link>
    <description></description>
    <pubDate>Fri, 01 May 2026 07:42:21 -0600</pubDate>
    <item>
      <title>Raspberry Pi as Home Router | Part 3 | DHCP and DNS with PiHole</title>
      <link>https://blog.chelo.dev/raspberry-pi-as-home-router-part-3-dhcp-and-dns-with-pihole</link>
      <description>&lt;![CDATA[#raspberry #rpi #router #network&#xA;&#xA;To complete our router, we need a DHCP server and DNS server. The DHCP server will assign IPs to our internal network, while the DNS server will resolve our queries to their corresponding IPs.!--more--&#xA;&#xA;Since I like to have a private and ad-free experience when I surf, I&#39;m running Pi-hole as a container. So the first thing I need to do is setup Docker using the official instructions:&#xA;&#xA;Docker installation&#xA;&#xA;Update the apt package index and install packages to allow apt to use a repository over HTTPS:&#xA;sudo apt update&#xA;sudo apt install ca-certificates curl gnupg lsb-release&#xA;&#xA;Add Docker’s official GPG key:&#xA;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&#xA;&#xA;Use the following command to set up the stable repository.&#xA;echo &#34;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsbrelease -cs) stable&#34; | sudo tee /etc/apt/sources.list.d/docker.list   /dev/null&#xA;&#xA;Update the apt package index, and install the latest version of Docker Engine and containerd, or go to the next step to install a specific version:&#xA;sudo apt update&#xA;sudo apt install docker-ce docker-ce-cli containerd.io&#xA;&#xA;Add user to the docker group.&#xA;sudo usermod -aG docker $USER&#xA;&#xA;Logout and log in again to reload the permissions, so that we can run docker commands as the logged in user, and not as sudo.&#xA;&#xA;Now, we&#39;ll install Docker Compose by running this command to download the current stable release of Docker Compose:&#xA;&#xA; sudo curl -L &#34;https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)&#34; -o /usr/local/bin/docker-compose&#xA;&#xA;And apply executable permissions to the binary:&#xA;&#xA;sudo chmod +x /usr/local/bin/docker-compose&#xA;&#xA;Pi-hole container&#xA;&#xA;We want our Pi-hole container to serve both DHCP and DNS. The following command will create a container named pihole using the latest Pi-hole image. It will use our internal interface lan0 (with its static IP address, 192.168.1.254) and will enable DHCP, using an IP range between 192.168.1.1 and 192.168.1.100:&#xA;&#xA;docker run -d \&#xA;    --net=host \&#xA;    -e TZ=&#39;America/Chicago&#39; \&#xA;    -e WEBPASSWORD: &#39;{mysupersecretpassword}&#39; \&#xA;    -e ADMINEMAIL=&#39;{email@domain.com}&#39; \&#xA;    -e ServerIP=&#39;192.168.1.254&#39; \&#xA;    -e INTERFACE=&#39;lan0&#39; \&#xA;    -e DHCPACTIVE=&#39;true&#39; \&#xA;    -e DHCPSTART=&#39;192.168.1.1&#39; \&#xA;    -e DHCPEND=&#39;192.168.1.100&#39; \&#xA;    -e DHCPROUTER=&#39;192.168.1.254&#39; \&#xA;    -e PIHOLEDOMAIN=&#39;{homedomain.local}&#39; \&#xA;    -v ./pihole/etc-pihole/:/etc/pihole/ \&#xA;    -v ./pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/ \&#xA;    --cap-add=NETADMIN \&#xA;    --restart=unless-stopped \&#xA;    --name pihole \&#xA;    pihole/pihole:latest&#xA;&#xA;After setting up the container, since I&#39;m using Ubuntu, I need to disable the caching DNS stub resolver that it Ubuntu has, since it will prevent Pi-hole from listening on port 53 (the port used by DNS requests). The stub resolver can be disabled with:&#xA;&#xA;sudo sed -r -i.orig &#39;s/#?DNSStubListener=yes/DNSStubListener=no/g&#39; /etc/systemd/resolved.conf&#xA;&#xA;After this, I need to change the nameserver settings, which currently point to the stub resolver (which we have just disabled). I need to point the /etc/resolv.conf symlink to /run/systemd/resolve/resolv.conf by running the following command:&#xA;&#xA;sudo sh -c &#39;rm /etc/resolv.conf &amp;&amp; ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf&#39;&#xA;&#xA;Finally, I need to restart systemd-resolved so that our changes are applied:&#xA;&#xA;sudo systemctl restart systemd-resolved&#xA;&#xA;Having done this, our Pi-hole container should start working as both a DHCP and DNS server. All we have to do now is disable our previous DHCP server, in my case my ISP modem.&#xA;&#xA;With this, we have a fully working router with the added benefit of having a privacy and ad-blocking solution incorporated.&#xA;&#xA;Stay tuned!&#xA;&#xA;Other posts in this series:&#xA;Introduction&#xA;Part 1 - Network description&#xA;Part 2 - IPv4 forwarding]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://blog.chelo.dev/tag:raspberry" class="hashtag"><span>#</span><span class="p-category">raspberry</span></a> <a href="https://blog.chelo.dev/tag:rpi" class="hashtag"><span>#</span><span class="p-category">rpi</span></a> <a href="https://blog.chelo.dev/tag:router" class="hashtag"><span>#</span><span class="p-category">router</span></a> <a href="https://blog.chelo.dev/tag:network" class="hashtag"><span>#</span><span class="p-category">network</span></a></p>

<p>To complete our router, we need a DHCP server and DNS server. The DHCP server will assign IPs to our internal network, while the DNS server will resolve our queries to their corresponding IPs.</p>

<p>Since I like to have a private and ad-free experience when I surf, I&#39;m running <a href="https://pi-hole.net/">Pi-hole</a> as a container. So the first thing I need to do is setup Docker using the official <a href="https://docs.docker.com/engine/install/ubuntu/">instructions</a>:</p>

<h2 id="docker-installation">Docker installation</h2>

<p>Update the <code>apt</code> package index and install packages to allow apt to use a repository over HTTPS:</p>

<pre><code class="language-bash">sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
</code></pre>

<p>Add Docker’s official GPG key:</p>

<pre><code class="language-bash">curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
</code></pre>

<p>Use the following command to set up the stable repository.</p>

<pre><code class="language-bash">echo &#34;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&#34; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null
</code></pre>

<p>Update the apt package index, and install the latest version of Docker Engine and containerd, or go to the next step to install a specific version:</p>

<pre><code class="language-bash">sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
</code></pre>

<p>Add user to the docker group.</p>

<pre><code class="language-bash">sudo usermod -aG docker $USER
</code></pre>

<p>Logout and log in again to reload the permissions, so that we can run docker commands as the logged in user, and not as sudo.</p>

<p>Now, we&#39;ll install Docker Compose by running this command to download the current stable release of Docker Compose:</p>

<pre><code class="language-bash"> sudo curl -L &#34;https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)&#34; -o /usr/local/bin/docker-compose
</code></pre>

<p>And apply executable permissions to the binary:</p>

<pre><code class="language-bash">sudo chmod +x /usr/local/bin/docker-compose
</code></pre>

<h2 id="pi-hole-container">Pi-hole container</h2>

<p>We want our Pi-hole container to serve both DHCP and DNS. The following command will create a container named <code>pihole</code> using the latest Pi-hole image. It will use our internal interface <code>lan0</code> (with its static IP address, <code>192.168.1.254</code>) and will enable DHCP, using an IP range between <code>192.168.1.1</code> and <code>192.168.1.100</code>:</p>

<pre><code class="language-bash">docker run -d \
    --net=host \
    -e TZ=&#39;America/Chicago&#39; \
    -e WEBPASSWORD: &#39;{mysupersecretpassword}&#39; \
    -e ADMIN_EMAIL=&#39;{email@domain.com}&#39; \
    -e ServerIP=&#39;192.168.1.254&#39; \
    -e INTERFACE=&#39;lan0&#39; \
    -e DHCP_ACTIVE=&#39;true&#39; \
    -e DHCP_START=&#39;192.168.1.1&#39; \
    -e DHCP_END=&#39;192.168.1.100&#39; \
    -e DHCP_ROUTER=&#39;192.168.1.254&#39; \
    -e PIHOLE_DOMAIN=&#39;{homedomain.local}&#39; \
    -v ./pihole/etc-pihole/:/etc/pihole/ \
    -v ./pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/ \
    --cap-add=NET_ADMIN \
    --restart=unless-stopped \
    --name pihole \
    pihole/pihole:latest
</code></pre>

<p>After setting up the container, since I&#39;m using Ubuntu, I need to disable the caching DNS stub resolver that it Ubuntu has, since it will prevent Pi-hole from listening on port 53 (the port used by DNS requests). The stub resolver can be disabled with:</p>

<pre><code class="language-bash">sudo sed -r -i.orig &#39;s/#?DNSStubListener=yes/DNSStubListener=no/g&#39; /etc/systemd/resolved.conf
</code></pre>

<p>After this, I need to change the nameserver settings, which currently point to the stub resolver (which we have just disabled). I need to point the <code>/etc/resolv.conf</code> symlink to <code>/run/systemd/resolve/resolv.conf</code> by running the following command:</p>

<pre><code class="language-bash">sudo sh -c &#39;rm /etc/resolv.conf &amp;&amp; ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf&#39;
</code></pre>

<p>Finally, I need to restart <code>systemd-resolved</code> so that our changes are applied:</p>

<pre><code class="language-bash">sudo systemctl restart systemd-resolved
</code></pre>

<p>Having done this, our Pi-hole container should start working as both a DHCP and DNS server. All we have to do now is disable our previous DHCP server, in my case my ISP modem.</p>

<p>With this, we have a fully working router with the added benefit of having a privacy and ad-blocking solution incorporated.</p>

<p>Stay tuned!</p>

<h3 id="other-posts-in-this-series">Other posts in this series:</h3>
<ul><li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-introduction">Introduction</a></li>
<li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-part-1-network-description">Part 1 – Network description</a></li>
<li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-part-2-ipv4-forwarding">Part 2 – IPv4 forwarding</a></li></ul>
]]></content:encoded>
      <guid>https://blog.chelo.dev/raspberry-pi-as-home-router-part-3-dhcp-and-dns-with-pihole</guid>
      <pubDate>Thu, 03 Mar 2022 01:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Raspberry Pi as Home Router | Part 2 | IPv4 forwarding</title>
      <link>https://blog.chelo.dev/raspberry-pi-as-home-router-part-2-ipv4-forwarding</link>
      <description>&lt;![CDATA[#raspberry #rpi #router #network&#xA;&#xA;One of the fundamental functions of a router is to forward traffic between our internal network and the internet.!--more--&#xA;&#xA;In order to use the Raspberry Pi, or any Linux machine, as a router, the first thing we need to do is to enable packet forwarding.&#xA;&#xA;Since I&#39;m using Ubuntu 20.04 on my PiRouter, I can enable IPv4 forwarding instantly by executing, as sudo, the following command:&#xA;&#xA;sysctl -w net.ipv4.ipforward=1&#xA;| Remember to run these commands as root, or with sudo.&#xA;&#xA;To make the change permanent, I need to modify /etc/sysctl.conf, adding the following line at the end of the file:&#xA;&#xA;net.ipv4.ipforward=1&#xA;&#xA;This will ensure that IPv4 forwarding will be enabled on boot.&#xA;&#xA;Now, I need to setup iptables rules in my firewall so that the PiRouter accepts and forwards the traffic it receives from my internal network/interface (lan0) to my external interface/internet (wan0).&#xA;&#xA;This can be accomplished by executing the following commands:&#xA;&#xA;iptables -A FORWARD -i lan0 -j ACCEPT&#xA;iptables -A POSTROUTING -o wan0 -j MASQUERADE&#xA;&#xA;These rules will only be active until we reboot, so it&#39;s important to save them. I use iptables-persistent, which can be installed using the following command:&#xA;&#xA;apt install iptables-persistent&#xA;&#xA;After the installation, the setup will ask if you wish to save the current rules. By clicking Yes, we save our forwarding rules to /etc/iptables/rules.v4, and they&#39;ll be loaded every time our router boots.&#xA;&#xA;Finally, we can ensure that the IPTables Persistent service is enabled and running by executing the following commands:&#xA;&#xA;systemctl enable netfilter-persistent.service&#xA;systemctl start netfilter-persistent.service&#xA;&#xA;Having done all of these steps, we now have a Raspberry Pi that will forward traffic between interfaces, however it&#39;s still not ready to be used as a router, since we&#39;re still missing a DHCP server and a DNS server. I&#39;ll be covering these key pieces in the next post.&#xA;&#xA;Other posts in this series:&#xA;Introduction&#xA;Part 1 - Network description&#xA;Part 3 - DHCP and DNS with PiHole]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://blog.chelo.dev/tag:raspberry" class="hashtag"><span>#</span><span class="p-category">raspberry</span></a> <a href="https://blog.chelo.dev/tag:rpi" class="hashtag"><span>#</span><span class="p-category">rpi</span></a> <a href="https://blog.chelo.dev/tag:router" class="hashtag"><span>#</span><span class="p-category">router</span></a> <a href="https://blog.chelo.dev/tag:network" class="hashtag"><span>#</span><span class="p-category">network</span></a></p>

<p>One of the fundamental functions of a router is to forward traffic between our internal network and the internet.</p>

<p>In order to use the Raspberry Pi, or any Linux machine, as a router, the first thing we need to do is to enable packet forwarding.</p>

<p>Since I&#39;m using Ubuntu 20.04 on my PiRouter, I can enable IPv4 forwarding instantly by executing, as sudo, the following command:</p>

<pre><code class="language-shell">sysctl -w net.ipv4.ip_forward=1
</code></pre>

<p>| Remember to run these commands as root, or with sudo.</p>

<p>To make the change permanent, I need to modify <code>/etc/sysctl.conf</code>, adding the following line at the end of the file:</p>

<pre><code class="language-shell">net.ipv4.ip_forward=1
</code></pre>

<p>This will ensure that IPv4 forwarding will be enabled on boot.</p>

<p>Now, I need to setup <code>iptables</code> rules in my firewall so that the PiRouter accepts and forwards the traffic it receives from my internal network/interface (<code>lan0</code>) to my external interface/internet (<code>wan0</code>).</p>

<p>This can be accomplished by executing the following commands:</p>

<pre><code class="language-shell">iptables -A FORWARD -i lan0 -j ACCEPT
</code></pre>

<pre><code class="language-shell">iptables -A POSTROUTING -o wan0 -j MASQUERADE
</code></pre>

<p>These rules will only be active until we reboot, so it&#39;s important to save them. I use <code>iptables-persistent</code>, which can be installed using the following command:</p>

<pre><code class="language-shell">apt install iptables-persistent
</code></pre>

<p>After the installation, the setup will ask if you wish to save the current rules. By clicking <em>Yes</em>, we save our forwarding rules to <code>/etc/iptables/rules.v4</code>, and they&#39;ll be loaded every time our router boots.</p>

<p>Finally, we can ensure that the IPTables Persistent service is enabled and running by executing the following commands:</p>

<pre><code class="language-shell">systemctl enable netfilter-persistent.service
</code></pre>

<pre><code class="language-shell">systemctl start netfilter-persistent.service
</code></pre>

<p>Having done all of these steps, we now have a Raspberry Pi that will forward traffic between interfaces, however it&#39;s still not ready to be used as a router, since we&#39;re still missing a DHCP server and a DNS server. I&#39;ll be covering these key pieces in the next post.</p>

<h3 id="other-posts-in-this-series">Other posts in this series:</h3>
<ul><li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-introduction">Introduction</a></li>
<li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-part-1-network-description">Part 1 – Network description</a></li>
<li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-part-3-dhcp-and-dns-with-pihole">Part 3 – DHCP and DNS with PiHole</a></li></ul>
]]></content:encoded>
      <guid>https://blog.chelo.dev/raspberry-pi-as-home-router-part-2-ipv4-forwarding</guid>
      <pubDate>Tue, 01 Mar 2022 00:30:00 +0000</pubDate>
    </item>
    <item>
      <title>Raspberry Pi as Home Router | Part 1 | Network description</title>
      <link>https://blog.chelo.dev/raspberry-pi-as-home-router-part-1-network-description</link>
      <description>&lt;![CDATA[#raspberry #rpi #router #network&#xA;&#xA;In this first part, I&#39;ll be going into a general description of my home network, as well as the services I&#39;m running in my PiRouter. !--more--&#xA;&#xA;Network description&#xA;&#xA;NetworkDiagram&#xA;Figure 1 - General network diagram&#xA;&#xA;As you can see in the previous image, I&#39;ve got my ISP modem, whose function is to connect with my ISP. From there, the PiRouter is setup in the modem&#39;s DMZ, so that it receives all traffic.&#xA;&#xA;The PiRouter has 2 ethernet interfaces:&#xA;The Raspberry Pi integrated Gigabit Ethernet, which connects to the internal network (lan0).&#xA;A USB 3.0 Gigabit Ethernet adapter, which connects directly to the ISP modem (wan0_).&#xA;&#xA;Internally, I&#39;ve got a server running Unraid on an old Supermicro server, which sports an Intel Xeon E5620 with 24GB of RAM. This server runs a couple of VMs and several containers.&#xA;&#xA;I also have a Raspberry Pi 3B running Raspberry Pi OS with some containers used in home automation.&#xA;&#xA;For WiFi, I use 2 TP-Link Deco M4 antennas. I need the power since I  live in a two-story flat with a total surface of 175m² (1,880 sqft), with thick reinforced concrete walls.&#xA;&#xA;My home automation runs on Home Assistant, using both WiFi and Zigbee. I&#39;ll probably go into this topic on another series of posts.&#xA;&#xA;Other posts in this series:&#xA;Introduction&#xA;Part 2 - IPv4 forwarding&#xA;Part 3 - DHCP and DNS with PiHole]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://blog.chelo.dev/tag:raspberry" class="hashtag"><span>#</span><span class="p-category">raspberry</span></a> <a href="https://blog.chelo.dev/tag:rpi" class="hashtag"><span>#</span><span class="p-category">rpi</span></a> <a href="https://blog.chelo.dev/tag:router" class="hashtag"><span>#</span><span class="p-category">router</span></a> <a href="https://blog.chelo.dev/tag:network" class="hashtag"><span>#</span><span class="p-category">network</span></a></p>

<p>In this first part, I&#39;ll be going into a general description of my home network, as well as the services I&#39;m running in my PiRouter. </p>

<h2 id="network-description">Network description</h2>

<p><img src="/assets/img/network_diagram.png" alt="NetworkDiagram">
<em>Figure 1 – General network diagram</em></p>

<p>As you can see in the previous image, I&#39;ve got my ISP modem, whose function is to connect with my ISP. From there, the PiRouter is setup in the modem&#39;s DMZ, so that it receives all traffic.</p>

<p>The PiRouter has 2 ethernet interfaces:
1. The Raspberry Pi integrated Gigabit Ethernet, which connects to the internal network (<em>lan0</em>).
2. A <a href="https://www.amazon.com/gp/product/B00MYTSN18">USB 3.0 Gigabit Ethernet adapter</a>, which connects directly to the ISP modem (<em>wan0</em>).</p>

<p>Internally, I&#39;ve got a server running <a href="https://unraid.net/">Unraid</a> on an old Supermicro server, which sports an Intel Xeon E5620 with 24GB of RAM. This server runs a couple of VMs and several containers.</p>

<p>I also have a Raspberry Pi 3B running Raspberry Pi OS with some containers used in home automation.</p>

<p>For WiFi, I use 2 TP-Link Deco M4 antennas. I need the power since I  live in a two-story flat with a total surface of 175m² (1,880 sqft), with thick reinforced concrete walls.</p>

<p>My home automation runs on Home Assistant, using both WiFi and Zigbee. I&#39;ll probably go into this topic on another series of posts.</p>

<h3 id="other-posts-in-this-series">Other posts in this series:</h3>
<ul><li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-introduction">Introduction</a></li>
<li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-part-2-ipv4-forwarding">Part 2 – IPv4 forwarding</a></li>
<li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-part-3-dhcp-and-dns-with-pihole">Part 3 – DHCP and DNS with PiHole</a></li></ul>
]]></content:encoded>
      <guid>https://blog.chelo.dev/raspberry-pi-as-home-router-part-1-network-description</guid>
      <pubDate>Mon, 21 Feb 2022 04:30:00 +0000</pubDate>
    </item>
    <item>
      <title>Raspberry Pi as Home Router | Introduction</title>
      <link>https://blog.chelo.dev/raspberry-pi-as-home-router-introduction</link>
      <description>&lt;![CDATA[#raspberry #rpi #router #network&#xA;&#xA;A while back, I started using a Raspberry Pi 4B with 2GB of RAM as my home router.&#xA;&#xA;The reason for doing this is because my ISP modem is pretty basic and limited. I also didn&#39;t want to have to reconfigure my network each time I changed modem or ISP. !--more--&#xA;&#xA;Some benefits I got from using the RPI4 as a router were that I could setup an ad blocker, Pi-hole in my case, as well as adding a small UPS, for power outages, and LTE modem, for ISP outages (I haven&#39;t configured this last one).&#xA;&#xA;After using my PiRouter (that&#39;s what I like calling it) for a while, I decided to clean everything up and standarize it, so that I could replicate it if/when I had to replace my Raspberry or the microSD card, as painlessly as possible.&#xA;&#xA;In these series of articles I&#39;ll be detailing how I configured it using Git, Docker and Ansible, having learned the basics of Ansible from the great guides published by Jeff Geerling.&#xA;&#xA;Other posts in this series:&#xA;Part 1 - Network description&#xA;Part 2 - IPv4 forwarding&#xA;Part 3 - DHCP and DNS with PiHole]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://blog.chelo.dev/tag:raspberry" class="hashtag"><span>#</span><span class="p-category">raspberry</span></a> <a href="https://blog.chelo.dev/tag:rpi" class="hashtag"><span>#</span><span class="p-category">rpi</span></a> <a href="https://blog.chelo.dev/tag:router" class="hashtag"><span>#</span><span class="p-category">router</span></a> <a href="https://blog.chelo.dev/tag:network" class="hashtag"><span>#</span><span class="p-category">network</span></a></p>

<p>A while back, I started using a Raspberry Pi 4B with 2GB of RAM as my home router.</p>

<p>The reason for doing this is because my ISP modem is pretty basic and limited. I also didn&#39;t want to have to reconfigure my network each time I changed modem or ISP. </p>

<p>Some benefits I got from using the RPI4 as a router were that I could setup an ad blocker, <a href="https://pi-hole.net/">Pi-hole</a> in my case, as well as adding a small <a href="https://aliexpress.com/item/32955634965.html">UPS</a>, for power outages, and <a href="https://aliexpress.com/item/32961627057.html">LTE modem</a>, for ISP outages (I haven&#39;t configured this last one).</p>

<p>After using my PiRouter (that&#39;s what I like calling it) for a while, I decided to clean everything up and standarize it, so that I could replicate it if/when I had to replace my Raspberry or the microSD card, as painlessly as possible.</p>

<p>In these series of articles I&#39;ll be detailing how I configured it using Git, Docker and Ansible, having learned the basics of Ansible from the <a href="https://www.youtube.com/watch?v=goclfp6a2IQ&amp;list=PL2_OBreMn7FqZkvMYt6ATmgC0KAGGJNAN">great guides</a> published by <a href="https://www.jeffgeerling.com/">Jeff Geerling</a>.</p>

<h3 id="other-posts-in-this-series">Other posts in this series:</h3>
<ul><li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-part-1-network-description">Part 1 – Network description</a></li>
<li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-part-2-ipv4-forwarding">Part 2 – IPv4 forwarding</a></li>
<li><a href="https://blog.chelo.dev/raspberry-pi-as-home-router-part-3-dhcp-and-dns-with-pihole">Part 3 – DHCP and DNS with PiHole</a></li></ul>
]]></content:encoded>
      <guid>https://blog.chelo.dev/raspberry-pi-as-home-router-introduction</guid>
      <pubDate>Sat, 19 Feb 2022 00:30:00 +0000</pubDate>
    </item>
  </channel>
</rss>