ICELANDDD/homelab-proxmox-infrastructure
GitHub: ICELANDDD/homelab-proxmox-infrastructure
一个基于 Proxmox VE 的家庭实验室基础设施项目,通过网络分段、防火墙规则和隔离架构来安全地部署 Web 应用和 MySQL 数据库。
Stars: 1 | Forks: 0
# 🏗️ Homelab Proxmox 基础设施
一个基于 **Proxmox VE** 构建的生产级家庭实验室基础设施,具有网络隔离、防火墙规则以及安全的 Web + 数据库架构。
## 📐 架构
```
Internet
│
▼
┌─────────────────────────────────┐
│ Router (192.168.1.1) │
└─────────────────────────────────┘
│
▼
┌──────────────────────────────────┐
│ Proxmox VE (192.168.1.50) │
│ │
│ ┌──────────┐ ┌─────────────┐ │
│ │ vmbr0 │ │ vmbr1 │ │
│ │ (Public) │ │ (Private) │ │
│ │192.168.1 │ │ 10.10.10.x │ │
│ └────┬─────┘ └──────┬──────┘ │
│ │ │ │
│ ┌────▼─────┐ ┌─────▼──────┐ │
│ │WebServer │ │ ServerDB │ │
│ │192.168.1 │──▶ |10.10.10.2 | |
│ │ .xxx | | | |
| |10.10.10.3│ │ (MySQL) │ │
│ └──────────┘ └────────────┘ │
└──────────────────────────────────┘
```
## 🔒 安全设计
| 组件 | 网络 | 访问权限 |
|---|---|---|
| WebServer | vmbr0 (192.168.1.x) | 公网(端口 80、443) |
| ServerDB | vmbr1 (10.10.10.x) | 仅限内部访问 |
| MySQL | 10.10.10.2:3306 | 仅限 WebServer |
| SSH | 仅限 WebServer | 基于密钥的身份验证 |
- **ServerDB 在配置完成后无法访问互联网**
- **数据库仅接受来自 WebServer** (10.10.10.3) 的连接
- 所有 VM 均配置了 **UFW 防火墙**
- **无密码 SSH** — 仅采用基于密钥的身份验证
## 🛠️ 技术栈
- **Hypervisor:** Proxmox VE 9.x
- **操作系统 (OS):** Ubuntu 24.04 LTS(所有 VM)
- **数据库:** MySQL 8.0
- **防火墙:** UFW + iptables
- **网络:** Linux Bridge (vmbr0, vmbr1)
## 📁 项目结构
```
homelab-proxmox-infrastructure/
├── README.md
├── docs/
│ ├── architecture.md
│ └── setup-guide.md
├── network/
│ ├── interfaces
│ ├── iptables-rules.sh
│ ├── netplan-webserver.yaml
│ └── netplan-serverdb.yaml
├── firewall/
│ ├── webserver-ufw.sh
│ └── serverdb-ufw.sh
└── mysql/
└── setup.sql
```
## 🚀 设置指南
### 1. Proxmox 网络
```
# 在 Proxmox Web UI 中添加 vmbr1 (Private Network)
# pve → Network → Create → Linux Bridge
# IP: 10.10.10.1/24
```
### 2. 为 ServerDB 启用路由
```
# 在 Proxmox shell 上
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o vmbr0 -j MASQUERADE
ufw route allow in on vmbr1 out on vmbr0
```
### 3. WebServer 防火墙
```
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
```
### 4. ServerDB 防火墙
```
# 仅允许来自 WebServer 的 MySQL
sudo ufw allow from 10.10.10.3 to any port 3306
sudo ufw enable
```
### 5. MySQL 设置
```
CREATE USER 'webuser'@'10.10.10.3' IDENTIFIED BY 'yourpassword';
CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON mydb.* TO 'webuser'@'10.10.10.3';
FLUSH PRIVILEGES;
```
### 6. 禁用 ServerDB 的互联网连接
```
# 在 Proxmox shell 上 — 在所有 packages 安装后运行
iptables -t nat -F POSTROUTING
```
## 📊 网络流向
```
# Web 流量
Internet → Router → WebServer (vmbr0) → App
# Database 连接
WebServer (10.10.10.3) → MySQL (10.10.10.2:3306)
# 已阻止
Internet → ServerDB ❌
LAN → ServerDB ❌
ServerDB → Internet ❌
```
## 📝 许可证
MIT © [ICELANDDD](https://github.com/ICELANDDD)
标签:Proxmox VE, 家庭实验室, 网络隔离, 虚拟化, 防火墙