<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mikrotik on Welcome to my photography blog</title><link>https://pvdplaat.nl/en/tags/mikrotik/</link><description>Recent content in Mikrotik on Welcome to my photography blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 17 May 2026 13:00:43 +0200</lastBuildDate><atom:link href="https://pvdplaat.nl/en/tags/mikrotik/index.xml" rel="self" type="application/rss+xml"/><item><title>Privacy by Routing DNS Traffic Through a VPN Tunnel</title><link>https://pvdplaat.nl/en/blog/privacy-dns-over-vpn/</link><pubDate>Sun, 17 May 2026 13:00:43 +0200</pubDate><guid>https://pvdplaat.nl/en/blog/privacy-dns-over-vpn/</guid><description>&lt;img src="https://pvdplaat.nl/images/2026/routerboard.webp" alt="Featured image of post Privacy by Routing DNS Traffic Through a VPN Tunnel" /&gt;&lt;h1 id="privacy-by-routing-dns-traffic-through-a-vpn-tunnel-on-a-mikrotik-router"&gt;Privacy by routing DNS traffic through a VPN Tunnel on a Mikrotik router
&lt;/h1&gt;&lt;h3 id="why-dns-privacy-still-matters-in-2026"&gt;Why DNS Privacy Still Matters in 2026
&lt;/h3&gt;&lt;p&gt;Most people think that when they browse the internet using HTTPS, their online activities are completely private. Unfortunately, that is not entirely true.&lt;/p&gt;
&lt;p&gt;HTTPS encrypts the content of your communication with a website. Your internet provider cannot see the pages you read, the forms you submit, or the passwords you enter. However, before your browser can connect to a website, it first needs to know the IP address of that website.&lt;/p&gt;
&lt;p&gt;This is where DNS comes into play.&lt;/p&gt;
&lt;p&gt;DNS (Domain Name System) acts as the internet&amp;rsquo;s phonebook. When you visit a website such as &lt;code&gt;www.example.com&lt;/code&gt;, your device performs a DNS query to find the corresponding IP address.&lt;/p&gt;
&lt;p&gt;Traditionally, these DNS queries are sent in plain text over the internet. Anyone between you and the DNS server can potentially see which domains you are looking up.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="the-privacy-problem"&gt;The Privacy Problem
&lt;/h3&gt;&lt;p&gt;Even when all your web traffic is protected by HTTPS, DNS requests can reveal a surprising amount of information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Websites you visit&lt;/li&gt;
&lt;li&gt;Applications you use&lt;/li&gt;
&lt;li&gt;Smart home devices in your network&lt;/li&gt;
&lt;li&gt;Streaming services you access&lt;/li&gt;
&lt;li&gt;Business services and cloud platforms you connect to&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In many cases, DNS traffic creates a detailed profile of your online behavior.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="isnt-dns-over-https-the-solution"&gt;Isn&amp;rsquo;t DNS over HTTPS the Solution?
&lt;/h3&gt;&lt;p&gt;DNS over HTTPS (DoH) is certainly an improvement.&lt;/p&gt;
&lt;p&gt;Instead of sending DNS requests in plain text on port 53, DNS queries are encapsulated within HTTPS traffic on port 443.&lt;/p&gt;
&lt;p&gt;This provides protection against:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Local network snooping&lt;/li&gt;
&lt;li&gt;Public Wi-Fi monitoring&lt;/li&gt;
&lt;li&gt;Basic ISP DNS inspection&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;However, DoH does not make you invisible.&lt;/p&gt;
&lt;p&gt;Your ISP can still see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The destination IP address you connect to&lt;/li&gt;
&lt;li&gt;The DNS provider you use&lt;/li&gt;
&lt;li&gt;Traffic patterns&lt;/li&gt;
&lt;li&gt;Connection metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Depending on the implementation, technologies such as SNI (Server Name Indication) or traffic analysis may still reveal information about the services being accessed.&lt;/p&gt;
&lt;p&gt;In short:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DNS over HTTPS encrypts the DNS query itself, but not necessarily all metadata surrounding the connection.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="a-different-approach-route-dns-through-a-vpn"&gt;A Different Approach: Route DNS Through a VPN
&lt;/h2&gt;&lt;p&gt;A stronger privacy model is to route all DNS traffic through a VPN tunnel.&lt;/p&gt;
&lt;p&gt;In this setup:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Internal DNS servers perform DNS lookups.&lt;/li&gt;
&lt;li&gt;DNS traffic is marked by the router.&lt;/li&gt;
&lt;li&gt;The marked traffic is sent through a WireGuard VPN tunnel.&lt;/li&gt;
&lt;li&gt;The ISP only sees encrypted WireGuard traffic.&lt;/li&gt;
&lt;li&gt;External DNS providers only see the VPN endpoint address.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This significantly reduces the visibility of DNS activity to your internet provider.&lt;/p&gt;




 
 
 &lt;img src="https://pvdplaat.nl/images/2026/routerboard_hu_d9dea9825a06fb9b.png" alt="Mikrotik Routerboard" width="300" height="146"&gt;


&lt;h2 id="my-environment"&gt;My Environment
&lt;/h2&gt;&lt;p&gt;I use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MikroTik Router with RouterOS 7.20.6&lt;/li&gt;
&lt;li&gt;WireGuard VPN&lt;/li&gt;
&lt;li&gt;ProtonVPN (or other VPN provider)&lt;/li&gt;
&lt;li&gt;Multiple Pi-hole DNS servers, running on my Proxmox homelab server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal is simple:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Only DNS traffic should travel through the VPN tunnel.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;All normal internet traffic continues to use the regular WAN connection.&lt;/p&gt;
&lt;p&gt;This approach provides additional privacy without forcing all users and applications through the VPN.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="step-1-create-an-address-list"&gt;Step 1: Create an Address List
&lt;/h2&gt;&lt;p&gt;First, create an address list containing all internal DNS servers.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/ip/firewall/address-list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;add address=192.168.1.10 comment=Pi-Hole1 list=&amp;#34;DNS Servers&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;add address=192.168.1.11 comment=Pi-Hole2 list=&amp;#34;DNS Servers&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="what-does-this-do"&gt;What does this do?
&lt;/h3&gt;&lt;p&gt;This creates a group called &lt;strong&gt;DNS Servers&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Instead of creating firewall rules for every DNS server individually, we can simply reference this address list.&lt;/p&gt;
&lt;p&gt;Advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Easier management&lt;/li&gt;
&lt;li&gt;Better scalability&lt;/li&gt;
&lt;li&gt;Cleaner configuration&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="step-2-mark-dns-traffic"&gt;Step 2: Mark DNS Traffic
&lt;/h2&gt;&lt;p&gt;The next step is to identify DNS traffic generated by these servers and mark it for special routing.&lt;/p&gt;
&lt;h3 id="udp-port-53"&gt;UDP Port 53
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;add action=mark-routing chain=prerouting \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; comment=&amp;#34;DNS traffic (UDP) via WG-ProtonVPN&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dst-port=53 \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; new-routing-mark=to-ProtonVPN \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; passthrough=no \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; protocol=udp \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; src-address-list=&amp;#34;DNS Servers&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="explanation"&gt;Explanation
&lt;/h3&gt;&lt;p&gt;This rule says:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;If traffic originates from one of the DNS servers and uses UDP port 53, mark it with routing mark &lt;code&gt;to-ProtonVPN&lt;/code&gt;.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;UDP 53 is the traditional DNS protocol.&lt;/p&gt;
&lt;p&gt;The parameter:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;passthrough=no
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;means processing stops after the packet is marked.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="udp-port-853"&gt;UDP Port 853
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;add action=mark-routing chain=prerouting \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; comment=&amp;#34;DNS traffic (UDP) via WG-ProtonVPN&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dst-port=853 \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; new-routing-mark=to-ProtonVPN \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; passthrough=no \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; protocol=udp \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; src-address-list=&amp;#34;DNS Servers&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="explanation-1"&gt;Explanation
&lt;/h3&gt;&lt;p&gt;Port 853 is commonly used by encrypted DNS technologies.
This ensures those DNS requests are also routed through the VPN.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="tcp-port-53"&gt;TCP Port 53
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;add action=mark-routing chain=prerouting \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; comment=&amp;#34;DNS traffic (TCP) via WG-ProtonVPN&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dst-port=53 \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; new-routing-mark=to-ProtonVPN \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; passthrough=no \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; protocol=tcp \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; src-address-list=&amp;#34;DNS Servers&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="explanation-2"&gt;Explanation
&lt;/h3&gt;&lt;p&gt;Although most DNS traffic uses UDP, larger responses may fall back to TCP.&lt;/p&gt;
&lt;p&gt;Examples include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Large DNS responses&lt;/li&gt;
&lt;li&gt;DNS zone transfers&lt;/li&gt;
&lt;li&gt;Certain DNSSEC operations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This rule ensures TCP-based DNS traffic is also protected.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="tcp-port-853"&gt;TCP Port 853
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;add action=mark-routing chain=prerouting \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; comment=&amp;#34;DNSSEC traffic (TCP) via WG-ProtonVPN&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dst-port=853 \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; new-routing-mark=to-ProtonVPN \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; passthrough=no \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; protocol=tcp \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; src-address-list=&amp;#34;DNS Servers&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="explanation-3"&gt;Explanation
&lt;/h3&gt;&lt;p&gt;This captures encrypted &amp;lsquo;DNS of TLS&amp;rsquo; (DoT) traffic using TCP on port 853.&lt;/p&gt;
&lt;p&gt;Again, the traffic receives the routing mark and is directed toward the VPN.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="tcp-port-443"&gt;TCP Port 443
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;add action=mark-routing chain=prerouting \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; comment=&amp;#34;DNS-HTTPS traffic (TCP) via WG-ProtonVPN&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dst-port=443 \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; new-routing-mark=to-ProtonVPN \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; passthrough=no \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; protocol=tcp \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; src-address-list=&amp;#34;DNS Servers&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="explanation-4"&gt;Explanation
&lt;/h3&gt;&lt;p&gt;This is the rule that captures DNS over HTTPS (DoH).&lt;/p&gt;
&lt;p&gt;Most DoH providers use HTTPS over TCP port 443.&lt;/p&gt;
&lt;p&gt;Because the traffic originates from the DNS servers in our address list, we can reasonably assume this HTTPS traffic is DNS-related and should be sent through the VPN.&lt;/p&gt;
&lt;p&gt;This prevents DNS-over-HTTPS requests from bypassing the privacy tunnel.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="step-3-create-a-dedicated-route"&gt;Step 3: Create a Dedicated Route
&lt;/h2&gt;&lt;p&gt;Now we create a routing table that uses the WireGuard tunnel.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/ip route
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;add disabled=no \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; distance=1 \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dst-address=0.0.0.0/0 \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gateway=wg2-ProtonVPN \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; routing-table=to-ProtonVPN \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; scope=30 \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; target-scope=10
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="explanation-5"&gt;Explanation
&lt;/h3&gt;&lt;p&gt;This route says:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;When traffic arrives with routing mark &lt;code&gt;to-ProtonVPN&lt;/code&gt;, send it through the WireGuard interface &lt;code&gt;wg2-ProtonVPN&lt;/code&gt;.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Only marked traffic uses this route.&lt;/p&gt;
&lt;p&gt;All other traffic follows the normal routing table.&lt;/p&gt;
&lt;p&gt;This is what makes selective VPN routing possible.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="step-4-routing-rule"&gt;Step 4: Routing Rule
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/routing rule
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;add action=lookup \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; comment=&amp;#34;Route DNS traffic over ProtonVPN&amp;#34; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; disabled=no \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; routing-mark=to-ProtonVPN \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; table=to-ProtonVPN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="explanation-6"&gt;Explanation
&lt;/h3&gt;&lt;p&gt;This rule tells RouterOS to perform a route lookup in the &lt;code&gt;to-ProtonVPN&lt;/code&gt; routing table whenever packets carry the routing mark &lt;code&gt;to-ProtonVPN&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On modern RouterOS versions, routing marks and routing tables often work directly together without requiring additional routing rules. Depending on your RouterOS design and version, this rule may not be necessary.&lt;/p&gt;
&lt;p&gt;Always test routing behavior after enabling or disabling routing rules.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="what-does-my-isp-see"&gt;What Does My ISP See?
&lt;/h2&gt;&lt;p&gt;Without this setup:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DNS Server ---&amp;gt; Internet DNS Provider
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The ISP can observe DNS traffic and metadata.&lt;/p&gt;
&lt;p&gt;With this setup:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DNS Server ---&amp;gt; WireGuard Tunnel ---&amp;gt; VPN Provider ---&amp;gt; DNS Provider
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The ISP only sees:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Encrypted WireGuard Traffic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The DNS requests themselves travel inside the VPN tunnel.&lt;/p&gt;
&lt;p&gt;This significantly improves privacy.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="final-thoughts"&gt;Final Thoughts
&lt;/h2&gt;&lt;p&gt;Privacy on the internet is not a single technology.&lt;/p&gt;
&lt;p&gt;HTTPS protects website content.&lt;/p&gt;
&lt;p&gt;DNS over HTTPS protects DNS queries.&lt;/p&gt;
&lt;p&gt;WireGuard protects traffic between your router and the VPN endpoint.&lt;/p&gt;
&lt;p&gt;By combining these technologies and routing DNS traffic through a dedicated WireGuard tunnel on MikroTik RouterOS, you create multiple layers of privacy.&lt;/p&gt;
&lt;p&gt;The result is a simple but effective setup:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Internal DNS servers remain local.&lt;/li&gt;
&lt;li&gt;DNS traffic is encrypted.&lt;/li&gt;
&lt;li&gt;DNS traffic is hidden from the ISP.&lt;/li&gt;
&lt;li&gt;Normal internet traffic can continue using the regular WAN connection.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For home labs and privacy-conscious MikroTik users, selective DNS routing over WireGuard offers an elegant balance between privacy, performance, and simplicity.&lt;/p&gt;
&lt;hr&gt;</description></item></channel></rss>