GARJE-01/Mini-Enterprise-Network

GitHub: GARJE-01/Mini-Enterprise-Network

一套模拟小型企业网络的综合实验方案,通过Cisco模拟器设计拓扑并利用虚拟机部署Linux核心服务与防火墙策略。

Stars: 0 | Forks: 0

# 🏢 带有服务器基础设施的小型企业网络 **作者:** Mayur Garje **日期:** 2026年5月 **状态:** ✅ 已完成并可供演示 ## 📌 项目概述 本项目模拟了一个真实的小型企业网络环境——即网络工程师在入职第一天就会被要求设计和部署的那种网络。 它由两部分组成: | 部分 | 工具 | 涵盖内容 | | --------------------------- | ------------------------- | --------------------------------------------------------------- | | **A — 网络设计** | Cisco Packet Tracer | VLAN、VLAN 间路由、ACL、NAT | | **B — 实时基础设施** | VMware + Ubuntu + pfSense | DNS、DHCP、Web 服务器、文件服务器、防火墙、内容过滤 | A 部分展示了 **Cisco CLI 和网络设计技能**——与 CCNA 考试直接对标。 B 部分展示了 **真实的服务器和防火墙部署技能**——在实际家庭网络中运行真实的软件。 ## 🎯 解决的实际问题 | 问题 | 解决方案 | | ----------------------------- | ------------------------------------------- | | 没有集中的 IP 管理 | Ubuntu 上的 ISC-DHCP 服务器 + pfSense DHCP | | 没有内部域名解析 | 带有自定义区域 (company.local) 的 BIND9 DNS | | 没有内部网站 | Apache2 Web 服务器——企业内网页面 | | 没有安全的文件共享 | Samba 文件服务器——可从 Windows 访问 | | 没有网络层面的安全性 | 带有 NAT 和 ACL 规则的 pfSense 防火墙 | | 不受限制的互联网访问 | pfBlockerNG DNSBL——拦截了 17,000+ 个域名 | | 用户绕过 DNS | DNS 强制——端口 53 防火墙规则 | ## 🗺️ 网络拓扑 ### A 部分 — Cisco Packet Tracer ![Packet Tracer 拓扑](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0a122a8b1f085052.png) ``` [ Internet / ISP ] | [ R1 — 2911 ] Inter-VLAN routing + NAT + ACL | [ SW1 — 2960 ] 802.1Q Trunk / | | \ VLAN10 VLAN20 VLAN30 VLAN40 Office Server Guest Mgmt ``` ### B 部分 — VMware (实时) ``` [ Windows 11 Host PC ] | [ VMware NAT ] 192.168.211.2 / \ [ pfSense VM ] [ Ubuntu Server VM ] WAN: 192.168.211.134 IP: 192.168.20.101 LAN: 192.168.20.1 DHCP | DNS | Firewall DNS | DHCP | Apache | Samba pfBlockerNG DNSBL ``` ## 📋 VLAN 设计(A 部分) | VLAN | 名称 | 子网 | 网关 | 用途 | | ---- | ---------- | --------------- | ------------ | ------------------------- | | 10 | Office | 192.168.10.0/24 | 192.168.10.1 | 员工工作站 | | 20 | Server | 192.168.20.0/24 | 192.168.20.1 | 内部服务器 | | 30 | Guest | 192.168.30.0/24 | 192.168.30.1 | 仅互联网访问 | | 40 | Management | 192.168.40.0/24 | 192.168.40.1 | 网络设备管理 | ## 🖥️ 部署的服务(B 部分) ### Ubuntu Server 虚拟机 — 192.168.20.101 | 服务 | 软件包 | 端口 | 作用 | | ------- | -------- | ---- | -------------------------------------------------- | | DNS | BIND9 | 53 | 解析 company.local——转发外部查询 | | DHCP | ISC-DHCP | 67 | 自动为局域网设备分配 IP | | Web | Apache2 | 80 | 托管公司内网页面 | | Files | Samba | 445 | 可从 Windows 访问的共享文件夹 | | Remote | OpenSSH | 22 | 远程终端访问 | ### pfSense 防火墙虚拟机 — 192.168.20.1 | 功能 | 详细信息 | | ----------------- | ---------------------------------------------- | | 防火墙 | 7 条规则——状态数据包检查 | | NAT | LAN → WAN 转换以提供互联网访问 | | DHCP | 192.168.20.100 – 192.168.20.199 地址池 | | DNS 解析器 | 具有转发模式 + 域名覆盖的 Unbound | | DNS 强制 | 规则 2+3——阻止外部 DNS 绕过 | | 内容过滤 | pfBlockerNG DNSBL——拦截了 17,004 个域名 | ## 🔥 pfSense 防火墙规则 | # | 状态 | 协议 | 来源 | 目标 | 端口 | 用途 | | --- | ------ | -------- | ------ | ------------ | ------- | ------------------------------------ | | 1 | ✅ | Any | Any | LAN Address | 80, 443 | 防锁定——GUI 始终可访问 | | 2 | ✅ | TCP | Any | 192.168.20.1 | 53 | 允许 DNS 指向 pfSense | | 3 | ❌\* | TCP/UDP | Any | Any | 53 | 阻止外部 DNS——无法绕过 | | 4 | 🔶 | IPv4 | Any | pfB_PRI1_v4 | Any | pfBlockerNG IP 拦截 (自动) | | 5 | ❌ | TCP/UDP | Any | BLOCK_SITES | Any | 拦截社交媒体 (已禁用) | | 6 | ✅ | IPv4 | LAN | Any | Any | 默认允许局域网到互联网 | | 7 | ✅ | IPv6 | LAN | Any | Any | 默认允许局域网 IPv6 | \*规则 3 是 DNS 强制规则——启用后,客户端将无法通过将其 DNS 更改为 8.8.8.8 来绕过 pfBlockerNG。 ## 🚫 内容过滤 — pfBlockerNG ### 工作原理 ``` Client: what is youtube.com? → pfSense DNS (192.168.20.1:53) → pfBlockerNG DNSBL intercepts → Returns: 10.10.10.1 (sinkhole) → Client connects to 10.10.10.1 → nothing there → YouTube inaccessible ✅ ``` ### 激活的拦截列表 | Feed | 域名 | 更新 | | --------------------- | ----------- | ------- | | StevenBlack_ADs | 16,998 | 每日 | | Custom_List (YouTube) | 6 | 手动 | | **总计** | **17,004+** | — | ### 被拦截的 YouTube 域名 ``` youtube.com www.youtube.com m.youtube.com ytimg.com googlevideo.com youtu.be ``` ### 验证 — YouTube 已被拦截 ![YouTube 已拦截](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/f27805cbc9085053.png) ``` C:\Users\MAYUR> nslookup youtube.com Server: pfSense.lab.local Address: 192.168.20.1 Name: youtube.com Address: 10.10.10.1 ← sinkhole IP — blocked ✅ ``` ### 实时拦截警报 ![pfBlockerNG 警报](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6d7a198c49085055.png) pfBlockerNG 积极拦截来自 Windows PC 的广告和跟踪域名的实时证明。 ## 📸 关键截图 ### 网络拓扑 ![Packet Tracer 拓扑](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0a122a8b1f085052.png) _Cisco Packet Tracer 中的 4-VLAN 企业拓扑_ ### DNS 验证 ![DNS Ping](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ee3cfbaf17085056.png) _Windows 正在 ping myserver.local——DNS 正确解析_ ![外部 DNS](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/79ccb5bdd0085057.png) _外部 DNS 转发正常——google.com 通过 Ubuntu BIND9 解析_ ### Samba 文件服务器 ![Samba Windows](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ca98f6b48b085058.png) _Windows 文件资源管理器正在访问 Linux 服务器上的 CompanyShare_ ### Apache Web 服务器 ![Apache IP](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6765d6cbd9085059.png) _通过 IP 访问的公司内网页面_ ![Apache 域名](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c8563d1104085100.png) _通过域名访问的公司内网页面——完整的 DNS 链正常工作_ ### pfSense 仪表板 ![pfSense 仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/9028121713085102.png) _pfSense 仪表板显示两个接口均已 UP_ ### pfSense DHCP ![pfSense DHCP](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0d4957b65e085103.png) _已配置 DHCP 地址池 192.168.20.100 – 192.168.20.199_ ### pfBlockerNG ![pfBlockerNG](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/1dd7d342cf085104.png) _DNSBL 组——ADs_Basic 处于活动状态,包含 16,998 个域名_ ### YouTube 已拦截 ![YouTube 已拦截](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/f27805cbc9085053.png) _YouTube 解析到接收域 10.10.10.1——已被拦截_ ### 实时拦截警报 ![拦截警报](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6d7a198c49085055.png) _实时 DNSBL 拦截日志——广告信标被自动拦截_ ## 📁 文档 | 文档 | 内容 | | ----------------------------------------------------------------- | --------------------------------------------------------- | | [01-NETWORK-TOPOLOGY.md](docs/01-NETWORK-TOPOLOGY.md) | 完整的网络设计——VLAN、IP 寻址、流量走向 | | [02-UBUNTU-SERVER-SETUP.md](docs/02-UBUNTU-SERVER-SETUP.md) | DNS、DHCP、Apache、Samba——完整设置指南 | | [03-PFSENSE-SETUP.md](docs/03-PFSENSE-SETUP.md) | pfSense 安装、向导、DHCP、DNS 解析器、网关 | | [04-PFSENSE-FIREWALL-RULES.md](docs/04-PFSENSE-FIREWALL-RULES.md) | 全部 7 条规则——DNS 强制架构说明 | | [05-PFBLOCKERNG-SETUP.md](docs/05-PFBLOCKERNG-SETUP.md) | pfBlockerNG 安装、DNSBL、YouTube 拦截、报告 | | [06-TROUBLESHOOTING.md](docs/06-TROUBLESHOOTING.md) | 遇到的 12 个真实错误——每个的根本原因和解决方法 | ## 🛠️ 工具与技术 | 工具 | 版本 | 用途 | 成本 | | ---------------------- | ------------- | ------------------ | --------------- | | Cisco Packet Tracer | 最新版 | 网络模拟 | 免费 (NetAcad) | | VMware Workstation Pro | 最新版 | 虚拟机主机 | 免费 (个人版) | | Ubuntu Server | 22.04 LTS | 服务器操作系统 | 免费 | | BIND9 | 9.18 | DNS 服务器 | 免费 | | ISC-DHCP | 4.4 | DHCP 服务器 | 免费 | | Apache2 | 2.4 | Web 服务器 | 免费 | | Samba | 4.x | 文件服务器 | 免费 | | pfSense | 2.8.1-RELEASE | 防火墙 | 免费 | | pfBlockerNG | 3.2.8 | 内容过滤 | 免费 | | OpenSSH | 内置 | 远程访问 | 免费 | **总成本:₹0** ## ⚠️ 已知局限性 **1. Packet Tracer 是模拟的——未连接到虚拟机** Packet Tracer 在一个隔离的模拟环境中运行。它无法与 VMware 虚拟机或真实网络设备通信。A 部分展示 Cisco CLI 技能;B 部分展示实际部署技能。它们是刻意分开的。 **2. B 部分中没有 VLAN** VMware 设置使用扁平的 192.168.20.0/24 网络。VLAN 分段在 A 部分中得到了充分展示。如果没有额外的硬件或 vSphere Enterprise,VMware Workstation Pro 不支持托管 VLAN 交换。 **3. SSH 加密是基础的** Root 登录已被禁用 (`PermitRootLogin no`),但未实现基于密钥的身份验证。密码身份验证仍然启用。完整的 SSH 密钥加固计划作为下一阶段的改进。 **4. Samba 没有用户身份验证** CompanyShare 配置为 `guest ok = yes`——无需密码。在生产环境中,将配置基于用户的 Samba 组身份验证。 **5. Apache 上没有 SSL** 内网页面运行在 HTTP(端口 80)上。未配置 SSL 证书。在生产环境中,将使用 Let's Encrypt 或内部 CA。 ## 🔧 遇到并修复的错误 在此项目期间遇到了 12 个真实错误并已修复。 完整文档见 [06-TROUBLESHOOTING.md](docs/06-TROUBLESHOOTING.md)。 快速摘要: | 错误 | 修复方法 | | ----------------------------- | ------------------------------------------ | | VMware 无法复制粘贴 | 安装了 open-vm-tools | | bind9.service 别名被拒绝 | 使用了 named 而不是 bind9 | | 从 Windows 发出的 DNS 超时 | 在 named.conf.options 中添加了 listen-on | | DHCP 未分配 IP | 设置了 INTERFACESv4="ens33" | | pfSense TTL 过期 | 将默认网关明确设置为 WAN_DHCP | | pfBlockerNG 未拦截 | 保存后运行了 Force Reload → All | | DNS 强制破坏了所有 DNS | 将允许规则移至阻止规则之前 | ## 🧠 我学到了什么 - VLAN 如何划分网络以及企业为何使用它们 - 使用 802.1Q 子接口的单臂路由器 VLAN 间路由 - NAT/PAT 如何将私有 IP 转换为单个公共 IP - ACL 如何在网络段之间强制执行流量规则 - BIND9 DNS 服务器——正向区域、反向区域、转发器 ISC-DHCP 服务器——作用域、选项、接口绑定 - Apache2 Web 服务器——托管并通过主机名访问 - Samba 文件服务器——跨平台的 Linux/Windows 文件共享 - pfSense 防火墙——安装、NAT、DHCP、DNS 解析器 - 防火墙规则顺序——为什么特定规则必须在通用规则之前 - DNS 强制——允许 pfSense DNS,阻止所有外部 DNS - pfBlockerNG DNSBL——DNS 接收域的工作原理 - 基于 IP 和基于 DNS 的内容过滤之间的区别 - FreeBSD 与 Linux 服务管理的差异 - 阅读系统日志——区分真实错误与干扰信息 - 真实的故障排除——12 个问题,12 个修复,0 次重置 ## 📝 简历要点 ``` • Designed a 4-VLAN enterprise network topology in Cisco Packet Tracer with router-on-a-stick inter-VLAN routing, 802.1Q trunking, extended ACLs and NAT/PAT — simulating a complete office network infrastructure. • Deployed Ubuntu Server 22.04 on VMware with BIND9 DNS (forward/reverse zones for company.local), ISC-DHCP server, Apache2 web server with custom intranet page, and Samba file server accessible from Windows. • Configured pfSense firewall with NAT, DHCP, DNS resolver with forwarding mode and domain override — enforced DNS routing via firewall rules preventing clients from bypassing internal DNS using external resolvers. • Implemented pfBlockerNG DNSBL content filtering with StevenBlack_ADs feed (16,998 blocked domains) and custom YouTube CDN block list — verified blocking via nslookup returning sinkhole IP 10.10.10.1; confirmed real-time alerts in pfBlockerNG Reports dashboard. ```

📬 Contact


LinkedIn     GitHub     Facebook

## 🎓 最后说明 _本项目完全在一台个人的 Windows 11 笔记本电脑上使用免费和开源工具构建。B 部分未使用任何物理 Cisco 硬件。_ **最后更新**:2026年5月2日 **版本**:1.0 (完整版)
标签:ACL, Apache, BIND9, CCNA实验, DHCP服务器, DNSBL, DNS服务器, Google搜索, Linux服务器管理, NAT, pfBlockerNG, pfSense防火墙, Samba, Ubuntu服务器, VLAN, VMware虚拟化, Web服务器, 中小企业网络, 企业网络架构, 内网搭建, 域名黑名单, 思科Packet Tracer, 文件服务器, 流量捕获, 系统运维, 网络安全, 网络工程, 网络拓扑, 网络服务部署, 隐私保护