Add initial power management files and system diagram

- Created a new directory for power management with a .gitkeep file.
- Added a system diagram in SVG format for power management architecture.
This commit is contained in:
Yuto Yamazaki
2026-03-11 09:54:41 +09:00
parent 4606f9dc70
commit 1c29c7c800
8 changed files with 1903 additions and 155 deletions

View File

@@ -0,0 +1,520 @@
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="561px" height="733px" viewBox="-0.5 -0.5 561 733" content="&lt;mxfile&gt;&lt;diagram id=&quot;2J_i9eyuWScV5GPMZ8z7&quot; name=&quot;ページ1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g>
<g>
<path d="M 270 51 L 270 101 Q 270 111 280 111 L 300 111 Q 310 111 310 121 L 310 164.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 310 169.88 L 306.5 162.88 L 310 164.63 L 313.5 162.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 84px; margin-left: 272px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: nowrap; ">
Flets (10GbE)
</div>
</div>
</div>
</foreignObject>
<text x="272" y="87" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">
Flets (10GbE)
</text>
</switch>
</g>
</g>
<g>
<path d="M 307.17 51 C 314.66 50.15 320.01 43.69 319.11 36.57 C 318.21 29.45 311.4 24.38 303.91 25.23 C 303.83 14.6 295.98 5.46 285.03 3.23 C 274.08 1 262.97 6.29 258.31 15.96 C 254.85 12.2 249.36 10.79 244.38 12.36 C 239.4 13.94 235.9 18.2 235.5 23.17 C 227.41 22.89 220.6 28.89 220.3 36.57 C 220 44.25 226.32 50.72 234.42 51 Z" fill="#cccccc" stroke="#6881b3" stroke-width="2.06" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(204, 204, 204), rgb(62, 62, 62)); stroke: light-dark(rgb(104, 129, 179), rgb(107, 129, 172));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 26px; margin-left: 270px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: nowrap; ">
The Internet
</div>
</div>
</div>
</foreignObject>
<text x="270" y="30" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
The Internet
</text>
</switch>
</g>
</g>
<g>
<path d="M 340 211 L 340 244.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 340 249.88 L 336.5 242.88 L 340 244.63 L 343.5 242.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="280" y="171" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 191px; margin-left: 281px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
rt-edge-01
<br/>
(RTX 1300)
</div>
</div>
</div>
</foreignObject>
<text x="340" y="195" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
rt-edge-01...
</text>
</switch>
</g>
</g>
<g>
<path d="M 260 411 L 260 431 Q 260 441 270 441 L 400 441 Q 410 441 410 451 L 410 471 Q 410 481 420 481 L 433.63 481" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 438.88 481 L 431.88 484.5 L 433.63 481 L 431.88 477.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 260 411 L 260 431 Q 260 441 270 441 L 400 441 Q 410 441 410 451 L 410 531 Q 410 541 420 541 L 433.63 541" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 438.88 541 L 431.88 544.5 L 433.63 541 L 431.88 537.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 260 411 L 260 431 Q 260 441 270 441 L 400 441 Q 410 441 410 451 L 410 611 Q 410 621 420 621 L 433.63 621" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 438.88 621 L 431.88 624.5 L 433.63 621 L 431.88 617.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 260 411 L 260 431 Q 260 441 270 441 L 400 441 Q 410 441 410 451 L 410 671 Q 410 681 420 681 L 433.63 681" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 438.88 681 L 431.88 684.5 L 433.63 681 L 431.88 677.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 230 411 L 230 421 Q 230 431 230 441 L 230 504.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 230 509.88 L 226.5 502.88 L 230 504.63 L 233.5 502.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 260 411 L 260 431 Q 260 441 270 441 L 400 441 Q 410 441 410 451 L 410 581 Q 410 591 400 591 L 300 591 Q 290 591 290 601 L 290 624.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 290 629.88 L 286.5 622.88 L 290 624.63 L 293.5 622.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="200" y="371" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 391px; margin-left: 201px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
sw-srv-01
<br/>
(AT-x510-28GTX)
</div>
</div>
</div>
</foreignObject>
<text x="260" y="395" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
sw-srv-01...
</text>
</switch>
</g>
</g>
<g>
<path d="M 420 411 L 420 451 Q 420 461 426.82 461 L 433.63 461" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 438.88 461 L 431.88 464.5 L 433.63 461 L 431.88 457.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 420 411 L 420 511 Q 420 521 426.82 521 L 433.63 521" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 438.88 521 L 431.88 524.5 L 433.63 521 L 431.88 517.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 420 411 L 420 591 Q 420 601 426.82 601 L 433.63 601" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 438.88 601 L 431.88 604.5 L 433.63 601 L 431.88 597.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 420 411 L 420 651 Q 420 661 426.82 661 L 433.63 661" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 438.88 661 L 431.88 664.5 L 433.63 661 L 431.88 657.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 390 411 L 390 441 Q 390 451 380 451 L 250 451 Q 240 451 240 461 L 240 504.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 240 509.88 L 236.5 502.88 L 240 504.63 L 243.5 502.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 420 411 L 420 591 Q 420 601 410 601 L 310 601 Q 300 601 300 611 L 300 624.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 300 629.88 L 296.5 622.88 L 300 624.63 L 303.5 622.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="360" y="371" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 391px; margin-left: 361px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<span style="">
sw-srv-02
</span>
<div>
<span style="">
(AT-x510-28GTX)
</span>
</div>
</div>
</div>
</div>
</foreignObject>
<text x="420" y="395" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
sw-srv-02...
</text>
</switch>
</g>
</g>
<g>
<path d="M 326.37 391 L 353.63 391" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 321.12 391 L 328.12 387.5 L 326.37 391 L 328.12 394.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 358.88 391 L 351.88 394.5 L 353.63 391 L 351.88 387.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 410 51 L 410 101 Q 410 111 400 111 L 380 111 Q 370 111 370 121 L 370 164.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 370 169.88 L 366.5 162.88 L 370 164.63 L 373.5 162.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 84px; margin-left: 411px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 11px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: nowrap; ">
LTE/5G (1GbE)
</div>
</div>
</div>
</foreignObject>
<text x="411" y="87" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="11px" text-anchor="middle">
LTE/5G (1GbE)
</text>
</switch>
</g>
</g>
<g>
<path d="M 447.17 51 C 454.66 50.15 460.01 43.69 459.11 36.57 C 458.21 29.45 451.4 24.38 443.91 25.23 C 443.83 14.6 435.98 5.46 425.03 3.23 C 414.08 1 402.97 6.29 398.31 15.96 C 394.85 12.2 389.36 10.79 384.38 12.36 C 379.4 13.94 375.9 18.2 375.5 23.17 C 367.41 22.89 360.6 28.89 360.3 36.57 C 360 44.25 366.32 50.72 374.42 51 Z" fill="#cccccc" stroke="#6881b3" stroke-width="2.06" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(204, 204, 204), rgb(62, 62, 62)); stroke: light-dark(rgb(104, 129, 179), rgb(107, 129, 172));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 26px; margin-left: 410px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: nowrap; ">
The Internet
</div>
</div>
</div>
</foreignObject>
<text x="410" y="30" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
The Internet
</text>
</switch>
</g>
</g>
<g>
<rect x="440" y="451" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 471px; margin-left: 441px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
sc-rpi4-01
<br/>
(RPi4)
</div>
</div>
</div>
</foreignObject>
<text x="500" y="475" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
sc-rpi4-01...
</text>
</switch>
</g>
</g>
<g>
<rect x="440" y="591" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 611px; margin-left: 441px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
x86-01-pve
<br/>
(GEM 10)
</div>
</div>
</div>
</foreignObject>
<text x="500" y="615" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
x86-01-pve...
</text>
</switch>
</g>
</g>
<g>
<rect x="440" y="511" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 531px; margin-left: 441px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
n1-pro-pve
<br/>
(N1-Pro)
</div>
</div>
</div>
</foreignObject>
<text x="500" y="535" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
n1-pro-pve...
</text>
</switch>
</g>
</g>
<g>
<rect x="440" y="651" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 671px; margin-left: 441px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
x86-02-pve
<br/>
(GEM 10)
</div>
</div>
</div>
</foreignObject>
<text x="500" y="675" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
x86-02-pve...
</text>
</switch>
</g>
</g>
<g>
<path d="M 260 551 L 260 581 Q 260 591 260 601 L 260 624.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 260 629.88 L 256.5 622.88 L 260 624.63 L 263.5 622.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="200" y="511" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 531px; margin-left: 201px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<div style="">
<span style="background-color: transparent; font-variant-ligatures: no-common-ligatures;">
<font face="UI Sans, Lato, HelveticaNeue, Helvetica Neue, Helvetica, Arial, sans-serif">
sw-aggr-srv-01
<br/>
(USW Aggregation)
</font>
</span>
</div>
</div>
</div>
</div>
</foreignObject>
<text x="260" y="535" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
sw-aggr-srv-01...
</text>
</switch>
</g>
</g>
<g>
<rect x="200" y="631" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 651px; margin-left: 201px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
stg-nas-01
</div>
</div>
</div>
</foreignObject>
<text x="260" y="655" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
stg-nas-01
</text>
</switch>
</g>
</g>
<g>
<rect x="0" y="451" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 471px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
AP
</div>
</div>
</div>
</foreignObject>
<text x="60" y="475" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
AP
</text>
</switch>
</g>
</g>
<g>
<path d="M 60 411 L 60 444.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 60 449.88 L 56.5 442.88 L 60 444.63 L 63.5 442.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="0" y="371" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 391px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<div style="">
<font face="UI Sans, Lato, HelveticaNeue, Helvetica Neue, Helvetica, Arial, sans-serif">
<span style="font-variant-ligatures: no-common-ligatures;">
sw-flex
<br/>
(USW Flex)
</span>
</font>
</div>
</div>
</div>
</div>
</foreignObject>
<text x="60" y="395" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
sw-flex...
</text>
</switch>
</g>
</g>
<g>
<path d="M 160 731 L 160 51" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="40" y="131" width="120" height="40" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 151px; margin-left: 41px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
VLAN 100
<br/>
192.168.100.0/24
</div>
</div>
</div>
</foreignObject>
<text x="100" y="155" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
VLAN 100...
</text>
</switch>
</g>
</g>
<g>
<rect x="160" y="131" width="120" height="40" fill="none" stroke="none" pointer-events="all"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 151px; margin-left: 161px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
VLAN 10~90
<br/>
10.0.0.0/16
</div>
</div>
</div>
</foreignObject>
<text x="220" y="155" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
VLAN 10~90...
</text>
</switch>
</g>
</g>
<g>
<path d="M 340 291 L 340 321 Q 340 331 330 331 L 270 331 Q 260 331 260 341 L 260 364.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 260 369.88 L 256.5 362.88 L 260 364.63 L 263.5 362.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 340 291 L 340 321 Q 340 331 350 331 L 410 331 Q 420 331 420 341 L 420 364.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 420 369.88 L 416.5 362.88 L 420 364.63 L 423.5 362.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<path d="M 340 291 L 340 321 Q 340 331 330 331 L 70 331 Q 60 331 60 341 L 60 364.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
<path d="M 60 369.88 L 56.5 362.88 L 60 364.63 L 63.5 362.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<rect x="280" y="251" width="120" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
</g>
<g>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 271px; margin-left: 281px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
<div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #FFFFFF); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<div style="">
<font face="UI Sans, Lato, HelveticaNeue, Helvetica Neue, Helvetica, Arial, sans-serif">
<span style="font-variant-ligatures: no-common-ligatures;">
sw-aggr-edge-01
<br/>
(USW Aggregation)
</span>
</font>
</div>
</div>
</div>
</div>
</foreignObject>
<text x="340" y="275" fill="light-dark(#000000,#FFFFFF)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">
sw-aggr-edge-01...
</text>
</switch>
</g>
</g>
</g>
<switch>
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
<a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank">
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
Text is not SVG - cannot display
</text>
</a>
</switch>
</svg>

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@@ -0,0 +1,274 @@
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Network IP Map</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;600;700&family=Syne:wght@400;700;800&display=swap');
:root {
--bg:#0a0e1a;--surface:#111827;--border:#1e2d40;--text:#e2e8f0;--muted:#64748b;--accent:#38bdf8;
--vlan10:#f59e0b;--vlan20h:#10b981;--vlan20v:#34d399;--vlan30:#8b5cf6;--vlan40:#3b82f6;
--vlan50:#f43f5e;--vlan60:#f97316;--prv:#06b6d4;--wan:#84cc16;
}
*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--bg);color:var(--text);font-family:'JetBrains Mono',monospace;font-size:13px;line-height:1.5;padding:32px;min-height:100vh}
h1{font-family:'Syne',sans-serif;font-size:22px;font-weight:800;letter-spacing:.05em;color:var(--accent);margin-bottom:4px}
.subtitle{color:var(--muted);font-size:11px;margin-bottom:32px;letter-spacing:.1em;text-transform:uppercase}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:1100px}
.section{background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden}
.section.full-width{grid-column:1/-1}
.section-header{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);background:rgba(255,255,255,.02)}
.section-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.section-title{font-family:'Syne',sans-serif;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.section-range{margin-left:auto;font-size:11px;color:var(--muted)}
.sub-label{padding:8px 16px 2px;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;border-top:1px solid var(--border);margin-top:4px}
.sub-label.first{border-top:none;margin-top:0}
.device-list{padding:4px 0}
.device-row{display:grid;grid-template-columns:18px 1fr 160px;align-items:center;gap:8px;padding:5px 16px;transition:background .15s}
.device-row:hover{background:rgba(255,255,255,.03)}
.device-icon{font-size:10px;text-align:center}
.device-name{color:#cbd5e1;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.device-name .hw{color:var(--muted);font-size:10px;margin-left:4px}
.device-ip{font-size:12px;text-align:right;font-weight:600}
.dhcp-bar{padding:6px 16px;display:flex;align-items:center;gap:8px;background:rgba(0,0,0,.2);border-top:1px solid var(--border)}
.dhcp-label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;flex-shrink:0}
.dhcp-range{font-size:11px;color:var(--muted)}
.dhcp-track{flex:1;height:4px;background:var(--border);border-radius:2px;overflow:hidden;margin:0 8px}
.dhcp-fill{height:100%;border-radius:2px;opacity:.6}
.vm-table{width:100%;border-collapse:collapse;font-size:11px}
.vm-table td{padding:4px 16px;border-bottom:1px solid rgba(255,255,255,.04);color:var(--muted)}
.vm-table td:first-child{color:var(--vlan20v);font-weight:600}
.vm-table tr:last-child td{border-bottom:none}
.note{padding:6px 16px 8px;font-size:10px;color:var(--muted);border-top:1px solid var(--border);background:rgba(0,0,0,.15)}
.badge{display:inline-block;font-size:9px;padding:1px 6px;border-radius:3px;letter-spacing:.08em;text-transform:uppercase;font-weight:600}
.badge-active{background:rgba(56,189,248,.15);color:var(--accent)}
.badge-vip{background:rgba(6,182,212,.15);color:var(--prv)}
.badge-fixed{background:rgba(132,204,22,.15);color:var(--wan)}
.badge-mobile{background:rgba(249,115,22,.15);color:var(--vlan60)}
.prv-cols{display:grid;grid-template-columns:1fr 2fr}
.prv-col{border-right:1px solid var(--border)}
.prv-col:last-child{border-right:none}
.prv-col-header{padding:6px 16px;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid var(--border);background:rgba(0,0,0,.1)}
.ssid-table{width:100%;border-collapse:collapse;font-size:11px}
.ssid-table th{padding:5px 16px;text-align:left;color:var(--muted);font-size:10px;font-weight:400;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--border);background:rgba(0,0,0,.1)}
.ssid-table td{padding:6px 16px;border-bottom:1px solid rgba(255,255,255,.04);vertical-align:middle}
.ssid-table tr:last-child td{border-bottom:none}
.rule-allow{color:#10b981;font-size:10px}
.rule-deny{color:#f43f5e;font-size:10px}
@media(max-width:720px){.grid{grid-template-columns:1fr}.section.full-width{grid-column:1}.prv-cols{grid-template-columns:1fr}.prv-col{border-right:none;border-bottom:1px solid var(--border)}body{padding:16px}}
</style>
</head>
<body>
<h1>NETWORK IP MAP</h1>
<p class="subtitle">Infrastructure Address Plan · 2026</p>
<div class="grid">
<!-- WAN -->
<div class="section full-width">
<div class="section-header">
<div class="section-dot" style="background:var(--wan)"></div>
<span class="section-title">WAN</span>
<span class="section-range">Public IPs</span>
</div>
<div class="device-list">
<div class="device-row" style="grid-template-columns:18px 1fr 220px 100px">
<span class="device-icon">🌐</span>
<span class="device-name">WAN1 — Flets</span>
<span class="device-ip" style="color:var(--wan)">133.27.54.201/32</span>
<span><span class="badge badge-fixed">Static</span></span>
</div>
<div class="device-row" style="grid-template-columns:18px 1fr 220px 100px">
<span class="device-icon">📡</span>
<span class="device-name">WAN2 — LTE/5G</span>
<span class="device-ip" style="color:var(--wan)">106.128.57.19/28</span>
<span><span class="badge badge-mobile">Dynamic</span></span>
</div>
</div>
</div>
<!-- VLAN 10 -->
<div class="section">
<div class="section-header">
<div class="section-dot" style="background:var(--vlan10)"></div>
<span class="section-title" style="color:var(--vlan10)">VLAN 10 — MGMT</span>
<span class="section-range">10.0.10.0/24</span>
</div>
<div class="device-list">
<div class="device-row"><span class="device-icon">🔀</span><span class="device-name">rt-edge-01 <span class="hw">RTX 1300</span></span><span class="device-ip" style="color:var(--vlan10)">10.0.10.1</span></div>
<div class="device-row"><span class="device-icon">🔗</span><span class="device-name">rt-aggr-edge-01 <span class="hw">USW Aggr</span></span><span class="device-ip" style="color:var(--vlan10)">10.0.10.11</span></div>
<div class="device-row"><span class="device-icon">🖧</span><span class="device-name">sw-srv-01 <span class="hw">AT-x510</span></span><span class="device-ip" style="color:var(--vlan10)">10.0.10.21</span></div>
<div class="device-row"><span class="device-icon">🖧</span><span class="device-name">sw-srv-02 <span class="hw">AT-x510</span></span><span class="device-ip" style="color:var(--vlan10)">10.0.10.22</span></div>
<div class="device-row"><span class="device-icon">🔗</span><span class="device-name">sw-aggr-srv-01 <span class="hw">USW Aggr</span></span><span class="device-ip" style="color:var(--vlan10)">10.0.10.31</span></div>
</div>
</div>
<!-- VLAN 20 -->
<div class="section">
<div class="section-header">
<div class="section-dot" style="background:var(--vlan20h)"></div>
<span class="section-title" style="color:var(--vlan20h)">VLAN 20 — SERVER</span>
<span class="section-range">10.0.20.0/22</span>
</div>
<div class="sub-label first">HOST — 10.0.20.0/24</div>
<div class="device-list">
<div class="device-row"><span class="device-icon">🔀</span><span class="device-name">Gateway</span><span class="device-ip" style="color:var(--vlan20h)">10.0.20.1</span></div>
<div class="device-row"><span class="device-icon">🖥</span><span class="device-name">n1-pro-pve <span class="hw">n1-pro</span></span><span class="device-ip" style="color:var(--vlan20h)">10.0.20.11</span></div>
<div class="device-row"><span class="device-icon">🍓</span><span class="device-name">sc-rpi4-01 <span class="hw">RPi4</span></span><span class="device-ip" style="color:var(--vlan20h)">10.0.20.21</span></div>
<div class="device-row"><span class="device-icon">🖥</span><span class="device-name">x86-01-pve <span class="hw">GEM 10</span></span><span class="device-ip" style="color:var(--vlan20h)">10.0.20.51</span></div>
<div class="device-row"><span class="device-icon">🖥</span><span class="device-name">x86-02-pve <span class="hw">GEM 10</span></span><span class="device-ip" style="color:var(--vlan20h)">10.0.20.52</span></div>
</div>
<div class="dhcp-bar">
<span class="dhcp-label">Static</span>
<div class="dhcp-track"><div class="dhcp-fill" style="width:78%;background:var(--vlan20h)"></div></div>
<span class="dhcp-range">.10.199 / DHCP .200.230</span>
</div>
<div class="sub-label">VM — 10.0.21.0/24 〜 10.0.23.0/24</div>
<table class="vm-table">
<tr><td>10.0.21.0/24</td><td>VM 汎用(優先使用)</td></tr>
<tr><td>10.0.22.0/24</td><td>予備・用途別拡張</td></tr>
<tr><td>10.0.23.0/24</td><td>予備・用途別拡張</td></tr>
</table>
<div class="note">静的割当: 各 /24 の .1.199</div>
</div>
<!-- VLAN 30 -->
<div class="section">
<div class="section-header">
<div class="section-dot" style="background:var(--vlan30)"></div>
<span class="section-title" style="color:var(--vlan30)">VLAN 30 — STORAGE</span>
<span class="section-range">10.0.30.0/24</span>
</div>
<div class="device-list">
<div class="device-row"><span class="device-icon">🔀</span><span class="device-name">Gateway</span><span class="device-ip" style="color:var(--vlan30)">10.0.30.1</span></div>
<div class="device-row"><span class="device-icon">💾</span><span class="device-name">stg-01-nas <span class="hw">NAS</span></span><span class="device-ip" style="color:var(--vlan30)">10.0.30.11</span></div>
</div>
</div>
<!-- VLAN 40 -->
<div class="section">
<div class="section-header">
<div class="section-dot" style="background:var(--vlan40)"></div>
<span class="section-title" style="color:var(--vlan40)">VLAN 40 — CLIENT</span>
<span class="section-range">10.0.40.0/24</span>
</div>
<div class="device-list">
<div class="device-row"><span class="device-icon">🔀</span><span class="device-name">Gateway</span><span class="device-ip" style="color:var(--vlan40)">10.0.40.1</span></div>
</div>
<div class="dhcp-bar">
<span class="dhcp-label">DHCP</span>
<div class="dhcp-track"><div class="dhcp-fill" style="width:40%;background:var(--vlan40)"></div></div>
<span class="dhcp-range">.100 .199</span>
</div>
</div>
<!-- VLAN 50 -->
<div class="section">
<div class="section-header">
<div class="section-dot" style="background:var(--vlan50)"></div>
<span class="section-title" style="color:var(--vlan50)">VLAN 50 — GUEST</span>
<span class="section-range">10.0.50.0/24</span>
</div>
<div class="device-list">
<div class="device-row"><span class="device-icon">🔀</span><span class="device-name">Gateway</span><span class="device-ip" style="color:var(--vlan50)">10.0.50.1</span></div>
</div>
<div class="dhcp-bar">
<span class="dhcp-label">DHCP</span>
<div class="dhcp-track"><div class="dhcp-fill" style="width:48%;background:var(--vlan50)"></div></div>
<span class="dhcp-range">.100 .220(分離)</span>
</div>
</div>
<!-- VLAN 60 -->
<div class="section">
<div class="section-header">
<div class="section-dot" style="background:var(--vlan60)"></div>
<span class="section-title" style="color:var(--vlan60)">VLAN 60 — IoT</span>
<span class="section-range">10.0.60.0/24</span>
</div>
<div class="device-list">
<div class="device-row"><span class="device-icon">🔀</span><span class="device-name">Gateway</span><span class="device-ip" style="color:var(--vlan60)">10.0.60.1</span></div>
<div class="device-row"><span class="device-icon">📦</span><span class="device-name">静的 IoT 機器</span><span class="device-ip" style="color:var(--vlan60)">.2 .99</span></div>
</div>
<div class="dhcp-bar">
<span class="dhcp-label">DHCP</span>
<div class="dhcp-track"><div class="dhcp-fill" style="width:20%;background:var(--vlan60)"></div></div>
<span class="dhcp-range">.100 .149</span>
</div>
</div>
<!-- PRV -->
<div class="section full-width">
<div class="section-header">
<div class="section-dot" style="background:var(--prv)"></div>
<span class="section-title" style="color:var(--prv)">VLAN 100 — PRV</span>
<span class="section-range">192.168.100.0/22 · AP VLAN非対応 · SSID別論理分離</span>
</div>
<div class="prv-cols">
<div class="prv-col">
<div class="prv-col-header">インフラ静的割当</div>
<div class="device-list">
<div class="device-row" style="grid-template-columns:18px 1fr 150px">
<span class="device-icon">🛡</span>
<span class="device-name">CARP VIP <span class="badge badge-vip">GW</span></span>
<span class="device-ip" style="color:var(--prv)">192.168.100.1</span>
</div>
<div class="device-row" style="grid-template-columns:18px 1fr 150px">
<span class="device-icon">🔥</span>
<span class="device-name">opnsense-01 <span class="badge badge-active">Active</span></span>
<span class="device-ip" style="color:var(--prv)">192.168.100.2</span>
</div>
<div class="device-row" style="grid-template-columns:18px 1fr 150px">
<span class="device-icon">🔗</span>
<span class="device-name">sw-flex <span class="hw">USW Flex</span></span>
<span class="device-ip" style="color:var(--prv)">192.168.100.11</span>
</div>
<div class="device-row" style="grid-template-columns:18px 1fr 150px">
<span class="device-icon">📶</span>
<span class="device-name">ap-prv-01 <span class="hw">sw-flex 配下</span></span>
<span class="device-ip" style="color:var(--prv)">192.168.100.21</span>
</div>
</div>
<div class="note">静的: .1.30 予備: 192.168.103.0/24</div>
</div>
<div class="prv-col">
<div class="prv-col-header">DHCP スコープSSID 別 / 論理分離)</div>
<table class="ssid-table">
<thead>
<tr><th>SSID 用途</th><th>便宜上のCIDR</th><th>DHCP レンジ</th><th>OPNsense ルール</th></tr>
</thead>
<tbody>
<tr>
<td style="color:#e2e8f0">Main一般端末</td>
<td style="color:var(--prv)">192.168.100.0/24</td>
<td style="color:var(--muted)">.100 .200</td>
<td><span class="rule-allow">✓ 内部アクセス許可</span></td>
</tr>
<tr>
<td style="color:#e2e8f0">IoT</td>
<td style="color:var(--vlan60)">192.168.101.0/24</td>
<td style="color:var(--muted)">.100 .200</td>
<td><span class="rule-deny">✗ 内部遮断 / WAN のみ</span></td>
</tr>
<tr>
<td style="color:#e2e8f0">Guest</td>
<td style="color:var(--vlan50)">192.168.102.0/24</td>
<td style="color:var(--muted)">.100 .200</td>
<td><span class="rule-deny">✗ 内部遮断 / WAN のみ</span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div style="margin-top:20px;font-size:10px;color:var(--muted);letter-spacing:.08em">
SRV: 10.0.0.0/16 &nbsp;|&nbsp; PRV: 192.168.100.0/22 &nbsp;|&nbsp; OPNsense HA: CARP + pfsync &nbsp;|&nbsp; VLAN 110 / 120 廃止
</div>
</body>
</html>

View File

@@ -0,0 +1,129 @@
# Network IP Map
## WAN
| インターフェース | IP アドレス | 回線 |
|---|---|---|
| WAN1 | `133.27.54.201/32` | Flets固定IP |
| WAN2 | `106.128.57.19/28` | LTE/5Gモバイル |
---
## SRV ネットワーク10.0.0.0/16
### VLAN 10 — MGMT`10.0.10.0/24`
| ホスト名 | 機器 | IP アドレス |
|---|---|---|
| `rt-edge-01` | RTX 1300 | `10.0.10.1` |
| `rt-aggr-edge-01` | USW Aggregation | `10.0.10.11` |
| `sw-srv-01` | AT-x510-28GTX | `10.0.10.21` |
| `sw-srv-02` | AT-x510-28GTX | `10.0.10.22` |
| `sw-aggr-srv-01` | USW Aggregation | `10.0.10.31` |
---
### VLAN 20 — SERVER`10.0.20.0/22`
> 便宜上 HOST と VM でサブネットを分割。実態は VLAN 20 単一。`10.0.20.0/22` のレンジは `10.0.20.0` 〜 `10.0.23.255``/24` 4本
#### HOST: `10.0.20.0/24`
| ホスト名 | 機器 | IP アドレス |
|---|---|---|
| Gateway | — | `10.0.20.1` |
| `n1-pro-pve` | n1-pro | `10.0.20.11` |
| `sc-rpi4-01` | Raspberry Pi 4 | `10.0.20.21` |
| `x86-01-pve` | GEM 10 | `10.0.20.51` |
| `x86-02-pve` | GEM 10 | `10.0.20.52` |
- **静的割当**: `.10` `.199`
- **DHCP**: `.200` `.230`
#### VM: `10.0.21.0/24` 〜 `10.0.23.0/24``/22` 残り空間)
| 便宜上のCIDR | 用途 |
|---|---|
| `10.0.21.0/24` | VM 汎用(優先使用) |
| `10.0.22.0/24` | 予備・用途別拡張 |
| `10.0.23.0/24` | 予備・用途別拡張 |
- **VM 静的割当**: 各 `/24``.1` `.199`
---
### VLAN 30 — STORAGE`10.0.30.0/24`
| ホスト名 | 機器 | IP アドレス |
|---|---|---|
| Gateway | — | `10.0.30.1` |
| `stg-01-nas` | NAS | `10.0.30.11` |
---
### VLAN 40 — CLIENT`10.0.40.0/24`
| ホスト名 | 機器 | IP アドレス |
|---|---|---|
| Gateway | — | `10.0.40.1` |
- **DHCP**: `.100` `.199`
---
### VLAN 50 — GUEST`10.0.50.0/24`
| ホスト名 | 機器 | IP アドレス |
|---|---|---|
| Gateway | — | `10.0.50.1` |
- **DHCP**: `.100` `.220`(分離運用)
---
### VLAN 60 — IoT`10.0.60.0/24`
| ホスト名 | 機器 | IP アドレス |
|---|---|---|
| Gateway | — | `10.0.60.1` |
| 静的 IoT 機器 | — | `.2` `.99` |
- **DHCP**: `.100` `.149`
---
## PRV ネットワーク192.168.100.0/22
> AP は VLAN 非対応のため VLAN 100 単一で運用。IoT・Guest の分離は SSID 別の DHCP スコープOPNsense ファイアウォールルールのみで対応。
### VLAN 100 — PRV`192.168.100.0/22`
#### インフラ静的割当
| ホスト名 | 役割 | IP アドレス |
|---|---|---|
| CARP VIP | デフォルト GW | `192.168.100.1` |
| `opnsense-01` | OPNsenseActive | `192.168.100.2` |
| `sw-flex` | USW Flex | `192.168.100.11` |
| `ap-prv-01` | APsc-flex 配下) | `192.168.100.21` |
#### DHCP スコープSSID 別 / 論理分離)
| SSID 用途 | 便宜上のCIDR | DHCP レンジ | OPNsense ルール |
|---|---|---|---|
| Main一般端末 | `192.168.100.0/24` | `192.168.100.100` `.200` | 内部アクセス許可 |
| IoT | `192.168.101.0/24` | `192.168.101.100` `.200` | 内部アクセス遮断、WAN のみ |
| Guest | `192.168.102.0/24` | `192.168.102.100` `.200` | 内部アクセス遮断、WAN のみ |
- **インフラ静的**: `192.168.100.1` `.30`
- **予備/将来用**: `192.168.103.0/24`
---
## 備考
- SRV 系 VLAN はすべて `10.0.0.0/16` 内で `/24` 単位に分割
- PRV 系は `192.168.100.0/22` を VLAN 単位にサブネット分割
- OPNsense HA 構成: CARP + pfsync によるセッション同期(推奨)
- デフォルト GW はすべて `.1`、インフラ機器は `.2``.99`
- PRV は VLAN 100 単一運用。IoT / Guest 分離は DHCP スコープ+ファイアウォールルールで対応