extracted eraser svgs to logical, physical and combined

This commit is contained in:
Brian Pooe 2026-03-22 16:42:24 +02:00
parent a214436b8d
commit a7207a3e90
5 changed files with 93 additions and 258 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.3 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.3 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.3 MiB

View file

@ -1,252 +0,0 @@
<mxfile host="drawio.home.brianpooe.com" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36" compressed="false" version="29.6.4" pages="2">
<diagram id="homelab-physical" name="Home Network (Physical Zones)">
<mxGraphModel dx="2043" dy="1868" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2400" pageHeight="1400" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="t1" parent="1" style="text;html=1;align=left;verticalAlign=top;fontSize=28;fontStyle=1;" value="Homelab Physical Topology (Template-Inspired)" vertex="1">
<mxGeometry height="40" width="1000" x="30" y="20" as="geometry" />
</mxCell>
<mxCell id="zone_wan" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=none;fillColor=#f8cecc;strokeColor=#b85450;opacity=60;container=1;collapsible=0;dashed=1;dashPattern=1 4;align=right;verticalAlign=top;spacingRight=-95;spacingTop=-16;fontColor=#330000;labelPosition=left;verticalLabelPosition=bottom;" value="WAN / Internet Edge" vertex="1">
<mxGeometry height="240" width="430" x="30" y="100" as="geometry" />
</mxCell>
<mxCell id="zone_core" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=65;container=1;collapsible=0;dashed=1;dashPattern=1 4;align=right;verticalAlign=top;spacingRight=-70;spacingTop=-16;fontColor=#001933;labelPosition=left;verticalLabelPosition=bottom;" value="Routing Core" vertex="1">
<mxGeometry height="240" width="520" x="500" y="100" as="geometry" />
</mxCell>
<mxCell id="zone_dist" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=none;fillColor=#d5e8d4;strokeColor=#82b366;opacity=65;container=1;collapsible=0;dashed=1;dashPattern=1 4;align=right;verticalAlign=top;spacingRight=-75;spacingTop=-16;fontColor=#003300;labelPosition=left;verticalLabelPosition=bottom;" value="Distribution" vertex="1">
<mxGeometry height="240" width="520" x="1060" y="100" as="geometry" />
</mxCell>
<mxCell id="zone_wifi" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=none;fillColor=#e1d5e7;strokeColor=#9673a6;opacity=60;container=1;collapsible=0;dashed=1;dashPattern=1 4;align=right;verticalAlign=top;spacingRight=-105;spacingTop=-16;fontColor=#330066;labelPosition=left;verticalLabelPosition=bottom;" value="Wi-Fi Client Zones" vertex="1">
<mxGeometry height="430" width="740" x="1610" y="60" as="geometry" />
</mxCell>
<mxCell id="zone_media" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=none;fillColor=#ffe6cc;strokeColor=#d79b00;opacity=65;container=1;collapsible=0;dashed=1;dashPattern=1 4;align=right;verticalAlign=top;spacingRight=-90;spacingTop=-16;fontColor=#663300;labelPosition=left;verticalLabelPosition=bottom;" value="Media Segment" vertex="1">
<mxGeometry height="270" width="520" x="1060" y="450" as="geometry" />
</mxCell>
<mxCell id="tlsg108" parent="zone_media" style="fillColorStyles=neutralFill;neutralFill=#9DA6A8;shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#FFFFFF;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.hub;network2IconW=1;network2IconH=0.30;labelBackgroundColor=none;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;spacingTop=6;fontSize=11;" value="TL-SG108" vertex="1">
<mxGeometry height="100" width="180" x="110" y="100" as="geometry" />
</mxCell>
<mxCell id="media_console" parent="zone_media" style="shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.gamepad;network2IconW=1;network2IconH=0.74;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=10;" value="Apple TV / Console" vertex="1">
<mxGeometry height="100" width="145" x="340" y="160" as="geometry" />
</mxCell>
<mxCell id="e10" edge="1" parent="zone_media" source="tlsg108" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;exitX=1;exitY=0.70;exitDx=0;exitDy=0;entryX=0;entryY=0.60;entryDx=0;entryDy=0;" target="media_console">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="zone_office" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=none;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=60;container=1;collapsible=0;dashed=1;dashPattern=1 4;align=right;verticalAlign=top;spacingRight=-125;spacingTop=-16;fontColor=#001933;labelPosition=left;verticalLabelPosition=bottom;" value="Office / Homelab Devices" vertex="1">
<mxGeometry height="420" width="740" x="1610" y="530" as="geometry" />
</mxCell>
<mxCell id="zone_services" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=none;fillColor=#f8cecc;strokeColor=#b85450;opacity=60;container=1;collapsible=0;dashed=1;dashPattern=1 4;align=right;verticalAlign=top;spacingRight=-95;spacingTop=-16;fontColor=#330000;labelPosition=left;verticalLabelPosition=bottom;" value="Core Services" vertex="1">
<mxGeometry height="270" width="520" x="500" y="380" as="geometry" />
</mxCell>
<mxCell id="pi" parent="zone_services" style="fillColorStyles=neutralFill;neutralFill=#9DA6A8;shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#660000;gradientColor=none;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.server;network2IconW=1;network2IconH=0.58;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=10;fontColor=#660000;" value="Raspberry Pi 4 (2GB)&#xa;Technitium DNS/AdBlock" vertex="1">
<mxGeometry height="120" width="160" x="220" y="85" as="geometry" />
</mxCell>
<mxCell id="internet" parent="1" style="shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.globe;network2IconW=1;network2IconH=1;labelBackgroundColor=none;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;fontSize=10;" value="Internet" vertex="1">
<mxGeometry height="95" width="95" x="70" y="165" as="geometry" />
</mxCell>
<mxCell id="ont" parent="1" style="fillColorStyles=neutralFill;neutralFill=#9DA6A8;shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.modem;network2IconW=1;network2IconH=0.30;labelBackgroundColor=none;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;spacingTop=6;fontSize=11;" value="Calix GigaPoint 803G&#xa;ONT" vertex="1">
<mxGeometry height="90" width="170" x="220" y="168" as="geometry" />
</mxCell>
<mxCell id="pfsense" parent="1" style="shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#660000;gradientColor=none;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.firewall;network2IconW=1;network2IconH=0.62;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=11;" value="Netgate 1100&#xa;pfSense" vertex="1">
<mxGeometry height="95" width="140" x="670" y="163" as="geometry" />
</mxCell>
<mxCell id="usw" parent="1" style="fillColorStyles=neutralFill;neutralFill=#9DA6A8;shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#FFFFFF;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.hub;network2IconW=1;network2IconH=0.30;labelBackgroundColor=none;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;spacingTop=6;fontSize=11;" value="UB-USW-LITE-8-POE" vertex="1">
<mxGeometry height="100" width="190" x="1210" y="160" as="geometry" />
</mxCell>
<mxCell id="u6" parent="1" style="fillColorStyles=neutralFill;neutralFill=#9DA6A8;shape=mxgraph.networks2.icon;aspect=fixed;fillColor=none;strokeColor=#006600;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.wireless_hub;network2IconW=1;network2IconH=0.55;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;spacingTop=6;fontColor=#006600;labelBackgroundColor=none;fontSize=11;" value="UniFi U6 LR&#xa;Managed AP" vertex="1">
<mxGeometry height="110" width="170" x="1700" y="115" as="geometry" />
</mxCell>
<mxCell id="family_client" parent="1" style="shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.mobile_phone;network2IconW=0.55;network2IconH=1;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=10;" value="Family" vertex="1">
<mxGeometry height="110" width="95" x="1935" y="248" as="geometry" />
</mxCell>
<mxCell id="guest_client" parent="1" style="shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.laptop;network2IconW=1;network2IconH=0.57;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=10;" value="Guest" vertex="1">
<mxGeometry height="90" width="110" x="2080" y="252" as="geometry" />
</mxCell>
<mxCell id="iot_client" parent="1" style="shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.monitor;network2IconW=1;network2IconH=0.75;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=10;" value="IoT" vertex="1">
<mxGeometry height="100" width="110" x="2220" y="248" as="geometry" />
</mxCell>
<mxCell id="media_tv" parent="1" style="shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.monitor;network2IconW=1;network2IconH=0.75;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=10;" value="TV" vertex="1">
<mxGeometry height="100" width="105" x="1430" y="445" as="geometry" />
</mxCell>
<mxCell id="tlsg1016" parent="1" style="fillColorStyles=neutralFill;neutralFill=#9DA6A8;shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#FFFFFF;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.hub;network2IconW=1;network2IconH=0.30;labelBackgroundColor=none;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;spacingTop=6;fontSize=11;" value="TL-SG1016DE" vertex="1">
<mxGeometry height="100" width="180" x="1710" y="595" as="geometry" />
</mxCell>
<mxCell id="nuc" parent="1" style="fillColorStyles=neutralFill;neutralFill=#9DA6A8;shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.server;network2IconW=1;network2IconH=0.58;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=10;" value="Intel NUC" vertex="1">
<mxGeometry height="100" width="120" x="1940" y="585" as="geometry" />
</mxCell>
<mxCell id="ds920" parent="1" style="fillColorStyles=neutralFill;neutralFill=#9DA6A8;shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.external_storage;network2IconW=1;network2IconH=0.80;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=10;" value="Synology DS920+" vertex="1">
<mxGeometry height="105" width="130" x="2080" y="585" as="geometry" />
</mxCell>
<mxCell id="macmini" parent="1" style="shape=mxgraph.networks2.icon;aspect=fixed;fillColor=none;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.pc;network2IconW=1;network2IconH=0.71;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=10;" value="Mac mini" vertex="1">
<mxGeometry height="100" width="120" x="1940" y="715" as="geometry" />
</mxCell>
<mxCell id="otherinfra" parent="1" style="fillColorStyles=neutralFill;neutralFill=#9DA6A8;shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#000000;gradientColor=#5B6163;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.server;network2IconW=1;network2IconH=0.58;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=10;" value="Other Office Infra" vertex="1">
<mxGeometry height="100" width="130" x="2080" y="715" as="geometry" />
</mxCell>
<mxCell id="legend" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;align=left;verticalAlign=top;spacingLeft=10;spacingTop=8;fontSize=12;" value="Legend&#xa;Dashed containers: zone boundaries&#xa;Black links: physical wired links&#xa;Purple dashed links: wireless client associations&#xa;Red-accent node: DNS/AdBlock device" vertex="1">
<mxGeometry height="160" width="620" x="40" y="980" as="geometry" />
</mxCell>
<mxCell id="e1" edge="1" parent="1" source="internet" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;" target="ont">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e2" edge="1" parent="1" source="ont" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;" target="pfsense">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e3" edge="1" parent="1" source="pfsense" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;" target="usw">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e4" edge="1" parent="1" source="usw" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;" target="u6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e5" edge="1" parent="1" source="u6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;dashPattern=1 2;strokeColor=#9673a6;strokeWidth=2.2;endSize=10;endArrow=block;endFill=0;exitX=1;exitY=0.35;exitDx=0;exitDy=0;entryX=0;entryY=0.35;entryDx=0;entryDy=0;" target="family_client">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e6" edge="1" parent="1" source="u6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;dashPattern=1 2;strokeColor=#9673a6;strokeWidth=2.2;endSize=10;endArrow=block;endFill=0;exitX=1;exitY=0.50;exitDx=0;exitDy=0;entryX=0;entryY=0.50;entryDx=0;entryDy=0;" target="guest_client">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e7" edge="1" parent="1" source="u6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;dashPattern=1 2;strokeColor=#9673a6;strokeWidth=2.2;endSize=10;endArrow=block;endFill=0;exitX=1;exitY=0.65;exitDx=0;exitDy=0;entryX=0;entryY=0.65;entryDx=0;entryDy=0;" target="iot_client">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e8" edge="1" parent="1" source="usw" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;" target="tlsg108">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e9" edge="1" parent="1" source="tlsg108" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;exitX=1;exitY=0.35;exitDx=0;exitDy=0;entryX=0;entryY=0.40;entryDx=0;entryDy=0;" target="media_tv">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e11" edge="1" parent="1" source="usw" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;" target="tlsg1016">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e12" edge="1" parent="1" source="tlsg1016" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;" target="nuc">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e13" edge="1" parent="1" source="tlsg1016" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;" target="ds920">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e14" edge="1" parent="1" source="tlsg1016" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;" target="macmini">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e15" edge="1" parent="1" source="tlsg1016" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;" target="otherinfra">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e16" edge="1" parent="1" source="usw" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;labelBackgroundColor=#ffffff;align=center;verticalAlign=middle;fontSize=10;" target="pi" value="Physical Ethernet (PoE)">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="homelab-logical" name="Home Network (Logical Policy)">
<mxGraphModel dx="1500" dy="1100" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2400" pageHeight="1400" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="lt1" value="Homelab Logical Segmentation and Access Intent" style="text;html=1;align=left;verticalAlign=top;fontSize=28;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="30" y="20" width="1050" height="40" as="geometry" />
</mxCell>
<mxCell id="l_zone_vlans" value="VLAN Segments" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#b3b3b3;dashed=1;container=1;collapsible=0;" vertex="1" parent="1">
<mxGeometry x="30" y="100" width="900" height="780" as="geometry" />
</mxCell>
<mxCell id="l_zone_policy" value="pfSense Policy Plane" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#b3b3b3;dashed=1;container=1;collapsible=0;" vertex="1" parent="1">
<mxGeometry x="970" y="100" width="620" height="430" as="geometry" />
</mxCell>
<mxCell id="l_zone_services" value="Device Anchors / Policy Notes" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#b3b3b3;dashed=1;container=1;collapsible=0;" vertex="1" parent="1">
<mxGeometry x="1630" y="100" width="730" height="780" as="geometry" />
</mxCell>
<mxCell id="office" value="Office VLAN&#xa;10.10.0.0/24" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;dashed=1;dashPattern=1 4;opacity=70;fontSize=13;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="80" y="160" width="260" height="95" as="geometry" />
</mxCell>
<mxCell id="family" value="Family VLAN&#xa;10.20.0.0/24" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;dashed=1;dashPattern=1 4;opacity=70;fontSize=13;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="370" y="160" width="260" height="95" as="geometry" />
</mxCell>
<mxCell id="iot" value="IoT VLAN&#xa;10.30.0.0/24" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;dashed=1;dashPattern=1 4;opacity=70;fontSize=13;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="660" y="160" width="240" height="95" as="geometry" />
</mxCell>
<mxCell id="media" value="Media VLAN&#xa;10.40.0.0/24" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;dashed=1;dashPattern=1 4;opacity=70;fontSize=13;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="80" y="290" width="260" height="95" as="geometry" />
</mxCell>
<mxCell id="guest" value="Guest VLAN&#xa;10.50.0.0/24" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;dashed=1;dashPattern=1 4;opacity=70;fontSize=13;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="370" y="290" width="260" height="95" as="geometry" />
</mxCell>
<mxCell id="adblock" value="AdBlock VLAN&#xa;10.60.0.0/24" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;dashed=1;dashPattern=1 4;opacity=70;fontSize=13;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="660" y="290" width="240" height="95" as="geometry" />
</mxCell>
<mxCell id="lan" value="LAN&#xa;10.1.0.0/24" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;dashed=1;dashPattern=1 4;opacity=70;fontSize=13;fontStyle=1;" vertex="1" parent="1">
<mxGeometry x="370" y="420" width="260" height="95" as="geometry" />
</mxCell>
<mxCell id="pf_icon" value="pfSense" style="shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#660000;gradientColor=none;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.firewall;network2IconW=1;network2IconH=0.62;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="1220" y="170" width="120" height="85" as="geometry" />
</mxCell>
<mxCell id="dhcp_note" value="DHCP DNS handout (pfSense backup)&#xa;clients -&gt; 10.60.0.5" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#b85450;fontSize=12;align=left;verticalAlign=top;spacingLeft=8;spacingTop=6;" vertex="1" parent="1">
<mxGeometry x="1010" y="290" width="250" height="90" as="geometry" />
</mxCell>
<mxCell id="policy_note" value="Access intent (internal segmentation)&#xa;Office: broad internal access&#xa;Family/Media: limited Office destination&#xa;IoT/Guest: no general cross-VLAN access&#xa;AdBlock: broad internal access" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#b85450;fontSize=12;align=left;verticalAlign=top;spacingLeft=8;spacingTop=6;" vertex="1" parent="1">
<mxGeometry x="1270" y="290" width="300" height="155" as="geometry" />
</mxCell>
<mxCell id="state_note" value="Validated in pfSense backup (2026-03-21)&#xa;- DNS NAT redirect active on LAN + Office + Family + IoT + Media + Guest&#xa;- Office DNS rule excludes CADDY_HOST&#xa;- Public docs use sanitized 10.x + home.example.com" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=12;align=left;verticalAlign=top;spacingLeft=8;spacingTop=6;" vertex="1" parent="1">
<mxGeometry x="1010" y="390" width="560" height="130" as="geometry" />
</mxCell>
<mxCell id="svc_dns" value="Raspberry Pi 4 (Technitium DNS)&#xa;10.60.0.5 (sanitized)" style="fillColorStyles=neutralFill;neutralFill=#9DA6A8;shape=mxgraph.networks2.icon;aspect=fixed;fillColor=#EDEDED;strokeColor=#660000;gradientColor=none;network2IconShadow=1;network2bgFillColor=none;network2Icon=mxgraph.networks2.server;network2IconW=1;network2IconH=0.58;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;labelBackgroundColor=none;fontSize=11;fontColor=#660000;" vertex="1" parent="1">
<mxGeometry x="1960" y="170" width="210" height="120" as="geometry" />
</mxCell>
<mxCell id="svc_domain" value="Reverse proxy policy note&#xa;Family/Media -&gt; limited Office destination&#xa;device node intentionally omitted" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontSize=12;align=left;verticalAlign=top;spacingLeft=8;spacingTop=6;" vertex="1" parent="1">
<mxGeometry x="1710" y="320" width="620" height="105" as="geometry" />
</mxCell>
<mxCell id="matrix" value="Access Matrix (Intent)&#xa;Office: broad internal access&#xa;Family/Media: limited Office destination (+ DNS path)&#xa;IoT/Guest: no general cross-VLAN access (+ DNS path)&#xa;AdBlock: broad internal access&#xa;Public docs are sanitized: 10.x + home.example.com" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=14;align=left;verticalAlign=top;spacingLeft=10;spacingTop=8;" vertex="1" parent="1">
<mxGeometry x="30" y="930" width="2330" height="190" as="geometry" />
</mxCell>
<mxCell id="legend2" value="Legend&#xa;Gray links: routed policy/control dependency&#xa;Green links: limited Office-destination policy&#xa;Blue dashed links: DNS dependency paths to Pi (Technitium)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=12;align=left;verticalAlign=top;spacingLeft=8;spacingTop=6;" vertex="1" parent="1">
<mxGeometry x="1710" y="450" width="620" height="95" as="geometry" />
</mxCell>
<mxCell id="le1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#666666;strokeWidth=2;endSize=11;endArrow=block;endFill=1;" edge="1" parent="1" source="office" target="pf_icon">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="le2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#666666;strokeWidth=2;endSize=11;endArrow=block;endFill=1;" edge="1" parent="1" source="family" target="pf_icon">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="le3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#666666;strokeWidth=2;endSize=11;endArrow=block;endFill=1;" edge="1" parent="1" source="iot" target="pf_icon">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="le4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#666666;strokeWidth=2;endSize=11;endArrow=block;endFill=1;" edge="1" parent="1" source="media" target="pf_icon">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="le5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#666666;strokeWidth=2;endSize=11;endArrow=block;endFill=1;" edge="1" parent="1" source="guest" target="pf_icon">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="le6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#666666;strokeWidth=2;endSize=11;endArrow=block;endFill=1;" edge="1" parent="1" source="adblock" target="pf_icon">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="le7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#666666;strokeWidth=2;endSize=11;endArrow=block;endFill=1;" edge="1" parent="1" source="lan" target="pf_icon">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ld0" value="Resolver Path (Logical)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#666666;strokeWidth=2;dashed=1;dashPattern=3 3;endSize=11;endArrow=block;endFill=0;labelBackgroundColor=#ffffff;align=center;verticalAlign=middle;fontSize=10;" edge="1" parent="1" source="pf_icon" target="svc_dns">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="le8" value="Limited Office destination" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2D7600;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;labelBackgroundColor=#ffffff;fontSize=10;" edge="1" parent="1" source="family" target="office">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="le9" value="Limited Office destination" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2D7600;strokeWidth=2.4;endSize=12;endArrow=block;endFill=1;labelBackgroundColor=#ffffff;fontSize=10;" edge="1" parent="1" source="media" target="office">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ld1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1A73E8;strokeWidth=2;dashed=1;dashPattern=1 2;endSize=10;endArrow=block;endFill=0;" edge="1" parent="1" source="office" target="svc_dns">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ld2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1A73E8;strokeWidth=2;dashed=1;dashPattern=1 2;endSize=10;endArrow=block;endFill=0;" edge="1" parent="1" source="family" target="svc_dns">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ld3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1A73E8;strokeWidth=2;dashed=1;dashPattern=1 2;endSize=10;endArrow=block;endFill=0;" edge="1" parent="1" source="iot" target="svc_dns">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ld4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1A73E8;strokeWidth=2;dashed=1;dashPattern=1 2;endSize=10;endArrow=block;endFill=0;" edge="1" parent="1" source="media" target="svc_dns">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ld5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1A73E8;strokeWidth=2;dashed=1;dashPattern=1 2;endSize=10;endArrow=block;endFill=0;" edge="1" parent="1" source="guest" target="svc_dns">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ld6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#1A73E8;strokeWidth=2;dashed=1;dashPattern=1 2;endSize=10;endArrow=block;endFill=0;" edge="1" parent="1" source="lan" target="svc_dns">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ld7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#666666;strokeWidth=2;endSize=11;endArrow=block;endFill=1;" edge="1" parent="1" source="dhcp_note" target="svc_dns">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -17,12 +17,14 @@ High-level design:
- Technitium DNS/ad-blocking is centralized on AdBlock VLAN.
- Office-hosted reverse proxy is the controlled cross-VLAN destination for Family/Media.
Diagram source files (Eraser diagram-as-code, replacing Draw.io as editable source):
Diagram source files (Eraser diagram-as-code):
- `docs/network/diagrams/homelab-network-physical.eraserdiagram`
- `docs/network/diagrams/homelab-network-logical.eraserdiagram`
Legacy retained for now:
- `docs/network/diagrams/homelab-network.drawio`
Rendered exports:
- `docs/network/diagrams/homelab-network-logical.svg`
- `docs/network/diagrams/homelab-network-physical.svg`
- `docs/network/diagrams/homelab-network-combined.svg`
## Evidence Table
| Fact | Value (public-safe) | Source file(s) | Confidence |
@ -163,11 +165,9 @@ Current-state flow (sanitized):
1. TL-SG108 is unmanaged; no dedicated management IP is visible in pfSense DHCP static maps (you indicated this was removed accidentally and will be added back).
2. Downstream switch port-by-port access/trunk assignments are intentionally abstracted in public docs.
3. SSID names, WLAN security settings, and AP radio policy are not stored in this repo.
4. It is not confirmed whether `drawio` service (`... .9:8080` in template form) is currently active in production.
5. AdBlock VLAN is intentionally broad right now; future hardening boundaries are a policy decision.
4. AdBlock VLAN is intentionally broad right now; future hardening boundaries are a policy decision.
## 10. Validation Checklist
1. Confirm your preferred AdBlock hardening level: `Current`, `Moderate`, or `Strict`.
2. Confirm when TL-SG108 management IP/static map is re-added so docs can include it.
3. Confirm whether Technitium upstream mode is `Forward-to-pfSense` or `Direct recursion` (drives OPT7 Rule 1 vs Rule 2).
4. Confirm whether `drawio` upstream at Office `.9:8080` should stay in templates (diagram currently omits service nodes by request).