From 1c29c7c800c482edca4e6535407b4389eb0d582c Mon Sep 17 00:00:00 2001 From: Yuto Yamazaki Date: Wed, 11 Mar 2026 09:54:41 +0900 Subject: [PATCH] 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. --- feature/network/NW-diagram.drawio.svg | 520 ++++++++++++++++ feature/network/NW-diagram.png | Bin 0 -> 71607 bytes feature/network/network-diagram.html | 274 +++++++++ feature/network/network-diagram.md | 129 ++++ now/phys/sc-diagram.drawio.svg | 847 +++++++++++++++++++++----- now/phys/sc-diagram_01.svg | 1 + now/power/.gitkeep | 0 now/power/sc-diagram.drawio.svg | 287 +++++++++ 8 files changed, 1903 insertions(+), 155 deletions(-) create mode 100644 feature/network/NW-diagram.drawio.svg create mode 100644 feature/network/NW-diagram.png create mode 100644 feature/network/network-diagram.html create mode 100644 feature/network/network-diagram.md create mode 100644 now/phys/sc-diagram_01.svg create mode 100644 now/power/.gitkeep create mode 100644 now/power/sc-diagram.drawio.svg diff --git a/feature/network/NW-diagram.drawio.svg b/feature/network/NW-diagram.drawio.svg new file mode 100644 index 0000000..7884bd9 --- /dev/null +++ b/feature/network/NW-diagram.drawio.svg @@ -0,0 +1,520 @@ + + + + + + + + + + + +
+
+
+ Flets (10GbE) +
+
+
+
+ + Flets (10GbE) + +
+
+
+ + + + + + + +
+
+
+ The Internet +
+
+
+
+ + The Internet + +
+
+
+ + + + + + + + + + + +
+
+
+ rt-edge-01 +
+ (RTX 1300) +
+
+
+
+ + rt-edge-01... + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ sw-srv-01 +
+ (AT-x510-28GTX) +
+
+
+
+ + sw-srv-01... + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + sw-srv-02 + +
+ + (AT-x510-28GTX) + +
+
+
+
+
+ + sw-srv-02... + +
+
+
+ + + + + + + + + + + + + +
+
+
+ LTE/5G (1GbE) +
+
+
+
+ + LTE/5G (1GbE) + +
+
+
+ + + + + + + +
+
+
+ The Internet +
+
+
+
+ + The Internet + +
+
+
+ + + + + + + +
+
+
+ sc-rpi4-01 +
+ (RPi4) +
+
+
+
+ + sc-rpi4-01... + +
+
+
+ + + + + + + +
+
+
+ x86-01-pve +
+ (GEM 10) +
+
+
+
+ + x86-01-pve... + +
+
+
+ + + + + + + +
+
+
+ n1-pro-pve +
+ (N1-Pro) +
+
+
+
+ + n1-pro-pve... + +
+
+
+ + + + + + + +
+
+
+ x86-02-pve +
+ (GEM 10) +
+
+
+
+ + x86-02-pve... + +
+
+
+ + + + + + + + + + + +
+
+
+
+ + + sw-aggr-srv-01 +
+ (USW Aggregation) +
+
+
+
+
+
+
+ + sw-aggr-srv-01... + +
+
+
+ + + + + + + +
+
+
+ stg-nas-01 +
+
+
+
+ + stg-nas-01 + +
+
+
+ + + + + + + +
+
+
+ AP +
+
+
+
+ + AP + +
+
+
+ + + + + + + + + + + +
+
+
+
+ + + sw-flex +
+ (USW Flex) +
+
+
+
+
+
+
+ + sw-flex... + +
+
+
+ + + + + + + + + + +
+
+
+ VLAN 100 +
+ 192.168.100.0/24 +
+
+
+
+ + VLAN 100... + +
+
+
+ + + + + + + +
+
+
+ VLAN 10~90 +
+ 10.0.0.0/16 +
+
+
+
+ + VLAN 10~90... + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + sw-aggr-edge-01 +
+ (USW Aggregation) +
+
+
+
+
+
+
+ + sw-aggr-edge-01... + +
+
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/feature/network/NW-diagram.png b/feature/network/NW-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa1202e0ef2d5f7fe87538ebae3b4f16540f07b GIT binary patch literal 71607 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𝔜mfuZ3Q8r3r}Zc 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⪻??-rGZ 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%0ArSbF|=0y8$(OWd2%1yX1M4S&(Jb3A!%NewkoRZ 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 literal 0 HcmV?d00001 diff --git a/feature/network/network-diagram.html b/feature/network/network-diagram.html new file mode 100644 index 0000000..69634ac --- /dev/null +++ b/feature/network/network-diagram.html @@ -0,0 +1,274 @@ + + + + + +Network IP Map + + + + +

NETWORK IP MAP

+

Infrastructure Address Plan · 2026

+ +
+ + +
+
+
+ WAN + Public IPs +
+
+
+ 🌐 + WAN1 — Flets + 133.27.54.201/32 + Static +
+
+ 📡 + WAN2 — LTE/5G + 106.128.57.19/28 + Dynamic +
+
+
+ + +
+
+
+ VLAN 10 — MGMT + 10.0.10.0/24 +
+
+
🔀rt-edge-01 RTX 130010.0.10.1
+
🔗rt-aggr-edge-01 USW Aggr10.0.10.11
+
🖧sw-srv-01 AT-x51010.0.10.21
+
🖧sw-srv-02 AT-x51010.0.10.22
+
🔗sw-aggr-srv-01 USW Aggr10.0.10.31
+
+
+ + +
+
+
+ VLAN 20 — SERVER + 10.0.20.0/22 +
+
HOST — 10.0.20.0/24
+
+
🔀Gateway10.0.20.1
+
🖥n1-pro-pve n1-pro10.0.20.11
+
🍓sc-rpi4-01 RPi410.0.20.21
+
🖥x86-01-pve GEM 1010.0.20.51
+
🖥x86-02-pve GEM 1010.0.20.52
+
+
+ Static +
+ .10–.199 / DHCP .200–.230 +
+
VM — 10.0.21.0/24 〜 10.0.23.0/24
+ + + + +
10.0.21.0/24VM 汎用(優先使用)
10.0.22.0/24予備・用途別拡張
10.0.23.0/24予備・用途別拡張
+
静的割当: 各 /24 の .1–.199
+
+ + +
+
+
+ VLAN 30 — STORAGE + 10.0.30.0/24 +
+
+
🔀Gateway10.0.30.1
+
💾stg-01-nas NAS10.0.30.11
+
+
+ + +
+
+
+ VLAN 40 — CLIENT + 10.0.40.0/24 +
+
+
🔀Gateway10.0.40.1
+
+
+ DHCP +
+ .100 – .199 +
+
+ + +
+
+
+ VLAN 50 — GUEST + 10.0.50.0/24 +
+
+
🔀Gateway10.0.50.1
+
+
+ DHCP +
+ .100 – .220(分離) +
+
+ + +
+
+
+ VLAN 60 — IoT + 10.0.60.0/24 +
+
+
🔀Gateway10.0.60.1
+
📦静的 IoT 機器.2 – .99
+
+
+ DHCP +
+ .100 – .149 +
+
+ + +
+
+
+ VLAN 100 — PRV + 192.168.100.0/22 · AP VLAN非対応 · SSID別論理分離 +
+
+
+
インフラ静的割当
+
+
+ 🛡 + CARP VIP GW + 192.168.100.1 +
+
+ 🔥 + opnsense-01 Active + 192.168.100.2 +
+
+ 🔗 + sw-flex USW Flex + 192.168.100.11 +
+
+ 📶 + ap-prv-01 sw-flex 配下 + 192.168.100.21 +
+
+
静的: .1–.30 予備: 192.168.103.0/24
+
+
+
DHCP スコープ(SSID 別 / 論理分離)
+ + + + + + + + + + + + + + + + + + + + + + + + +
SSID 用途便宜上のCIDRDHCP レンジOPNsense ルール
Main(一般端末)192.168.100.0/24.100 – .200✓ 内部アクセス許可
IoT192.168.101.0/24.100 – .200✗ 内部遮断 / WAN のみ
Guest192.168.102.0/24.100 – .200✗ 内部遮断 / WAN のみ
+
+
+
+ +
+ +
+ SRV: 10.0.0.0/16  |  PRV: 192.168.100.0/22  |  OPNsense HA: CARP + pfsync  |  VLAN 110 / 120 廃止 +
+ + + \ No newline at end of file diff --git a/feature/network/network-diagram.md b/feature/network/network-diagram.md new file mode 100644 index 0000000..b787bad --- /dev/null +++ b/feature/network/network-diagram.md @@ -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` | OPNsense(Active) | `192.168.100.2` | +| `sw-flex` | USW Flex | `192.168.100.11` | +| `ap-prv-01` | AP(sc-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 スコープ+ファイアウォールルールで対応 \ No newline at end of file diff --git a/now/phys/sc-diagram.drawio.svg b/now/phys/sc-diagram.drawio.svg index cfd224d..4b322d2 100644 --- a/now/phys/sc-diagram.drawio.svg +++ b/now/phys/sc-diagram.drawio.svg @@ -1,209 +1,672 @@ - + + - + - - - - - + -
-
-
- The Internet -
-
-
-
- - The Internet - -
-
-
- - - - - - - - - - - -
+
- GE-ONU + ONU
- - GE-ONU + + ONU - - - - - + -
+
- Aterm WG1200HP4 (RT) + AT-x510-28GTX
- - Aterm WG1200HP4 (RT) + + AT-x510-28GTX - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + -
+
+
+
+ 0.1 +
+
+
+ + + 0.1 + + + + + + + + + + + +
+
+
+ 0.2 +
+
+
+
+ + 0.2 + +
+
+
+ + + + + + + +
+
+
+ 0.4 +
+
+
+
+ + 0.4 + +
+
+
+ + + + + + + +
+
+
+ 0.3 +
+
+
+
+ + 0.3 + +
+
+
+ + + + + + + +
+
+
+ 0.5 +
+
+
+
+ + 0.5 + +
+
+
+ + + + + + + +
+
+
+ 0.7 +
+
+
+
+ + 0.7 + +
+
+
+ + + + + + + +
+
+
+ 0.9 +
+
+
+
+ + 0.9 + +
+
+
+ + + + + + + +
+
+
+ 0.10 +
+
+
+
+ + 0.10 + +
+
+
+ + + + + + + +
+
+
+ 0.12 +
+
+
+
+ + 0.12 + +
+
+
+ + + + + + + +
+
+
+ 0.11 +
+
+
+
+ + 0.11 + +
+
+
+ + + + + + + +
+
+
+ 0.13 +
+
+
+
+ + 0.13 + +
+
+
+ + + + + + + +
+
+
+ 0.14 +
+
+
+
+ + 0.14 + +
+
+
+ + + + + + + +
+
+
+ 0.16 +
+
+
+
+ + 0.16 + +
+
+
+ + + + + + + +
+
+
+ 0.15 +
+
+
+
+ + 0.15 + +
+
+
+ + + + + + + +
+
+
+ 0.17 +
+
+
+
+ + 0.17 + +
+
+
+ + + + + + + +
+
+
+ 0.18 +
+
+
+
+ + 0.18 + +
+
+
+ + + + + + + +
+
+
+ 0.20 +
+
+
+
+ + 0.20 + +
+
+
+ + + + + + + +
+
+
+ 0.19 +
+
+
+
+ + 0.19 + +
+
+
+ + + + + + + +
+
+
+ 0.21 +
+
+
+
+ + 0.21 + +
+
+
+ + + + + + + +
+
+
+ 0.22 +
+
+
+
+ + 0.22 + +
+
+
+ + + + + + + +
+
+
+ 0.24 +
+
+
+
+ + 0.24 + +
+
+
+ + + + + + + +
+
+
+ 0.23 +
+
+
+
+ + 0.23 + +
+
+
+ + + + + + + +
+
+
+ 0.25 +
+
+
+
+ + 0.25 + +
+
+
+ + + + + + + +
+
+
+ 0.26 +
+
+
+
+ + 0.26 + +
+
+
+ + + + + + + +
+
+
+ 0.28 +
+
+
+
+ + 0.28 + +
+
+
+ + + + + + + +
+
+
+ 0.27 +
+
+
+
+ + 0.27 + +
+
+
+ + + + + + + +
- AT-x510-28GTX (L3 SW) + Aterm WG1200HP4
- - AT-x510-28GTX (L3 SW) + + Aterm WG1200HP4
- + + + + -
+
- WRC-BE36 (AP) + WRC-BE36
- - WRC-BE36 (AP) + + WRC-BE36 - + -
+
RPi4-01-PVE -
- (廃止予定 - - ) -
- - RPi4-01-PVE... + + RPi4-01-PVE - + -
-
-
- x86-01-pve -
-
-
-
- - x86-01-pve - -
-
-
- - - - - - - -
+
n1-pro-pve @@ -211,98 +674,172 @@
- + n1-pro-pve - + -
+
- DESKTOP-MLIP7CV + x86-01-pve
- - DESKTOP-MLIP7CV + + x86-01-pve - - - - - - - - - - - - - - - - - - - - - - - - + -
+
- 無線デバイス + + SwichBot + +
+ + (電力メータ) +
- - 無線デバイス + + SwichBot... - + + + + -
+
-
- SwitchBot +
+ The Internet
- - SwitchBot + + The Internet + + + + + + + +
+
+
+ Docomo +
+ + + Business +
+
+
+
+ + Docomo... + +
+
+
+ + + + + + + +
+
+
+ 0.6 +
+
+
+
+ + 0.6 + +
+
+
+ + + + + + + +
+
+
+ 0.8 +
+
+
+
+ + 0.8 + +
+
+
+ + + + + + + + + + + + + + + + + + + + + diff --git a/now/phys/sc-diagram_01.svg b/now/phys/sc-diagram_01.svg new file mode 100644 index 0000000..b5dd32b --- /dev/null +++ b/now/phys/sc-diagram_01.svg @@ -0,0 +1 @@ +
Power
Power
Power Strip
Power Strip
ONU
ONU
AT-x510-28GTX
AT-x510-28GTX
0.1
0.1
0.2
0.2
0.4
0.4
0.3
0.3
0.5
0.5
0.6
0.6
0.8
0.8
0.7
0.7
0.9
0.9
0.10
0.10
0.12
0.12
0.11
0.11
0.13
0.13
0.14
0.14
0.16
0.16
0.15
0.15
0.17
0.17
0.18
0.18
0.20
0.20
0.19
0.19
0.21
0.21
0.22
0.22
0.24
0.24
0.23
0.23
0.25
0.25
0.26
0.26
0.28
0.28
0.27
0.27
Aterm WG1200HP4
Aterm WG1200HP4
WRC-BE36
WRC-BE36
RPi4-01-PVE
RPi4-01-PVE
n1-pro-pve
n1-pro-pve
x86-01-pve
x86-01-pve
Power Strip
Power Strip
SwichBot
(電力メータ)
SwichBot...
SwichBot
(電力メータ)
SwichBot...
The Internet
The Internet
Docomo
Business
Docomo...
monitor-02 (VG245)
monitor-02 (VG245)
Power Strip
Power Strip
Text is not SVG - cannot display
\ No newline at end of file diff --git a/now/power/.gitkeep b/now/power/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/now/power/sc-diagram.drawio.svg b/now/power/sc-diagram.drawio.svg new file mode 100644 index 0000000..8f2b3a7 --- /dev/null +++ b/now/power/sc-diagram.drawio.svg @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + +
+
+
+ Power +
+
+
+
+ + Power + +
+
+
+ + + + + + + +
+
+
+ Power Strip +
+
+
+
+ + Power Strip + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ ONU +
+
+
+
+ + ONU + +
+
+
+ + + + + + + +
+
+
+ Aterm WG1200HP4 +
+
+
+
+ + Aterm WG1200HP4 + +
+
+
+ + + + + + + +
+
+
+ WRC-BE36 +
+
+
+
+ + WRC-BE36 + +
+
+
+ + + + + + + +
+
+
+ RPi4-01-PVE +
+
+
+
+ + RPi4-01-PVE + +
+
+
+ + + + + + + +
+
+
+ n1-pro-pve +
+
+
+
+ + n1-pro-pve + +
+
+
+ + + + + + + +
+
+
+ x86-01-pve +
+
+
+
+ + x86-01-pve + +
+
+
+ + + + + + + + + + +
+
+
+ + SwichBot + +
+ + (電力メータ) + +
+
+
+
+ + SwichBot... + +
+
+
+ + + + + + + +
+
+
+ AT-x510-28GTX +
+
+
+
+ + AT-x510-28GTX + +
+
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file