diff --git a/README.md b/README.md index 5b5cd7b..46819be 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,136 @@ # OpenWrt 管理指令 **目標設備**:`192.168.42.10`(OpenWrt 24.10.4) -**WAN IP**:`125.229.110.50`(PPPoE) +**WAN IP**:`125.229.110.50`(PPPoE / HiNet) + +--- + +## 整體架構圖 + +### 網路拓撲 + +``` + Internet (HiNet) + │ + PPPoE 125.229.110.50 + │ + ┌────────────────────▼────────────────────┐ + │ OpenWrt 24.10.4 │ + │ 192.168.42.10 │ + │ │ + │ ┌─ 服務 ──────────────────────────┐ │ + │ │ dnsmasq odhcpd sqm banip │ │ + │ │ miniupnpd dropbear uhttpd │ │ + │ └─────────────────────────────────┘ │ + │ │ + │ ┌─ 防火牆 (nftables / fw4) ────────┐ │ + │ │ taiwan_ips set(每週一 04:00 更新)│ │ + │ └─────────────────────────────────┘ │ + │ │ + │ ┌─ WireGuard wg0 ──────────────────┐ │ + │ │ 10.0.0.1/24 port 51820/UDP │ │ + │ └─────────────────────────────────┘ │ + └────────────────┬────────────────────────┘ + │ br-lan 192.168.42.0/24 + │ + ┌─────────┬───────────┼───────────┬─────────────┐ + ▼ ▼ ▼ ▼ ▼ + .100 .101 .115 .117 .124 / .126 +Jump Box RustDesk SQL Server SQL Server 反代 / Headscale +``` + +--- + +### 防火牆區域(Firewall Zones) + +``` +┌──────────┐ REJECT in ┌──────────┐ ACCEPT in +│ wan │ ──────────────▶ │ lan │ ◀──────────── +│(pppoe_wan│ REJECT fwd │192.168.42│ ACCEPT fwd +│ wan6) │ │ .0/24 │ +└──────────┘ └──────────┘ + ▲ + ACCEPT in + ACCEPT fwd + ┌──────────┐ + │ vpn │ + │ (wg0) │ + │10.0.0/24 │ + └──────────┘ +``` + +--- + +### 對外開放的 Port(WAN → LAN) + +| WAN Port | 協定 | 目標 | 服務 | Taiwan IP 限制 | +|---|---|---|---|:---:| +| `22` | TCP | `192.168.42.100:22` | SSH Jump Box | ✅ | +| `80` | TCP | `192.168.42.124:80` | Nginx Proxy Manager | — | +| `443` | TCP | `192.168.42.124:443` | Nginx Proxy Manager | — | +| `7835` | TCP | `192.168.42.100:7835` | Bore Tunnel | ✅ | +| `8080` | TCP | `192.168.42.126:8080` | Headscale | — | +| `9090` | TCP | `192.168.42.126:9090` | Headscale | — | +| `9000–10000` | TCP | `192.168.42.100:9000–10000` | Bore Range | — | +| `21115–21119` | TCP/UDP | `192.168.42.101:21115–21119` | RustDesk HBBS/HBBR | — | +| `30022` | TCP | `192.168.42.115:22` | SSH → .115 | — | +| `50022` | TCP | `192.168.42.117:22` | SSH → .117 | — | +| `50443` | TCP | `192.168.42.126:50443` | Headscale DERP | — | +| `51433` | TCP | `192.168.42.115:1433` | SQL Server (.115) | — | +| `31433` | TCP | `192.168.42.117:1433` | SQL Server (.117) | — | +| `51820` | UDP | router wg0 | WireGuard | — | + +--- + +### LAN 裝置 + +| IP | 主機名稱 / 用途 | +|---|---| +| `192.168.42.10` | OpenWrt 路由器 | +| `192.168.42.100` | Jump Box(SSH、Bore)| +| `192.168.42.101` | RustDesk Server | +| `192.168.42.115` | SQL Server A | +| `192.168.42.117` | SQL Server B | +| `192.168.42.124` | Nginx Proxy Manager + Gitea(:31337)| +| `192.168.42.126` | Headscale | +| `192.168.42.220` | TimmydeMBP | + +--- + +### WireGuard VPN 拓撲 + +``` +外部(任意網路) + │ + │ UDP 51820 + ▼ + 192.168.42.10 ←→ wg0: 10.0.0.1/24 + │ + ├── 10.0.0.2 Workstation + └── 10.0.0.3 iPhone 15 Pro Max + +VPN client 加入後可存取: + ├── 192.168.42.0/24 (整個 LAN) + └── 10.0.0.0/24 (其他 VPN peer) +``` + +--- + +### Taiwan IP 過濾機制 + +``` +外部請求 + │ + ▼ +nftables 檢查 source IP 是否在 taiwan_ips set + │ + ├── 是 → 允許通過(SSH Jump Box、Bore Tunnel) + └── 否 → REJECT +``` + +- IP 清單來源:`https://www.ipdeny.com/ipblocks/data/countries/tw.zone` +- 自動更新:每週一 04:00(`crontab`) +- 手動更新:`sh /root/42_10/update_tw_ip.sh` ---