mysite/public-onion/posts/house_upgrade/index.html

1228 lines
138 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>I Beat My 8-Device Wi-Fi Limit with a Raspberry Pi (and Made an IoT Village) | AlipourIm journeys</title>
<meta name="keywords" content="raspberry pi, wifi, iot, networking, hostapd, dnsmasq">
<meta name="description" content="Real-world guide: hardware choices, reasons, setup details, performance, and how many devices you can realistically support.">
<meta name="author" content="Iman Alipour">
<link rel="canonical" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/house_upgrade/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.31b150d909186c48d6dbbf653acc2489945fa9ac2c8f8cd3fe8448e89e40fccf.css" integrity="sha256-MbFQ2QkYbEjW279lOswkiZRfqawsj4zT/oRI6J5A/M8=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/apple-touch-icon.png">
<link rel="mask-icon" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/house_upgrade/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
</noscript><script>
(function () {
window.goatcounter = { endpoint: "/count" };
const s = document.createElement("script");
s.async = true;
s.src = "/js/count.js";
document.head.appendChild(s);
})();
</script>
<script>
(function () {
const GC = "";
const nf = new Intl.NumberFormat();
const SING = "visit";
const PLUR = "visits";
function ready(fn) {
if (document.readyState === "complete" || document.readyState === "interactive") setTimeout(fn, 0);
else document.addEventListener("DOMContentLoaded", fn);
}
function gcPath() {
try {
return window.goatcounter && window.goatcounter.get_data
? window.goatcounter.get_data().p
: location.pathname;
} catch (_) {
return location.pathname;
}
}
async function fetchCount(path, period) {
try {
const q = new URLSearchParams({ t: String(Date.now()) });
if (period) q.set("start", period);
const url = `${GC}/counter/${encodeURIComponent(path)}.json?${q}`;
const r = await fetch(url, { credentials: "omit" });
if (r.status === 404) return 0;
if (!r.ok) throw 0;
const j = await r.json();
const n = Number(String(j.count).replace(/,/g, ""));
return Number.isFinite(n) ? n : 0;
} catch {
return null;
}
}
const labelVisits = (n) =>
n === null ? "—" : `${nf.format(n)} ${n === 1 ? SING : PLUR}`;
ready(async function () {
const post = document.querySelector(".post-single");
if (post) {
const meta = post.querySelector(
".post-header .post-meta, .post-header .entry-meta, .post-meta"
);
const visits = await fetchCount(gcPath());
if (meta) {
let span = meta.querySelector(".post-views");
if (!span) {
span = document.createElement("span");
span.className = "post-views";
meta.appendChild(span);
}
span.textContent = labelVisits(visits ?? 0);
}
}
const cards = document.querySelectorAll("article.post-entry");
await Promise.all(
Array.from(cards).map(async (card) => {
const meta = card.querySelector(".entry-footer, .post-meta");
const link = card.querySelector("a.entry-link, h2 a, .entry-title a");
if (!meta || !link) return;
try {
const u = new URL(link.getAttribute("href"), location.origin);
if (u.origin !== location.origin) return;
let span = meta.querySelector(".post-views");
if (!span) {
span = document.createElement("span");
span.className = "post-views";
meta.appendChild(span);
}
span.textContent = labelVisits((await fetchCount(u.pathname)) ?? 0);
} catch {}
})
);
const uvEl = document.getElementById("gc_site_visitors_week");
if (uvEl) {
const n = await fetchCount("TOTAL", "week");
uvEl.textContent = n === null ? "—" : nf.format(n);
}
});
})();
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/" accesskey="h" title="AlipourIm journeys (Alt + H)">AlipourIm journeys</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/phd_journey/" title="PhD_journey">
<span>PhD_journey</span>
</a>
</li>
<li>
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/">Home</a>&nbsp;»&nbsp;<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
I Beat My 8-Device Wi-Fi Limit with a Raspberry Pi (and Made an IoT Village)
</h1>
<div class="post-description">
Real-world guide: hardware choices, reasons, setup details, performance, and how many devices you can realistically support.
</div>
<div class="post-meta"><span title='2025-11-23 00:00:00 +0000 UTC'>November 23, 2025</span>&nbsp;·&nbsp;18 min&nbsp;·&nbsp;Iman Alipour
<span class="post-meta-item">
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/house_upgrade/#isso-thread" class="isso-comments-link">Comments</a>
</span>
</div>
</header> <div class="toc">
<details open>
<summary accesskey="c" title="(Alt + C)">
<span class="details">Table of Contents</span>
</summary>
<div class="inner"><ul>
<li>
<a href="#the-day-my-wi-fi-said-eight-is-enough" aria-label="The Day My Wi-Fi Said “Eight Is Enough”">The Day My Wi-Fi Said “Eight Is Enough”</a></li>
<li>
<a href="#hardware-what-i-picked-and-why" aria-label="Hardware: what I picked and why">Hardware: what I picked and why</a></li>
<li>
<a href="#what-this-setup-actually-does" aria-label="What this setup actually does">What this setup actually does</a></li>
<li>
<a href="#setup-details-the-friendly-version" aria-label="Setup details (the friendly version)">Setup details (the friendly version)</a><ul>
<li>
<a href="#1-access-point-with-hostapd" aria-label="1) Access point with hostapd">1) Access point with hostapd</a></li>
<li>
<a href="#2-dhcp-on-the-iot-side-dnsmasq" aria-label="2) DHCP on the IoT side (dnsmasq)">2) DHCP on the IoT side (dnsmasq)</a></li>
<li>
<a href="#3-routing--nat-nftables" aria-label="3) Routing &#43; NAT (nftables)">3) Routing + NAT (nftables)</a></li>
<li>
<a href="#4-mdns-across-subnets-avahi" aria-label="4) mDNS across subnets (Avahi)">4) mDNS across subnets (Avahi)</a></li></ul>
</li>
<li>
<a href="#troubleshooting" aria-label="Troubleshooting">Troubleshooting</a></li>
<li>
<a href="#quick-service-sanity-checks" aria-label="Quick service sanity checks">Quick service sanity checks</a><ul>
<li>
<a href="#hostapd-ap" aria-label="hostapd (AP)">hostapd (AP)</a></li>
<li>
<a href="#dnsmasq-dhcp-on-iot-side" aria-label="dnsmasq (DHCP on IoT side)">dnsmasq (DHCP on IoT side)</a></li>
<li>
<a href="#avahi-mdns-reflector" aria-label="Avahi (mDNS reflector)">Avahi (mDNS reflector)</a></li></ul>
</li>
<li>
<a href="#basic-connectivity-tests-from-a-client-on-iot_hub" aria-label="Basic connectivity tests from a client on IoT_hub">Basic connectivity tests from a client on IoT_hub</a><ul>
<li>
<a href="#got-dhcp" aria-label="got DHCP?">got DHCP?</a></li>
<li>
<a href="#can-you-reach-the-pi-and-the-internet" aria-label="can you reach the Pi and the internet?">can you reach the Pi and the internet?</a></li>
<li>
<a href="#dns-works-end-to-end" aria-label="DNS works end-to-end?">DNS works end-to-end?</a></li></ul>
</li>
<li>
<a href="#if-airplayhomekit-discovery-is-flaky-across-subnets" aria-label="If AirPlay/HomeKit discovery is flaky across subnets">If AirPlay/HomeKit discovery is flaky across subnets</a><ul>
<li>
<a href="#make-sure-mdns-is-allowed-both-directions-on-the-pi" aria-label="make sure mDNS is allowed both directions on the Pi">make sure mDNS is allowed both directions on the Pi</a></li>
<li>
<a href="#restart-avahi-cleanly-and-re-announce" aria-label="restart Avahi cleanly and re-announce">restart Avahi cleanly and re-announce</a></li>
<li>
<a href="#from-the-pi-watch-mdns-traffic-on-both-sides-you-should-see-queriesanswers" aria-label="from the Pi, watch mDNS traffic on both sides (you should see queries/answers)">from the Pi, watch mDNS traffic on both sides (you should see queries/answers)</a></li></ul>
</li>
<li>
<a href="#throughput--airtime-sanity-optional" aria-label="Throughput &#43; airtime sanity (optional)">Throughput + airtime sanity (optional)</a><ul>
<li>
<a href="#simple-iperf3-install-on-pi-and-a-client" aria-label="simple iperf3 (install on Pi and a client)">simple iperf3 (install on Pi and a client)</a></li>
<li>
<a href="#check-channel-utilizationinterference-from-pi" aria-label="check channel utilization/interference (from Pi)">check channel utilization/interference (from Pi)</a></li></ul>
</li>
<li>
<a href="#scaling-tips-lots-of-tiny-iot-devices" aria-label="Scaling tips (lots of tiny IoT devices)">Scaling tips (lots of tiny IoT devices)</a><ul>
<li>
<a href="#hostapd-tweaks-add-to-hostapdconf-then-restart" aria-label="hostapd tweaks (add to hostapd.conf, then restart)">hostapd tweaks (add to hostapd.conf, then restart)</a></li>
<li>
<a href="#if-some-esplow-power-clients-are-sticky-or-nap-too-hard" aria-label="if some ESP/low-power clients are sticky or nap too hard:">if some ESP/low-power clients are sticky or nap too hard:</a></li></ul>
</li>
<li>
<a href="#clients-connect-but-no-internet-quick-checklist" aria-label="“Clients connect but no internet” quick checklist">“Clients connect but no internet” quick checklist</a><ul>
<li>
<a href="#pi-has-a-default-route-via-upstream" aria-label="Pi has a default route via upstream?">Pi has a default route via upstream?</a></li>
<li>
<a href="#nat-counters-are-increasing-when-clients-surf" aria-label="NAT counters are increasing when clients surf?">NAT counters are increasing when clients surf?</a></li>
<li>
<a href="#connections-tracked" aria-label="connections tracked?">connections tracked?</a></li>
<li>
<a href="#last-resort-bounce-the-pieces" aria-label="last resort: bounce the pieces">last resort: bounce the pieces</a></li></ul>
</li>
<li>
<a href="#network-traffic-embedded-from-captures" aria-label="Network Traffic (embedded from captures)">Network Traffic (embedded from captures)</a><ul>
<li>
<a href="#1-dhcp-leases-who-joined-the-iot-network" aria-label="1) DHCP leases (who joined the IoT network)">1) DHCP leases (who joined the IoT network)</a></li>
<li>
<a href="#2-top-talkers-by-bytes-hosts-table" aria-label="2) Top talkers by bytes (hosts table)">2) Top talkers by bytes (hosts table)</a></li>
<li>
<a href="#3-heaviest-flows-src-dst-proto-dport-bytes" aria-label="3) Heaviest flows (src, dst, proto, dport, bytes)">3) Heaviest flows (src, dst, proto, dport, bytes)</a></li>
<li>
<a href="#4-conntrack-snapshot-active-connections-inventory" aria-label="4) Conntrack snapshot (active connections inventory)">4) Conntrack snapshot (active connections inventory)</a></li>
<li>
<a href="#5-part-of-raw-packet-capture" aria-label="5) Part of Raw packet capture">5) Part of Raw packet capture</a></li></ul>
</li>
<li>
<a href="#epilogue" aria-label="Epilogue">Epilogue</a>
</li>
</ul>
</div>
</details>
</div>
<div class="post-content"><h2 id="the-day-my-wi-fi-said-eight-is-enough">The Day My Wi-Fi Said “Eight Is Enough”<a hidden class="anchor" aria-hidden="true" href="#the-day-my-wi-fi-said-eight-is-enough">#</a></h2>
<p>My apartment Wi-Fi (ASK4) has a hard cap of <strong>8 devices</strong>. Thats adorable until you own a phone, a laptop, a tablet, a TV, a smart speaker, and even a couple of smart plugs. My solution: put <strong>all the IoT stuff behind a Raspberry Pi</strong> that shows up as <strong>one</strong> device to the buildings network, but acts like a full-blown Wi-Fi for everything else I own.</p>
<p>This post is everything I did—no corporate firewall access, no exotic gear—just a Pi, a USB Wi-Fi adapter, and a little patience.</p>
<hr>
<h2 id="hardware-what-i-picked-and-why">Hardware: what I picked and why<a hidden class="anchor" aria-hidden="true" href="#hardware-what-i-picked-and-why">#</a></h2>
<ul>
<li>
<p><strong>Raspberry Pi 4 (4GB)</strong><br>
It has enough CPU to route/NAT comfortably, USB 3 for fast Wi-Fi dongles, and solid Linux support. A Pi 3 works in a pinch, but the 4 stays cooler and handles bursts better.</p>
</li>
<li>
<p><strong>ALFA AWUS036ACHM (USB Wi-Fi)</strong><br>
Reliable, <strong>AP-mode</strong> friendly on Linux, and happy with <code>hostapd</code>. I used it to <strong>broadcast</strong> my IoT network (2.4 GHz, 20 MHz channel) while the Pis built-in Wi-Fi connects upstream. For better range, use a short <strong>USB 3 extension</strong> so the antenna sits away from the Pi (USB 3 noise can hurt 2.4 GHz).</p>
</li>
<li>
<p><strong>Fast USB-C power supply</strong> (official Pi 4 or 5V/3A equivalent)<br>
Wi-Fi spikes current draw; brown-outs cause random gremlins.</p>
</li>
<li>
<p><strong>1632 GB microSD</strong>, <strong>heatsinks</strong>, <strong>ventilated case</strong><br>
The Pi 4 appreciates a bit of airflow.</p>
</li>
<li>
<p><strong>(Optional) Ethernet cable</strong><br>
If you can wire the Pi to the wall/router for upstream instead of using onboard Wi-Fi, do it. Wired upstream = higher, steadier throughput and frees the onboard radio.</p>
</li>
</ul>
<hr>
<h2 id="what-this-setup-actually-does">What this setup actually does<a hidden class="anchor" aria-hidden="true" href="#what-this-setup-actually-does">#</a></h2>
<ul>
<li>The Pi connects to the buildings <strong>ASK4 Wi-Fi</strong> as a <strong>client</strong> (<code>wlan0</code>).</li>
<li>The ALFA dongle creates a new access point called <strong><code>IoT_hub</code></strong> (<code>wlx…</code> interface) with password <code>Iman8118</code>.</li>
<li>Devices join <code>IoT_hub</code>. The Pi does <strong>NAT</strong>, so upstream sees <strong>one MAC address</strong> (the Pi), not dozens of gadgets. Device limit: defeated.</li>
<li><strong>Avahi mDNS reflector</strong> lets services like <strong>AirPlay/HomeKit</strong> be discoverable across the two subnets without touching the managed router.</li>
<li>If Im on the building Wi-Fi and want to control IoT gear without switching, I can also use an optional overlay (e.g., <strong>Tailscale</strong>) to reach <code>192.168.50.0/24</code> from anywhere.</li>
</ul>
<hr>
<h2 id="setup-details-the-friendly-version">Setup details (the friendly version)<a hidden class="anchor" aria-hidden="true" href="#setup-details-the-friendly-version">#</a></h2>
<h3 id="1-access-point-with-hostapd">1) Access point with hostapd<a hidden class="anchor" aria-hidden="true" href="#1-access-point-with-hostapd">#</a></h3>
<p>I broadcast a simple WPA2 network on <strong>2.4 GHz</strong> (best compatibility). Channel <strong>1/6/11</strong>—pick the cleanest. 20 MHz channel width keeps legacy and low-power devices happy.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ini" data-lang="ini"><span style="display:flex;"><span><span style="color:#a6e22e">interface</span><span style="color:#f92672">=</span><span style="color:#e6db74">wlx00c0cab7ab29</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">ssid</span><span style="color:#f92672">=</span><span style="color:#e6db74">&lt;A_NICE_SSID&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">country_code</span><span style="color:#f92672">=</span><span style="color:#e6db74">DE</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">hw_mode</span><span style="color:#f92672">=</span><span style="color:#e6db74">g</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">channel</span><span style="color:#f92672">=</span><span style="color:#e6db74">6</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">ieee80211n</span><span style="color:#f92672">=</span><span style="color:#e6db74">1</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">wmm_enabled</span><span style="color:#f92672">=</span><span style="color:#e6db74">1</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Don&#39;t require HT or you&#39;ll reject some tiny IoT clients:</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">require_ht</span><span style="color:#f92672">=</span><span style="color:#e6db74">0</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">wpa</span><span style="color:#f92672">=</span><span style="color:#e6db74">2</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">wpa_key_mgmt</span><span style="color:#f92672">=</span><span style="color:#e6db74">WPA-PSK</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">rsn_pairwise</span><span style="color:#f92672">=</span><span style="color:#e6db74">CCMP</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">wpa_passphrase</span><span style="color:#f92672">=</span><span style="color:#e6db74">&lt;STRONG_PASSWORD&gt;</span>
</span></span></code></pre></div><h3 id="2-dhcp-on-the-iot-side-dnsmasq">2) DHCP on the IoT side (dnsmasq)<a hidden class="anchor" aria-hidden="true" href="#2-dhcp-on-the-iot-side-dnsmasq">#</a></h3>
<p>Give out addresses on 192.168.50.0/24 and let systemd-resolved handle DNS to the internet.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>interface<span style="color:#f92672">=</span>wlx00c0cab7ab29
</span></span><span style="display:flex;"><span>bind-interfaces
</span></span><span style="display:flex;"><span>dhcp-range<span style="color:#f92672">=</span>192.168.50.100,192.168.50.240,255.255.255.0,12h
</span></span><span style="display:flex;"><span>dhcp-option<span style="color:#f92672">=</span>3,192.168.50.1
</span></span><span style="display:flex;"><span>dhcp-option<span style="color:#f92672">=</span>6,1.1.1.1,8.8.8.8
</span></span><span style="display:flex;"><span>port<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> <span style="color:#75715e"># leave port 53 to systemd-resolved</span>
</span></span><span style="display:flex;"><span>log-dhcp
</span></span></code></pre></div><h3 id="3-routing--nat-nftables">3) Routing + NAT (nftables)<a hidden class="anchor" aria-hidden="true" href="#3-routing--nat-nftables">#</a></h3>
<p>This makes every downstream device appear as the Pi upstream:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>table inet filter <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span> chain input <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span> type filter hook input priority filter; policy accept;
</span></span><span style="display:flex;"><span> ct state established,related accept
</span></span><span style="display:flex;"><span> iif <span style="color:#e6db74">&#34;lo&#34;</span> accept
</span></span><span style="display:flex;"><span> iif <span style="color:#e6db74">&#34;wlan0&#34;</span> accept
</span></span><span style="display:flex;"><span> iif <span style="color:#e6db74">&#34;wlx00c0cab7ab29&#34;</span> accept
</span></span><span style="display:flex;"><span> udp dport <span style="color:#ae81ff">5353</span> accept <span style="color:#75715e"># mDNS</span>
</span></span><span style="display:flex;"><span> counter drop
</span></span><span style="display:flex;"><span> <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span> chain forward <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span> type filter hook forward priority filter; policy accept;
</span></span><span style="display:flex;"><span> ct state established,related accept
</span></span><span style="display:flex;"><span> iif <span style="color:#e6db74">&#34;wlx00c0cab7ab29&#34;</span> oif <span style="color:#e6db74">&#34;wlan0&#34;</span> accept
</span></span><span style="display:flex;"><span> iif <span style="color:#e6db74">&#34;wlan0&#34;</span> oif <span style="color:#e6db74">&#34;wlx00c0cab7ab29&#34;</span> accept
</span></span><span style="display:flex;"><span> <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span> chain output <span style="color:#f92672">{</span> type filter hook output priority filter; policy accept; <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>table ip nat <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span> chain postrouting <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span> type nat hook postrouting priority srcnat; policy accept;
</span></span><span style="display:flex;"><span> oif <span style="color:#e6db74">&#34;wlan0&#34;</span> masquerade
</span></span><span style="display:flex;"><span> <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span></code></pre></div><h3 id="4-mdns-across-subnets-avahi">4) mDNS across subnets (Avahi)<a hidden class="anchor" aria-hidden="true" href="#4-mdns-across-subnets-avahi">#</a></h3>
<p>The reflector bridges Bonjour so AirPlay/HomeKit can find each other across IoT and ASK4:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#f92672">[</span>server<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>allow-interfaces<span style="color:#f92672">=</span>wlan0,wlx00c0cab7ab29
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>reflector<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>enable-reflector<span style="color:#f92672">=</span>yes
</span></span></code></pre></div><p>I wanted to be able to control my homepod without switching networks, but without setting a custom route on ASK4 WiFi it was not possible, hence the reason I chose Tailscale</p>
<p>Iet up Tailscale, advertise 192.168.50.0/24 from the Pi. Now I can log in with a passkey from my devices and control my homepod without switching networks, well, kinda. Boom! Secure access to IoT without leaving ASK4.</p>
<p>Now some random questions that I looked up in internet:</p>
<ol>
<li>How many devices can this really support?</li>
</ol>
<p>Short answer: a lot—for IoT.
Long answer: the DHCP pool here has 141 IPs (.100 to .240). Wi-Fi airtime is the real limit, not IPs. With a 2.4 GHz AP and mostly low-bandwidth gadgets (sensors, plugs, bulbs, ESPs), 5070 devices is completely reasonable. The ALFAs radio and hostapd handle concurrent associations fine; Ive watched dozens attach, chatter, and renew leases without drama.</p>
<p>If you plan camera-heavy traffic or bulk transfers, either split heavy gear onto 5 GHz or wire those devices. For small, chatty IoT traffic, this Pi/AP combo is very comfortable.</p>
<ol start="2">
<li>What speeds should I expect?</li>
</ol>
<ul>
<li>
<p>LAN (IoT device ↔ Pi) on 2.4 GHz, 20 MHz channel, WPA2:
~2060 Mbps real throughput per device is typical. IoT stuff barely needs 1 Mbps, so I&rsquo;m golden! ^^</p>
</li>
<li>
<p>Internet (IoT device → upstream via Pi):
If the Pis upstream is Wi-Fi, which in my case is, the bottleneck is that link; expect ~3070 Mbps stable. If upstream is Ethernet, the Pi 4 can NAT hundreds of Mbps, and my AP radio becomes the limit.</p>
</li>
<li>
<p>Latency: Adding one NAT hop adds a little delay (a few ms). For HomePod/AirPlay, mDNS reflection + local Wi-Fi keeps it snappy.</p>
</li>
</ul>
<ol start="3">
<li>Why these choices?</li>
</ol>
<ul>
<li>
<p>2.4 GHz is where tiny IoT radios live (bulbs, plugs, ESP/ESP32). It trades speed for range and compatibility.</p>
</li>
<li>
<p>WPA2-PSK keeps things simple; WPA3 is fine if all your clients support it.</p>
</li>
<li>
<p>20 MHz channel prevents older or power-saving devices from flaking out.</p>
</li>
<li>
<p>Avahi reflector avoids any changes to the buildings router and still lets discovery work.</p>
</li>
<li>
<p>NAT collapses dozens of gadgets into a single upstream “seat,” sidestepping the 8-device limit entirely.</p>
</li>
</ul>
<h2 id="troubleshooting">Troubleshooting<a hidden class="anchor" aria-hidden="true" href="#troubleshooting">#</a></h2>
<ul>
<li>
<p><code>hostapd</code> <strong>masked/disabled</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo systemctl unmask hostapd <span style="color:#f92672">&amp;&amp;</span> sudo systemctl enable --now hostapd
</span></span></code></pre></div></li>
<li>
<p><code>dnsmasq</code> cant start because of <strong>port 53</strong><br>
set <code>port=0</code> in <code>/etc/dnsmasq.d/*.conf</code> and let systemd-resolved keep DNS.</p>
</li>
<li>
<p><strong>“Station does not support mandatory HT PHY”</strong> in <code>hostapd</code> logs →<br>
add <code>require_ht=0</code> (and keep <code>ieee80211n=1</code>) in your <code>hostapd.conf</code>.</p>
</li>
<li>
<p>AirPlay/HomeKit dont show up across subnets →<br>
ensure Avahi reflector is enabled and UDP/5353 (mDNS) is allowed:</p>
<ul>
<li><code>/etc/avahi/avahi-daemon.conf</code> has:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#f92672">[</span>server<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>allow-interfaces<span style="color:#f92672">=</span>wlan0,wlx00c0cab7ab29
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>reflector<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>enable-reflector<span style="color:#f92672">=</span>yes
</span></span></code></pre></div></li>
<li>firewall allows:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>udp dport <span style="color:#ae81ff">5353</span> accept
</span></span></code></pre></div></li>
<li>
<p>Weak signal / flaky joins →<br>
use a short <strong>USB 3 extension</strong> to move the ALFA away from the Pi and cables;<br>
scan and switch to a cleaner <strong>2.4 GHz</strong> channel (1/6/11), keep width at <strong>20 MHz</strong>.</p>
</li>
<li>
<p>Clients connect but no internet →<br>
verify IP forward &amp; NAT:</p>
</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo sysctl net.ipv4.ip_forward
</span></span></code></pre></div><p>If it&rsquo;s 0, enable it permanently and reload</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>echo <span style="color:#e6db74">&#39;net.ipv4.ip_forward=1&#39;</span> | sudo tee /etc/sysctl.d/99-iot.conf
</span></span><span style="display:flex;"><span>sudo sysctl --system
</span></span></code></pre></div><p>Verify the nftables NAT rule exists (masquerade out via wlan0)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo nft list ruleset | sed -n <span style="color:#e6db74">&#39;/table ip nat/,$p&#39;</span> | sed -n <span style="color:#e6db74">&#39;1,80p&#39;</span>
</span></span></code></pre></div><p>Add it if missing</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo nft add table ip nat
</span></span><span style="display:flex;"><span>sudo nft <span style="color:#e6db74">&#39;add chain ip nat postrouting { type nat hook postrouting priority srcnat; policy accept; }&#39;</span>
</span></span><span style="display:flex;"><span>sudo nft <span style="color:#e6db74">&#39;add rule ip nat postrouting oif &#34;wlan0&#34; masquerade&#39;</span>
</span></span></code></pre></div><p>Persist nftables (Ubuntu)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo sh -c <span style="color:#e6db74">&#39;nft list ruleset &gt; /etc/nftables.conf&#39;</span>
</span></span><span style="display:flex;"><span>sudo systemctl enable --now nftables
</span></span></code></pre></div><h2 id="quick-service-sanity-checks">Quick service sanity checks<a hidden class="anchor" aria-hidden="true" href="#quick-service-sanity-checks">#</a></h2>
<h3 id="hostapd-ap">hostapd (AP)<a hidden class="anchor" aria-hidden="true" href="#hostapd-ap">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo systemctl status hostapd --no-pager
</span></span><span style="display:flex;"><span>sudo journalctl -u hostapd -n <span style="color:#ae81ff">60</span> --no-pager
</span></span><span style="display:flex;"><span>iw dev wlx00c0cab7ab29 info
</span></span><span style="display:flex;"><span>iw dev wlx00c0cab7ab29 station dump
</span></span></code></pre></div><h3 id="dnsmasq-dhcp-on-iot-side">dnsmasq (DHCP on IoT side)<a hidden class="anchor" aria-hidden="true" href="#dnsmasq-dhcp-on-iot-side">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo systemctl status dnsmasq --no-pager
</span></span><span style="display:flex;"><span>sudo journalctl -u dnsmasq -n <span style="color:#ae81ff">80</span> --no-pager
</span></span><span style="display:flex;"><span>grep -E <span style="color:#e6db74">&#39;interface=|dhcp-range&#39;</span> /etc/dnsmasq.d/*.conf <span style="color:#f92672">||</span> true
</span></span><span style="display:flex;"><span>tail -n <span style="color:#ae81ff">50</span> /var/lib/misc/dnsmasq.leases
</span></span></code></pre></div><h3 id="avahi-mdns-reflector">Avahi (mDNS reflector)<a hidden class="anchor" aria-hidden="true" href="#avahi-mdns-reflector">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>grep -E <span style="color:#e6db74">&#39;enable-reflector|allow-interfaces&#39;</span> /etc/avahi/avahi-daemon.conf
</span></span><span style="display:flex;"><span>sudo systemctl status avahi-daemon --no-pager
</span></span><span style="display:flex;"><span>sudo journalctl -u avahi-daemon -n <span style="color:#ae81ff">60</span> --no-pager
</span></span></code></pre></div><h2 id="basic-connectivity-tests-from-a-client-on-iot_hub">Basic connectivity tests from a client on IoT_hub<a hidden class="anchor" aria-hidden="true" href="#basic-connectivity-tests-from-a-client-on-iot_hub">#</a></h2>
<h3 id="got-dhcp">got DHCP?<a hidden class="anchor" aria-hidden="true" href="#got-dhcp">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ip addr show
</span></span><span style="display:flex;"><span>ip route
</span></span><span style="display:flex;"><span>cat /etc/resolv.conf
</span></span></code></pre></div><h3 id="can-you-reach-the-pi-and-the-internet">can you reach the Pi and the internet?<a hidden class="anchor" aria-hidden="true" href="#can-you-reach-the-pi-and-the-internet">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ping -c <span style="color:#ae81ff">3</span> 192.168.50.1
</span></span><span style="display:flex;"><span>ping -c <span style="color:#ae81ff">3</span> 1.1.1.1
</span></span><span style="display:flex;"><span>ping -c <span style="color:#ae81ff">3</span> google.com
</span></span></code></pre></div><h3 id="dns-works-end-to-end">DNS works end-to-end?<a hidden class="anchor" aria-hidden="true" href="#dns-works-end-to-end">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>dig +short _airplay._tcp.local @224.0.0.251 -p <span style="color:#ae81ff">5353</span>
</span></span></code></pre></div><p>(Or use a Bonjour browser app to confirm the HomePod is discoverable.)</p>
<h2 id="if-airplayhomekit-discovery-is-flaky-across-subnets">If AirPlay/HomeKit discovery is flaky across subnets<a hidden class="anchor" aria-hidden="true" href="#if-airplayhomekit-discovery-is-flaky-across-subnets">#</a></h2>
<h3 id="make-sure-mdns-is-allowed-both-directions-on-the-pi">make sure mDNS is allowed both directions on the Pi<a hidden class="anchor" aria-hidden="true" href="#make-sure-mdns-is-allowed-both-directions-on-the-pi">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>sudo nft add rule inet filter input udp dport <span style="color:#ae81ff">5353</span> accept
</span></span><span style="display:flex;"><span>sudo nft add rule inet filter forward udp dport <span style="color:#ae81ff">5353</span> accept
</span></span><span style="display:flex;"><span>sudo sh -c <span style="color:#e6db74">&#39;nft list ruleset &gt; /etc/nftables.conf&#39;</span>
</span></span></code></pre></div><h3 id="restart-avahi-cleanly-and-re-announce">restart Avahi cleanly and re-announce<a hidden class="anchor" aria-hidden="true" href="#restart-avahi-cleanly-and-re-announce">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo systemctl restart avahi-daemon
</span></span><span style="display:flex;"><span>sudo journalctl -u avahi-daemon -n <span style="color:#ae81ff">40</span> --no-pager
</span></span></code></pre></div><h3 id="from-the-pi-watch-mdns-traffic-on-both-sides-you-should-see-queriesanswers">from the Pi, watch mDNS traffic on both sides (you should see queries/answers)<a hidden class="anchor" aria-hidden="true" href="#from-the-pi-watch-mdns-traffic-on-both-sides-you-should-see-queriesanswers">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo tcpdump -ni wlx00c0cab7ab29 udp port <span style="color:#ae81ff">5353</span> -vvv
</span></span></code></pre></div><p>(in another terminal:)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo tcpdump -ni wlan0 udp port <span style="color:#ae81ff">5353</span> -vvv
</span></span></code></pre></div><h2 id="throughput--airtime-sanity-optional">Throughput + airtime sanity (optional)<a hidden class="anchor" aria-hidden="true" href="#throughput--airtime-sanity-optional">#</a></h2>
<h3 id="simple-iperf3-install-on-pi-and-a-client">simple iperf3 (install on Pi and a client)<a hidden class="anchor" aria-hidden="true" href="#simple-iperf3-install-on-pi-and-a-client">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo apt-get update <span style="color:#f92672">&amp;&amp;</span> sudo apt-get install -y iperf3
</span></span></code></pre></div><p>(on the Pi:) <code>iperf3 -s</code>
(on a client:) <code>iperf3 -c 192.168.50.1 -P 3 -t 10</code></p>
<h3 id="check-channel-utilizationinterference-from-pi">check channel utilization/interference (from Pi)<a hidden class="anchor" aria-hidden="true" href="#check-channel-utilizationinterference-from-pi">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo iw dev wlx00c0cab7ab29 survey dump | sed -n <span style="color:#e6db74">&#39;1,200p&#39;</span>
</span></span></code></pre></div><p>(if busy, try channel 1 or 11 in hostapd.conf and restart hostapd)</p>
<h2 id="scaling-tips-lots-of-tiny-iot-devices">Scaling tips (lots of tiny IoT devices)<a hidden class="anchor" aria-hidden="true" href="#scaling-tips-lots-of-tiny-iot-devices">#</a></h2>
<h3 id="hostapd-tweaks-add-to-hostapdconf-then-restart">hostapd tweaks (add to hostapd.conf, then restart)<a hidden class="anchor" aria-hidden="true" href="#hostapd-tweaks-add-to-hostapdconf-then-restart">#</a></h3>
<p>(reduce management overhead slightly; keep conservative for compatibility)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>beacon_int<span style="color:#f92672">=</span><span style="color:#ae81ff">100</span>
</span></span><span style="display:flex;"><span>dtim_period<span style="color:#f92672">=</span><span style="color:#ae81ff">2</span>
</span></span><span style="display:flex;"><span>wmm_enabled<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ap_isolate<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>max_num_sta<span style="color:#f92672">=</span><span style="color:#ae81ff">256</span> <span style="color:#75715e"># logical cap; real limit is airtime/driver</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo systemctl restart hostapd
</span></span></code></pre></div><h3 id="if-some-esplow-power-clients-are-sticky-or-nap-too-hard">if some ESP/low-power clients are sticky or nap too hard:<a hidden class="anchor" aria-hidden="true" href="#if-some-esplow-power-clients-are-sticky-or-nap-too-hard">#</a></h3>
<p>(device-side) disable aggressive power saving if supported<br>
(AP-side) keep channel width at 20 MHz and <code>require_ht=0</code> for legacy clients</p>
<h2 id="clients-connect-but-no-internet-quick-checklist">“Clients connect but no internet” quick checklist<a hidden class="anchor" aria-hidden="true" href="#clients-connect-but-no-internet-quick-checklist">#</a></h2>
<h3 id="pi-has-a-default-route-via-upstream">Pi has a default route via upstream?<a hidden class="anchor" aria-hidden="true" href="#pi-has-a-default-route-via-upstream">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ip route | grep default
</span></span></code></pre></div><h3 id="nat-counters-are-increasing-when-clients-surf">NAT counters are increasing when clients surf?<a hidden class="anchor" aria-hidden="true" href="#nat-counters-are-increasing-when-clients-surf">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo nft list chain ip nat postrouting -a
</span></span></code></pre></div><h3 id="connections-tracked">connections tracked?<a hidden class="anchor" aria-hidden="true" href="#connections-tracked">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo conntrack -L -o extended | head -n <span style="color:#ae81ff">40</span>
</span></span></code></pre></div><h3 id="last-resort-bounce-the-pieces">last resort: bounce the pieces<a hidden class="anchor" aria-hidden="true" href="#last-resort-bounce-the-pieces">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>sudo systemctl restart hostapd dnsmasq avahi-daemon
</span></span><span style="display:flex;"><span>sudo systemctl restart NetworkManager <span style="color:#f92672">||</span> true
</span></span><span style="display:flex;"><span>sudo systemctl restart nftables
</span></span></code></pre></div><h2 id="network-traffic-embedded-from-captures">Network Traffic (embedded from captures)<a hidden class="anchor" aria-hidden="true" href="#network-traffic-embedded-from-captures">#</a></h2>
<p>For fun, and curiousity!</p>
<h3 id="1-dhcp-leases-who-joined-the-iot-network">1) DHCP leases (who joined the IoT network)<a hidden class="anchor" aria-hidden="true" href="#1-dhcp-leases-who-joined-the-iot-network">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#ae81ff">1763936213</span> 6a:12:f6:62:40:88 192.168.50.216 * 01:6a:12:f6:62:40:88
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1763935691</span> 72:00:a6:33:e5:7a 192.168.50.222 * 01:72:00:a6:33:e5:7a
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1763935629</span> e8:06:90:69:66:7c 192.168.50.189 Aidot 01:e8:06:90:69:66:7c
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1763936452</span> ac:bc:b5:e5:38:29 192.168.50.202 Main-Bedroom-2 01:ac:bc:b5:e5:38:29
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1763935618</span> e8:06:90:68:06:2c 192.168.50.196 * 01:e8:06:90:68:06:2c
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1763935618</span> 48:e1:e9:bc:f6:91 192.168.50.131 * *
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1763935618</span> 48:e1:e9:bd:08:0d 192.168.50.118 * *
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1763935615</span> 48:e1:e9:bd:0b:a7 192.168.50.233 * *
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1763935618</span> 7c:f1:7e:ff:e1:b0 192.168.50.104 KH100 *
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1763935607</span> cc:b5:d1:31:a4:cc 192.168.50.134 espressif 01:cc:b5:d1:31:a4:cc
</span></span></code></pre></div><h3 id="2-top-talkers-by-bytes-hosts-table">2) Top talkers by bytes (hosts table)<a hidden class="anchor" aria-hidden="true" href="#2-top-talkers-by-bytes-hosts-table">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>192.168.50.233,7346
</span></span><span style="display:flex;"><span>192.168.50.118,7216
</span></span><span style="display:flex;"><span>192.168.50.131,7216
</span></span><span style="display:flex;"><span>17.253.53.203,7040
</span></span><span style="display:flex;"><span>54.217.122.41,6271
</span></span><span style="display:flex;"><span>192.168.50.216,5392
</span></span><span style="display:flex;"><span>192.168.50.104,3058
</span></span><span style="display:flex;"><span>192.168.50.189,2278
</span></span><span style="display:flex;"><span>17.242.218.132,1802
</span></span><span style="display:flex;"><span>192.168.50.134,1750
</span></span><span style="display:flex;"><span>192.168.50.196,1653
</span></span><span style="display:flex;"><span>3.122.71.119,639
</span></span><span style="display:flex;"><span>18.196.19.65,570
</span></span><span style="display:flex;"><span>161.117.178.131,391
</span></span><span style="display:flex;"><span>17.253.53.201,148
</span></span><span style="display:flex;"><span>17.57.146.25,90
</span></span><span style="display:flex;"><span>10.172.72.196,66
</span></span><span style="display:flex;"><span>224.0.0.251,0
</span></span><span style="display:flex;"><span>224.0.0.2,0
</span></span><span style="display:flex;"><span>255.255.255.255,0
</span></span></code></pre></div><h3 id="3-heaviest-flows-src-dst-proto-dport-bytes">3) Heaviest flows (src, dst, proto, dport, bytes)<a hidden class="anchor" aria-hidden="true" href="#3-heaviest-flows-src-dst-proto-dport-bytes">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>192.168.50.202,192.168.50.131,TCP,59903,402
</span></span><span style="display:flex;"><span>192.168.50.202,192.168.50.118,TCP,59807,402
</span></span><span style="display:flex;"><span>161.117.178.131,192.168.50.134,TCP,58246,391
</span></span><span style="display:flex;"><span>192.168.50.216,192.168.50.202,UDP,5353,336
</span></span><span style="display:flex;"><span>192.168.50.202,192.168.50.189,UDP,5353,312
</span></span><span style="display:flex;"><span>192.168.50.202,192.168.50.196,UDP,5353,234
</span></span><span style="display:flex;"><span>17.253.53.203,192.168.50.202,TCP,64726,222
</span></span><span style="display:flex;"><span>192.168.50.216,17.57.146.25,TCP,5223,172
</span></span><span style="display:flex;"><span>192.168.50.216,192.168.50.233,UDP,5353,162
</span></span><span style="display:flex;"><span>192.168.50.202,192.168.50.104,UDP,5353,156
</span></span><span style="display:flex;"><span>17.253.53.201,192.168.50.202,TCP,64727,148
</span></span><span style="display:flex;"><span>192.168.50.202,17.253.53.201,TCP,443,132
</span></span><span style="display:flex;"><span>192.168.50.216,224.0.0.251,IP,0,92
</span></span><span style="display:flex;"><span>192.168.50.216,224.0.0.2,IP,0,92
</span></span><span style="display:flex;"><span>17.57.146.25,192.168.50.216,TCP,64544,90
</span></span><span style="display:flex;"><span>192.168.50.216,192.168.50.118,UDP,5353,75
</span></span><span style="display:flex;"><span>192.168.50.216,192.168.50.131,UDP,5353,75
</span></span><span style="display:flex;"><span>192.168.50.216,192.168.50.134,UDP,5353,75
</span></span><span style="display:flex;"><span>192.168.50.216,10.172.72.196,TCP,59593,70
</span></span><span style="display:flex;"><span>10.172.72.196,192.168.50.216,TCP,51638,66
</span></span></code></pre></div><h3 id="4-conntrack-snapshot-active-connections-inventory">4) Conntrack snapshot (active connections inventory)<a hidden class="anchor" aria-hidden="true" href="#4-conntrack-snapshot-active-connections-inventory">#</a></h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">48</span> TIME_WAIT src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>185.125.190.39 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">55012</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">80</span> src<span style="color:#f92672">=</span>185.125.190.39 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">80</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">55012</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">100</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>185.40.234.113 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">3478</span> src<span style="color:#f92672">=</span>185.40.234.113 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">3478</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431665</span> ESTABLISHED src<span style="color:#f92672">=</span>192.168.50.216 dst<span style="color:#f92672">=</span>17.57.146.25 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">64544</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5223</span> src<span style="color:#f92672">=</span>17.57.146.25 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5223</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">64544</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">27</span> src<span style="color:#f92672">=</span>10.172.72.205 dst<span style="color:#f92672">=</span>224.0.0.251 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>224.0.0.251 dst<span style="color:#f92672">=</span>10.172.72.205 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">17</span> src<span style="color:#f92672">=</span>10.172.72.196 dst<span style="color:#f92672">=</span>10.172.79.255 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">137</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">137</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>10.172.79.255 dst<span style="color:#f92672">=</span>10.172.72.196 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">137</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">137</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431999</span> ESTABLISHED src<span style="color:#f92672">=</span>192.168.50.196 dst<span style="color:#f92672">=</span>18.196.19.65 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">55164</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">8883</span> src<span style="color:#f92672">=</span>18.196.19.65 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">8883</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">55164</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">16</span> src<span style="color:#f92672">=</span>127.0.0.1 dst<span style="color:#f92672">=</span>127.0.0.53 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">41796</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">53</span> src<span style="color:#f92672">=</span>127.0.0.53 dst<span style="color:#f92672">=</span>127.0.0.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">53</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">41796</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> unknown <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">265</span> src<span style="color:#f92672">=</span>192.168.50.216 dst<span style="color:#f92672">=</span>224.0.0.251 <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>224.0.0.251 dst<span style="color:#f92672">=</span>192.168.50.216 mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">5</span> src<span style="color:#f92672">=</span>192.168.50.104 dst<span style="color:#f92672">=</span>1.1.1.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">23791</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">53</span> src<span style="color:#f92672">=</span>1.1.1.1 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">53</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">23791</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">119</span> src<span style="color:#f92672">=</span>10.172.72.205 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>10.172.72.205 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">27</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>224.0.0.251 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>224.0.0.251 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431946</span> ESTABLISHED src<span style="color:#f92672">=</span>192.168.50.202 dst<span style="color:#f92672">=</span>17.242.218.132 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">64686</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5223</span> src<span style="color:#f92672">=</span>17.242.218.132 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5223</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">64686</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">10</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>239.255.255.250 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">40234</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">1900</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>239.255.255.250 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">1900</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">40234</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">96</span> TIME_WAIT src<span style="color:#f92672">=</span>192.168.50.104 dst<span style="color:#f92672">=</span>3.217.113.91 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">49707</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> src<span style="color:#f92672">=</span>3.217.113.91 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">49707</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">10</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>10.172.64.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">40234</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">1900</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>10.172.64.1 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">1900</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">40234</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431812</span> ESTABLISHED src<span style="color:#f92672">=</span>100.69.238.103 dst<span style="color:#f92672">=</span>192.168.50.202 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">55514</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">49395</span> src<span style="color:#f92672">=</span>192.168.50.202 dst<span style="color:#f92672">=</span>192.168.50.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">49395</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">55514</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431666</span> ESTABLISHED src<span style="color:#f92672">=</span>192.168.50.216 dst<span style="color:#f92672">=</span>10.172.72.196 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">51638</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">59593</span> src<span style="color:#f92672">=</span>10.172.72.196 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">59593</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">51638</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431998</span> ESTABLISHED src<span style="color:#f92672">=</span>100.69.238.103 dst<span style="color:#f92672">=</span>192.168.50.202 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">55510</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">7000</span> src<span style="color:#f92672">=</span>192.168.50.202 dst<span style="color:#f92672">=</span>192.168.50.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">7000</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">55510</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">14</span> src<span style="color:#f92672">=</span>192.168.50.131 dst<span style="color:#f92672">=</span>224.0.0.251 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>224.0.0.251 dst<span style="color:#f92672">=</span>192.168.50.131 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> unknown <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">596</span> src<span style="color:#f92672">=</span>10.172.72.205 dst<span style="color:#f92672">=</span>224.0.0.251 <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>224.0.0.251 dst<span style="color:#f92672">=</span>10.172.72.205 mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">27</span> src<span style="color:#f92672">=</span>192.168.50.1 dst<span style="color:#f92672">=</span>224.0.0.251 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>224.0.0.251 dst<span style="color:#f92672">=</span>192.168.50.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">8</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">27</span> src<span style="color:#f92672">=</span>10.172.72.205 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>10.172.72.205 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">15</span> src<span style="color:#f92672">=</span>192.168.50.118 dst<span style="color:#f92672">=</span>224.0.0.251 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>224.0.0.251 dst<span style="color:#f92672">=</span>192.168.50.118 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">88</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>109.43.114.250 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> src<span style="color:#f92672">=</span>109.43.114.250 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431997</span> ESTABLISHED src<span style="color:#f92672">=</span>192.168.50.104 dst<span style="color:#f92672">=</span>18.234.9.109 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">49700</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> src<span style="color:#f92672">=</span>18.234.9.109 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">49700</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431998</span> ESTABLISHED src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>199.165.136.101 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">45248</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> src<span style="color:#f92672">=</span>199.165.136.101 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">45248</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431992</span> ESTABLISHED src<span style="color:#f92672">=</span>10.172.72.196 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">63953</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">22</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>10.172.72.196 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">22</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">63953</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431995</span> ESTABLISHED src<span style="color:#f92672">=</span>192.168.50.189 dst<span style="color:#f92672">=</span>3.122.71.119 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">50422</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">8883</span> src<span style="color:#f92672">=</span>3.122.71.119 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">8883</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">50422</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">100</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>176.58.90.104 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">3478</span> src<span style="color:#f92672">=</span>176.58.90.104 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">3478</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">107</span> TIME_WAIT src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>185.125.190.36 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">50914</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">80</span> src<span style="color:#f92672">=</span>185.125.190.36 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">80</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">50914</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">26</span> src<span style="color:#f92672">=</span>192.168.50.202 dst<span style="color:#f92672">=</span>192.168.50.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>192.168.50.1 dst<span style="color:#f92672">=</span>192.168.50.202 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5353</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">16</span> src<span style="color:#f92672">=</span>127.0.0.1 dst<span style="color:#f92672">=</span>127.0.0.53 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">33321</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">53</span> src<span style="color:#f92672">=</span>127.0.0.53 dst<span style="color:#f92672">=</span>127.0.0.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">53</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">33321</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431975</span> ESTABLISHED src<span style="color:#f92672">=</span>192.168.50.134 dst<span style="color:#f92672">=</span>161.117.178.131 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">58246</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">11883</span> src<span style="color:#f92672">=</span>161.117.178.131 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">11883</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">58246</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">16</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>10.172.64.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">35510</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">53</span> src<span style="color:#f92672">=</span>10.172.64.1 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">53</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">35510</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">100</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>176.58.93.154 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">3478</span> src<span style="color:#f92672">=</span>176.58.93.154 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">3478</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">41641</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431652</span> ESTABLISHED src<span style="color:#f92672">=</span>100.69.238.103 dst<span style="color:#f92672">=</span>192.168.50.202 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">55513</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">49394</span> src<span style="color:#f92672">=</span>192.168.50.202 dst<span style="color:#f92672">=</span>192.168.50.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">49394</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">55513</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">23</span> src<span style="color:#f92672">=</span>192.168.50.104 dst<span style="color:#f92672">=</span>255.255.255.255 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">21112</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">20002</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>255.255.255.255 dst<span style="color:#f92672">=</span>192.168.50.104 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">20002</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">21112</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">10</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>10.172.64.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">40234</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5351</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>10.172.64.1 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5351</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">40234</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> udp <span style="color:#ae81ff">17</span> <span style="color:#ae81ff">10</span> src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>10.172.64.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">34331</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">5351</span> <span style="color:#f92672">[</span>UNREPLIED<span style="color:#f92672">]</span> src<span style="color:#f92672">=</span>10.172.64.1 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">5351</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">34331</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431975</span> ESTABLISHED src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>192.200.0.115 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">48100</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> src<span style="color:#f92672">=</span>192.200.0.115 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">48100</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431999</span> ESTABLISHED src<span style="color:#f92672">=</span>10.172.71.98 dst<span style="color:#f92672">=</span>176.58.93.154 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">58128</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> src<span style="color:#f92672">=</span>176.58.93.154 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">58128</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">431997</span> ESTABLISHED src<span style="color:#f92672">=</span>100.69.238.103 dst<span style="color:#f92672">=</span>192.168.50.202 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">55515</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">49154</span> src<span style="color:#f92672">=</span>192.168.50.202 dst<span style="color:#f92672">=</span>192.168.50.1 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">49154</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">55515</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>ipv4 <span style="color:#ae81ff">2</span> tcp <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">118</span> TIME_WAIT src<span style="color:#f92672">=</span>192.168.50.104 dst<span style="color:#f92672">=</span>3.217.113.91 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">49708</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> src<span style="color:#f92672">=</span>3.217.113.91 dst<span style="color:#f92672">=</span>10.172.71.98 sport<span style="color:#f92672">=</span><span style="color:#ae81ff">443</span> dport<span style="color:#f92672">=</span><span style="color:#ae81ff">49708</span> <span style="color:#f92672">[</span>ASSURED<span style="color:#f92672">]</span> mark<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span> use<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span></code></pre></div><h3 id="5-part-of-raw-packet-capture">5) Part of Raw packet capture<a hidden class="anchor" aria-hidden="true" href="#5-part-of-raw-packet-capture">#</a></h3>
<ul>
<li>Whats inside?</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>tshark -r iot_ap_120s.pcap -q -z io,stat,60
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">==================================</span>
</span></span><span style="display:flex;"><span>| IO Statistics |
</span></span><span style="display:flex;"><span>| |
</span></span><span style="display:flex;"><span>| Duration: 119.773534 secs |
</span></span><span style="display:flex;"><span>| Interval: <span style="color:#ae81ff">60</span> secs |
</span></span><span style="display:flex;"><span>| |
</span></span><span style="display:flex;"><span>| Col 1: Frames and bytes |
</span></span><span style="display:flex;"><span>|--------------------------------|
</span></span><span style="display:flex;"><span>| |<span style="color:#ae81ff">1</span> |
</span></span><span style="display:flex;"><span>| Interval | Frames | Bytes |
</span></span><span style="display:flex;"><span>|--------------------------------|
</span></span><span style="display:flex;"><span>| <span style="color:#ae81ff">0</span> &lt;&gt; <span style="color:#ae81ff">60</span> | <span style="color:#ae81ff">400</span> | <span style="color:#ae81ff">60449</span> |
</span></span><span style="display:flex;"><span>| <span style="color:#ae81ff">60</span> &lt;&gt; Dur | <span style="color:#ae81ff">24672</span> | <span style="color:#ae81ff">30179911</span> |
</span></span><span style="display:flex;"><span><span style="color:#f92672">==================================</span>
</span></span></code></pre></div><ul>
<li>Protocol hierarchy (what kinds of traffic?)</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span> tshark -r iot_ap_120s.pcap -q -z io,phs
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">===================================================================</span>
</span></span><span style="display:flex;"><span>Protocol Hierarchy Statistics
</span></span><span style="display:flex;"><span>Filter:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>eth frames:25072 bytes:30240360
</span></span><span style="display:flex;"><span> ip frames:24706 bytes:30195993
</span></span><span style="display:flex;"><span> udp frames:349 bytes:94583
</span></span><span style="display:flex;"><span> mdns frames:241 bytes:60693
</span></span><span style="display:flex;"><span> data frames:32 bytes:2240
</span></span><span style="display:flex;"><span> quic frames:76 bytes:31650
</span></span><span style="display:flex;"><span> quic frames:2 bytes:2484
</span></span><span style="display:flex;"><span> tcp frames:24353 bytes:30101226
</span></span><span style="display:flex;"><span> tls frames:2413 bytes:3493680
</span></span><span style="display:flex;"><span> tcp.segments frames:2256 bytes:3378795
</span></span><span style="display:flex;"><span> tls frames:2222 bytes:3353799
</span></span><span style="display:flex;"><span> data frames:147 bytes:71717
</span></span><span style="display:flex;"><span> tcp.segments frames:5 bytes:7550
</span></span><span style="display:flex;"><span> igmp frames:4 bytes:184
</span></span><span style="display:flex;"><span> arp frames:150 bytes:6300
</span></span><span style="display:flex;"><span> ipv6 frames:216 bytes:38067
</span></span><span style="display:flex;"><span> icmpv6 frames:124 bytes:10704
</span></span><span style="display:flex;"><span> udp frames:79 bytes:25415
</span></span><span style="display:flex;"><span> data frames:2 bytes:132
</span></span><span style="display:flex;"><span> mdns frames:77 bytes:25283
</span></span><span style="display:flex;"><span> tcp frames:13 bytes:1948
</span></span><span style="display:flex;"><span> data frames:1 bytes:90
</span></span><span style="display:flex;"><span><span style="color:#f92672">===================================================================</span>
</span></span></code></pre></div><ul>
<li>Top IP conversations (who talked to whom?)</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span> tshark -r iot_ap_120s.pcap -q -z conv,ip
</span></span><span style="display:flex;"><span><span style="color:#f92672">================================================================================</span>
</span></span><span style="display:flex;"><span>IPv4 Conversations
</span></span><span style="display:flex;"><span>Filter:&lt;No Filter&gt;
</span></span><span style="display:flex;"><span> | &lt;- | | -&gt; | | Total | Relative | Duration |
</span></span><span style="display:flex;"><span> | Frames Bytes | | Frames Bytes | | Frames Bytes | Start | |
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 17.253.37.195 <span style="color:#ae81ff">19588</span> <span style="color:#ae81ff">29</span> MB <span style="color:#ae81ff">3912</span> <span style="color:#ae81ff">286</span> kB <span style="color:#ae81ff">23500</span> <span style="color:#ae81ff">29</span> MB 72.555738000 21.8560
</span></span><span style="display:flex;"><span>192.168.50.1 &lt;-&gt; 192.168.50.202 <span style="color:#ae81ff">239</span> <span style="color:#ae81ff">74</span> kB <span style="color:#ae81ff">238</span> <span style="color:#ae81ff">46</span> kB <span style="color:#ae81ff">477</span> <span style="color:#ae81ff">120</span> kB 0.293866000 119.4797
</span></span><span style="display:flex;"><span>192.168.50.1 &lt;-&gt; 224.0.0.251 <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> bytes <span style="color:#ae81ff">118</span> <span style="color:#ae81ff">28</span> kB <span style="color:#ae81ff">118</span> <span style="color:#ae81ff">28</span> kB 0.000000000 119.7310
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 1.1.1.1 <span style="color:#ae81ff">40</span> <span style="color:#ae81ff">20</span> kB <span style="color:#ae81ff">36</span> <span style="color:#ae81ff">10</span> kB <span style="color:#ae81ff">76</span> <span style="color:#ae81ff">31</span> kB 72.033321000 30.3367
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 2.19.120.151 <span style="color:#ae81ff">47</span> <span style="color:#ae81ff">44</span> kB <span style="color:#ae81ff">29</span> 8,460 bytes <span style="color:#ae81ff">76</span> <span style="color:#ae81ff">53</span> kB 72.062807000 14.8525
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 17.56.138.35 <span style="color:#ae81ff">27</span> 7,602 bytes <span style="color:#ae81ff">33</span> <span style="color:#ae81ff">13</span> kB <span style="color:#ae81ff">60</span> <span style="color:#ae81ff">20</span> kB 72.107270000 15.0196
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 17.253.53.203 <span style="color:#ae81ff">17</span> 7,040 bytes <span style="color:#ae81ff">23</span> 9,256 bytes <span style="color:#ae81ff">40</span> <span style="color:#ae81ff">16</span> kB 72.326823000 10.5130
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 54.217.122.41 <span style="color:#ae81ff">19</span> 6,271 bytes <span style="color:#ae81ff">18</span> 6,122 bytes <span style="color:#ae81ff">37</span> <span style="color:#ae81ff">12</span> kB 102.352119000 0.3678
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 17.253.53.202 <span style="color:#ae81ff">19</span> <span style="color:#ae81ff">22</span> kB <span style="color:#ae81ff">17</span> 3,099 bytes <span style="color:#ae81ff">36</span> <span style="color:#ae81ff">25</span> kB 81.940717000 0.3208
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 23.58.105.122 <span style="color:#ae81ff">19</span> 9,936 bytes <span style="color:#ae81ff">16</span> 5,759 bytes <span style="color:#ae81ff">35</span> <span style="color:#ae81ff">15</span> kB 72.225431000 9.6434
</span></span><span style="display:flex;"><span>192.168.50.104 &lt;-&gt; 255.255.255.255 <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> bytes <span style="color:#ae81ff">32</span> 2,240 bytes <span style="color:#ae81ff">32</span> 2,240 bytes 50.628126000 65.2664
</span></span><span style="display:flex;"><span>17.242.218.132 &lt;-&gt; 192.168.50.202 <span style="color:#ae81ff">12</span> 1,701 bytes <span style="color:#ae81ff">13</span> 1,802 bytes <span style="color:#ae81ff">25</span> 3,503 bytes 20.967857000 62.0463
</span></span><span style="display:flex;"><span>192.168.50.189 &lt;-&gt; 3.122.71.119 <span style="color:#ae81ff">8</span> <span style="color:#ae81ff">639</span> bytes <span style="color:#ae81ff">13</span> <span style="color:#ae81ff">978</span> bytes <span style="color:#ae81ff">21</span> 1,617 bytes 1.112174000 108.8174
</span></span><span style="display:flex;"><span>192.168.50.131 &lt;-&gt; 224.0.0.251 <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> bytes <span style="color:#ae81ff">20</span> 6,092 bytes <span style="color:#ae81ff">20</span> 6,092 bytes 19.033978000 79.6932
</span></span><span style="display:flex;"><span>192.168.50.118 &lt;-&gt; 224.0.0.251 <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> bytes <span style="color:#ae81ff">20</span> 6,092 bytes <span style="color:#ae81ff">20</span> 6,092 bytes 79.030835000 19.7664
</span></span><span style="display:flex;"><span>192.168.50.233 &lt;-&gt; 224.0.0.251 <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> bytes <span style="color:#ae81ff">20</span> 6,052 bytes <span style="color:#ae81ff">20</span> 6,052 bytes 79.031250000 19.7814
</span></span><span style="display:flex;"><span>192.168.50.196 &lt;-&gt; 18.196.19.65 <span style="color:#ae81ff">8</span> <span style="color:#ae81ff">570</span> bytes <span style="color:#ae81ff">10</span> <span style="color:#ae81ff">678</span> bytes <span style="color:#ae81ff">18</span> 1,248 bytes 4.963201000 107.5242
</span></span><span style="display:flex;"><span>192.168.50.216 &lt;-&gt; 224.0.0.251 <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> bytes <span style="color:#ae81ff">12</span> 3,880 bytes <span style="color:#ae81ff">12</span> 3,880 bytes 98.049857000 4.2949
</span></span><span style="display:flex;"><span>192.168.50.134 &lt;-&gt; 161.117.178.131 <span style="color:#ae81ff">5</span> <span style="color:#ae81ff">391</span> bytes <span style="color:#ae81ff">4</span> <span style="color:#ae81ff">960</span> bytes <span style="color:#ae81ff">9</span> 1,351 bytes 15.392290000 60.5936
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 192.168.50.189 <span style="color:#ae81ff">4</span> 1,300 bytes <span style="color:#ae81ff">4</span> <span style="color:#ae81ff">312</span> bytes <span style="color:#ae81ff">8</span> 1,612 bytes 26.274469000 93.2919
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 192.168.50.118 <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">406</span> bytes <span style="color:#ae81ff">4</span> <span style="color:#ae81ff">402</span> bytes <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">808</span> bytes 17.999757000 60.1593
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 192.168.50.131 <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">406</span> bytes <span style="color:#ae81ff">4</span> <span style="color:#ae81ff">402</span> bytes <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">808</span> bytes 17.999812000 60.1593
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 192.168.50.233 <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">406</span> bytes <span style="color:#ae81ff">4</span> <span style="color:#ae81ff">402</span> bytes <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">808</span> bytes 17.999825000 60.1592
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 192.168.50.196 <span style="color:#ae81ff">3</span> <span style="color:#ae81ff">975</span> bytes <span style="color:#ae81ff">3</span> <span style="color:#ae81ff">234</span> bytes <span style="color:#ae81ff">6</span> 1,209 bytes 30.223646000 89.3442
</span></span><span style="display:flex;"><span>192.168.50.216 &lt;-&gt; 192.168.50.233 <span style="color:#ae81ff">4</span> <span style="color:#ae81ff">888</span> bytes <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">162</span> bytes <span style="color:#ae81ff">6</span> 1,050 bytes 98.322145000 0.1456
</span></span><span style="display:flex;"><span>192.168.50.216 &lt;-&gt; 192.168.50.202 <span style="color:#ae81ff">1</span> 1,092 bytes <span style="color:#ae81ff">4</span> <span style="color:#ae81ff">336</span> bytes <span style="color:#ae81ff">5</span> 1,428 bytes 98.319211000 0.2939
</span></span><span style="display:flex;"><span>192.168.50.216 &lt;-&gt; 192.168.50.1 <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> bytes <span style="color:#ae81ff">5</span> <span style="color:#ae81ff">455</span> bytes <span style="color:#ae81ff">5</span> <span style="color:#ae81ff">455</span> bytes 98.319329000 0.2505
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 17.253.53.201 <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">148</span> bytes <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">132</span> bytes <span style="color:#ae81ff">4</span> <span style="color:#ae81ff">280</span> bytes 81.716483000 1.0465
</span></span><span style="display:flex;"><span>192.168.50.202 &lt;-&gt; 192.168.50.104 <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">818</span> bytes <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">156</span> bytes <span style="color:#ae81ff">4</span> <span style="color:#ae81ff">974</span> bytes 87.030561000 0.0107
</span></span><span style="display:flex;"><span>192.168.50.216 &lt;-&gt; 192.168.50.131 <span style="color:#ae81ff">3</span> <span style="color:#ae81ff">718</span> bytes <span style="color:#ae81ff">1</span> <span style="color:#ae81ff">75</span> bytes <span style="color:#ae81ff">4</span> <span style="color:#ae81ff">793</span> bytes 98.321918000 0.1421
</span></span><span style="display:flex;"><span>192.168.50.216 &lt;-&gt; 192.168.50.118 <span style="color:#ae81ff">3</span> <span style="color:#ae81ff">718</span> bytes <span style="color:#ae81ff">1</span> <span style="color:#ae81ff">75</span> bytes <span style="color:#ae81ff">4</span> <span style="color:#ae81ff">793</span> bytes 98.322266000 0.1420
</span></span><span style="display:flex;"><span>192.168.50.216 &lt;-&gt; 17.57.146.25 <span style="color:#ae81ff">1</span> <span style="color:#ae81ff">90</span> bytes <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">172</span> bytes <span style="color:#ae81ff">3</span> <span style="color:#ae81ff">262</span> bytes 98.048979000 0.0384
</span></span><span style="display:flex;"><span>192.168.50.216 &lt;-&gt; 192.168.50.134 <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">790</span> bytes <span style="color:#ae81ff">1</span> <span style="color:#ae81ff">75</span> bytes <span style="color:#ae81ff">3</span> <span style="color:#ae81ff">865</span> bytes 98.321779000 0.2550
</span></span><span style="display:flex;"><span>192.168.50.216 &lt;-&gt; 224.0.0.2 <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> bytes <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">92</span> bytes <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">92</span> bytes 98.049757000 0.0001
</span></span><span style="display:flex;"><span>192.168.50.216 &lt;-&gt; 10.172.72.196 <span style="color:#ae81ff">1</span> <span style="color:#ae81ff">66</span> bytes <span style="color:#ae81ff">1</span> <span style="color:#ae81ff">70</span> bytes <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">136</span> bytes 98.664295000 0.0060
</span></span><span style="display:flex;"><span><span style="color:#f92672">================================================================================</span>
</span></span></code></pre></div><ul>
<li>Fast “top talkers” table (by source IP)</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span> tshark -r iot_ap_120s.pcap -T fields -e ip.src -e frame.len <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span> | awk <span style="color:#e6db74">&#39;NF==2{b[$1]+=$2} END{for (h in b) printf &#34;%-16s %12d\n&#34;, h, b[h]}&#39;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span> | sort -k2,2nr | head -n <span style="color:#ae81ff">20</span>
</span></span><span style="display:flex;"><span>17.253.37.195 <span style="color:#ae81ff">29540349</span>
</span></span><span style="display:flex;"><span>192.168.50.202 <span style="color:#ae81ff">422414</span>
</span></span><span style="display:flex;"><span>192.168.50.1 <span style="color:#ae81ff">75521</span>
</span></span><span style="display:flex;"><span>2.19.120.151 <span style="color:#ae81ff">44554</span>
</span></span><span style="display:flex;"><span>17.253.53.202 <span style="color:#ae81ff">22016</span>
</span></span><span style="display:flex;"><span>1.1.1.1 <span style="color:#ae81ff">20675</span>
</span></span><span style="display:flex;"><span>23.58.105.122 <span style="color:#ae81ff">9936</span>
</span></span><span style="display:flex;"><span>17.56.138.35 <span style="color:#ae81ff">7602</span>
</span></span><span style="display:flex;"><span>192.168.50.233 <span style="color:#ae81ff">7346</span>
</span></span><span style="display:flex;"><span>192.168.50.118 <span style="color:#ae81ff">7216</span>
</span></span><span style="display:flex;"><span>192.168.50.131 <span style="color:#ae81ff">7216</span>
</span></span><span style="display:flex;"><span>17.253.53.203 <span style="color:#ae81ff">7040</span>
</span></span><span style="display:flex;"><span>54.217.122.41 <span style="color:#ae81ff">6271</span>
</span></span><span style="display:flex;"><span>192.168.50.216 <span style="color:#ae81ff">5392</span>
</span></span><span style="display:flex;"><span>192.168.50.104 <span style="color:#ae81ff">3058</span>
</span></span><span style="display:flex;"><span>192.168.50.189 <span style="color:#ae81ff">2278</span>
</span></span><span style="display:flex;"><span>17.242.218.132 <span style="color:#ae81ff">1802</span>
</span></span><span style="display:flex;"><span>192.168.50.134 <span style="color:#ae81ff">1750</span>
</span></span><span style="display:flex;"><span>192.168.50.196 <span style="color:#ae81ff">1653</span>
</span></span><span style="display:flex;"><span>3.122.71.119 <span style="color:#ae81ff">639</span>
</span></span></code></pre></div><ul>
<li>DNS &amp; mDNS highlights (what names show up?)</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># DNS queries (unicast)</span>
</span></span><span style="display:flex;"><span> tshark -r iot_ap_120s.pcap -Y <span style="color:#e6db74">&#34;dns.flags.response==0&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span> -T fields -e frame.time -e ip.src -e dns.qry.name | head -n <span style="color:#ae81ff">20</span>
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:38.131162000 CET 192.168.50.1 _hap._tcp.local,_rdlink._tcp.local,_companion-link._tcp.local,_hap._udp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:42.961690000 CET 192.168.50.1 _hap._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:42.962245000 CET 192.168.50.1 _companion-link._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:42.962911000 CET 192.168.50.1 _hap._udp.local,_rdlink._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:43.098378000 CET 192.168.50.1 MSS110-f691._hap._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:43.158641000 CET 192.168.50.1 Qingping Air Monitor Lite._hap._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:43.201440000 CET 192.168.50.202 _companion-link._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:43.532623000 CET 192.168.50.1 MSS110-080d._hap._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:43.962673000 CET 192.168.50.1 _hap._tcp.local,MSS110-0ba7._hap._tcp.local,Main Bedroom <span style="color:#f92672">(</span>3<span style="color:#f92672">)</span>._companion-link._tcp.local,HomePodSensor 185277._hap._tcp.local,_rdlink._tcp.local,_companion-link._tcp.local,_hap._udp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:49.110167000 CET 192.168.50.1 _hap._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:49.110760000 CET 192.168.50.1 _companion-link._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:49.111395000 CET 192.168.50.1 _hap._udp.local,_rdlink._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:49.272920000 CET 192.168.50.1 Qingping Air Monitor Lite._hap._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:49.311002000 CET 192.168.50.1 MSS110-0ba7._hap._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:49.619376000 CET 192.168.50.1 Main Bedroom <span style="color:#f92672">(</span>3<span style="color:#f92672">)</span>._companion-link._tcp.local,MSS110-f691._hap._tcp.local,MSS110-080d._hap._tcp.local,HomePodSensor 185277._hap._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:50.115506000 CET 192.168.50.1 _hap._tcp.local,_rdlink._tcp.local,_companion-link._tcp.local,_hap._udp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:55.037844000 CET 192.168.50.1 _hap._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:55.038380000 CET 192.168.50.1 _companion-link._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:55.038926000 CET 192.168.50.1 _hap._udp.local,_rdlink._tcp.local
</span></span><span style="display:flex;"><span>Nov 23, <span style="color:#ae81ff">2025</span> 11:48:55.060503000 CET 192.168.50.202 _companion-link._tcp.local
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># mDNS service announcements (AirPlay/HomeKit live here)</span>
</span></span><span style="display:flex;"><span> tshark -r iot_ap_120s.pcap -Y <span style="color:#e6db74">&#34;udp.port==5353 &amp;&amp; dns&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span> -T fields -e frame.time -e ip.src -e dns.qry.name -e dns.ptr.domain_name <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span> | head -n <span style="color:#ae81ff">30</span>
</span></span></code></pre></div><p>The latter had no output as I wasn&rsquo;t able to make that work with a static route and relied on Tailscale. (?)</p>
<ul>
<li>TLS SNI (which cloud endpoints?)</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span> tshark -r iot_ap_120s.pcap -Y <span style="color:#e6db74">&#34;tls.handshake.extensions_server_name&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span> -T fields -e ip.dst -e tls.handshake.extensions_server_name <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span> | sort | uniq -c | sort -k1,1nr | head -n <span style="color:#ae81ff">20</span>
</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">1</span> 1.1.1.1 one.one.one.one
</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">1</span> 17.253.37.195 streamingaudio.itunes.apple.com
</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">1</span> 17.253.53.202 pancake.apple.com
</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">1</span> 17.253.53.203 radio-activity.itunes.apple.com
</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">1</span> 17.56.138.35 cma.itunes.apple.com
</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">1</span> 2.19.120.151 play.itunes.apple.com
</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">1</span> 23.58.105.122 librarydaap.itunes.apple.com
</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">1</span> 54.217.122.41 guzzoni.apple.com
</span></span></code></pre></div><ul>
<li>Ports in use (quick heat check)</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span> tshark -r iot_ap_120s.pcap -T fields -e _ws.col.Protocol -e tcp.dstport -e udp.dstport <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span> | awk <span style="color:#e6db74">&#39;{for(i=1;i&lt;=NF;i++) if($i~/^[0-9]+$/) p[$i]++} END{for(k in p) printf &#34;%-8s %8d\n&#34;, k, p[k]}&#39;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span> | sort -k2,2nr | head -n <span style="color:#ae81ff">20</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">64725</span> <span style="color:#ae81ff">19588</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">443</span> <span style="color:#ae81ff">4086</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">5353</span> <span style="color:#ae81ff">318</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">49395</span> <span style="color:#ae81ff">109</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">7000</span> <span style="color:#ae81ff">109</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">55514</span> <span style="color:#ae81ff">102</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">55510</span> <span style="color:#ae81ff">101</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">64721</span> <span style="color:#ae81ff">47</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">54806</span> <span style="color:#ae81ff">40</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">20002</span> <span style="color:#ae81ff">32</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">64722</span> <span style="color:#ae81ff">27</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">8883</span> <span style="color:#ae81ff">23</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">49154</span> <span style="color:#ae81ff">21</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">55515</span> <span style="color:#ae81ff">21</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">64723</span> <span style="color:#ae81ff">19</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">64728</span> <span style="color:#ae81ff">19</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">64729</span> <span style="color:#ae81ff">19</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">5223</span> <span style="color:#ae81ff">14</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">64724</span> <span style="color:#ae81ff">14</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">64686</span> <span style="color:#ae81ff">13</span>
</span></span></code></pre></div><hr>
<h2 id="epilogue">Epilogue<a hidden class="anchor" aria-hidden="true" href="#epilogue">#</a></h2>
<p>I&rsquo;ve been having so so much trouble with setting up a iot-hub for my house where I can connect all my IoT devices to, and without putting a phone on hotspot. Now I finally did it, and I even treated myself by allowing mDNS routing! Let&rsquo;s cross our fingers and hope this setup finally works nicely.</p>
<hr>
<div class="signature-block" style="margin-top:1rem">
<p><strong>Downloads:</strong>
<a href="/sources/posts/house_upgrade.md">Markdown</a> ·
<a href="/sources/posts/house_upgrade.md.asc">Signature (.asc)</a>
</p><details class="signature">
<summary>View OpenPGP signature</summary>
<pre style="font-size:0.85em; overflow-x:auto; padding:0.75rem;">-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEVaKl3oR5K6zGyu4/tYgoUOBMjSoFAmpkbuUACgkQtYgoUOBM
jSr4mxAAr6wizjfSiJPTCywZaFD7DpF1QqVL5N2r7&#43;W6iPkxjXU5ju4yaRyJ3LGP
ob51GUAPqSstrTZUJRIQs54MQMqL0WNBiesVSDXlT&#43;cqAgRVN4SaYrRg&#43;dV&#43;kRCA
dnFuXXJBvo9y/QYk&#43;SR4F2I9SeqsOQ2V0H2SxndLQAVI318VRbJLwaZF5XHLU8Ax
a/&#43;sOpjI2bGgTCW6P2r97PaXyde9Itkdp0LBN2JfkXfmzdY1JdjPdaNmUZuY3N6J
HO4MfBUYX33RLmq/CSDm5wzOQRi1O9wt63CWJzzsZuZACbmuJ0gZHYM5JIBHXtnZ
wgdtfu31ulnFPVfoIVjCCcN80kWlh671ONKQTZOysknFonm5pIUJnOcCQ4S3HfIm
Of5kojUQegInp84ju4yYKCMh115yB05XTyrhf62NouGQVGSBmNBwgFZe4kbfqZ4w
xsAfFOpk6niLqZTX1NmgaXeBcalFU2yOzIEH4dXu7OSZmN3UUznAxw4SciD0&#43;HW&#43;
T7RjrniAIgX3fFlqIexoDbCa6T2g8Gd00zBzHG65pO4mwAuFL4KB0xLU8KIz6L7M
aMFcFVAuq8GdqBbn6mRQ3UwFkOIjq&#43;WbAgvxDJprxI9jBafm6IVXrISyHx0mYfnP
OAFDAL768GiHQz7LIB/lLa0qAT6Hs28JZ3/czfGPwVNthFp8tA0=
=bk46
-----END PGP SIGNATURE-----
</pre>
</details><p><em>Verify locally:</em></p>
<pre style="font-size:0.85em; overflow-x:auto; padding:0.75rem;">torsocks curl -fSLO http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/sources/posts/house_upgrade.md
torsocks curl -fSLO http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/sources/posts/house_upgrade.md.asc
gpg --verify house_upgrade.md.asc house_upgrade.md
</pre>
</div>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/raspberry-pi/">Raspberry Pi</a></li>
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/wifi/">Wifi</a></li>
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/iot/">Iot</a></li>
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/networking/">Networking</a></li>
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/hostapd/">Hostapd</a></li>
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/dnsmasq/">Dnsmasq</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/phd_journey/november_2025/">
<span class="title">« Prev</span>
<br>
<span>November &#39;25</span>
</a>
<a class="next" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/loop_of_doom/">
<span class="title">Next »</span>
<br>
<span>The Loop of Doom</span>
</a>
</nav>
</footer><div class="comments-switch" style="display:flex;gap:.5rem;margin:.5rem 0 1rem;">
<button id="btn-isso" type="button" aria-pressed="true">Anonymous (Isso)</button>
<button id="btn-giscus" type="button" aria-pressed="false">GitHub (Giscus)</button>
<a href="https://github.com/AlipourIm/blog-comments/discussions/categories/comments" target="_blank" rel="noopener">Open on GitHub ↗</a>
</div>
<div id="panel-giscus" style="display:none">
<section id="giscus-thread"></section>
</div>
<div id="panel-isso">
<section id="isso-thread"
data-isso-id="/posts/house_upgrade/"
data-title="I Beat My 8-Device Wi-Fi Limit with a Raspberry Pi (and Made an IoT Village)">
<noscript>Javascript needs to be activated to view comments.</noscript>
</section>
<script
src="/isso/js/embed.min.js"
data-isso="/isso/"
data-isso-css="false"
data-isso-lang="en"
data-isso-max-comments-nested="5"
data-isso-sorting="newest"
async>
</script>
<small class="isso-powered" style="display:block;margin:.5rem 0;color:var(--secondary,#888)">
Comments powered by <a href="https://isso-comments.de" target="_blank" rel="noopener">Isso</a>
</small>
</div>
<script>
(function () {
var panelIsso = document.getElementById('panel-isso');
var panelGisc = document.getElementById('panel-giscus');
var issoBtn = document.getElementById('btn-isso');
var giscBtn = document.getElementById('btn-giscus');
var gLoaded = false;
function isDark() {
var pref = localStorage.getItem('pref-theme');
if (pref === 'dark') return true;
if (pref === 'light') return false;
var html = document.documentElement, body = document.body;
if (
(html.classList && html.classList.contains('dark')) ||
(body.classList && body.classList.contains('dark')) ||
html.getAttribute('data-theme') === 'dark' ||
body.getAttribute('data-theme') === 'dark' ||
(html.classList && html.classList.contains('theme-dark')) ||
(body.classList && body.classList.contains('theme-dark'))
) return true;
return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
}
function gTheme(){ return isDark() ? 'dark_dimmed' : 'noborder_light'; }
function loadGiscus() {
if (gLoaded) return;
var s = document.createElement('script');
s.src = 'https://giscus.app/client.js';
s.async = true;
s.crossOrigin = 'anonymous';
s.setAttribute('data-repo','AlipourIm/blog-comments');
s.setAttribute('data-repo-id','R_kgDOQGARyA');
s.setAttribute('data-category','Comments');
s.setAttribute('data-category-id','DIC_kwDOQGARyM4Cw3x-');
s.setAttribute('data-mapping','pathname');
s.setAttribute('data-strict','0');
s.setAttribute('data-reactions-enabled','1');
s.setAttribute('data-emit-metadata','0');
s.setAttribute('data-input-position','bottom');
s.setAttribute('data-lang','en');
s.setAttribute('data-theme', gTheme());
document.getElementById('giscus-thread').appendChild(s);
function reTheme(){
var iframe = document.querySelector('iframe.giscus-frame');
if (iframe && iframe.contentWindow) {
iframe.contentWindow.postMessage(
{ giscus: { setConfig: { theme: gTheme() } } },
'https://giscus.app'
);
}
}
var tbtn = document.getElementById('theme-toggle');
if (tbtn) tbtn.addEventListener('click', function(){ setTimeout(reTheme, 0); });
var mo = new MutationObserver(function(){ reTheme(); });
mo.observe(document.documentElement, { attributes:true, attributeFilter:['class','data-theme'] });
mo.observe(document.body, { attributes:true, attributeFilter:['class','data-theme'] });
gLoaded = true;
}
function show(which) {
var showIsso = which === 'isso';
panelIsso.style.display = showIsso ? 'block' : 'none';
panelGisc.style.display = showIsso ? 'none' : 'block';
if (issoBtn) issoBtn.setAttribute('aria-pressed', showIsso ? 'true' : 'false');
if (giscBtn) giscBtn.setAttribute('aria-pressed', showIsso ? 'false' : 'true');
if (!showIsso) loadGiscus();
}
if (issoBtn) issoBtn.addEventListener('click', function(e){ e.preventDefault(); show('isso'); });
if (giscBtn) giscBtn.addEventListener('click', function(e){ e.preventDefault(); show('giscus'); });
show('isso');
})();
</script>
</article>
</main>
<footer class="footer">
<span>&copy; 2026 <a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/">AlipourIm journeys</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<div class="site-meta-row" style="display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;">
<a href="/index.xml" rel="alternate" type="application/rss+xml" title="RSS"
class="rss-link" style="display:inline-flex;align-items:center;gap:.35rem;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round">
<path d="M4 11a9 9 0 0 1 9 9" />
<path d="M4 4a16 16 0 0 1 16 16" />
<circle cx="5" cy="19" r="1" />
</svg>
<span>RSS</span>
</a>
<span aria-hidden="true">·</span>
<span>Visitors this week: <span id="gc_site_visitors_week"></span></span>
</div>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>