项目概述:构建一个小型企业的基础网络服务环境
项目目标: 我们将模拟一个小型公司的IT需求,为其搭建一套稳定、安全、可扩展的基础网络服务,这套服务将包括:
- DHCP服务:为内网客户端自动分配IP地址。
- DNS服务:实现公司内部域名解析,并作为客户端的DNS解析器。
- Web服务:部署公司内部网站和员工个人博客。
- 文件共享服务:使用Samba实现跨平台的文件共享。
- 基础安全:使用
firewalld配置防火墙规则,并使用fail2ban防止暴力破解。
技术栈:

- 操作系统:CentOS Stream 9 / Rocky Linux 9 (或 Ubuntu Server 22.04)
- 核心软件:
- DHCP:
dhcp-server - DNS:
bind - Web:
httpd(Apache) - 文件共享:
samba - 防火墙:
firewalld - 入侵防御:
fail2ban
- DHCP:
网络规划:
- 服务器IP:
168.1.10(网关:168.1.1) - DNS域名:
mycompany.lan - Web根目录:
/var/www/html - 共享目录:
/srv/samba/share
第一步:环境准备与系统初始化
在开始之前,你需要准备一台或多台Linux虚拟机,为了完整体验,建议至少准备两台:
- Server (服务器):安装CentOS/Rocky Linux 9,IP设为静态
168.1.10。 - Client (客户端):可以是另一台Linux或Windows,用于测试服务。
服务器初始化操作:
-
更新系统
# 对于 CentOS/Rocky Linux sudo dnf update -y # 对于 Ubuntu sudo apt update && sudo apt upgrade -y
-
配置静态IP地址 编辑网络配置文件,确保服务器IP是固定的,以CentOS/Rocky为例:
sudo nmcli con mod "ens33" ipv4.method manual ipv4.addresses 192.168.1.10/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.10 sudo nmcli con up "ens33"
验证IP:
ip a -
配置主机名
sudo hostnamectl set-hostname server.mycompany.lan
之后,在客户端测试是否能通过
ping server.mycompany.lan解析到168.1.10。 -
关闭防火墙和SELinux(可选,初学者建议,生产环境必须谨慎配置)

# 关闭 firewalld sudo systemctl stop firewalld sudo systemctl disable firewalld # 关闭 SELinux (需要重启) sudo setenforce 0 sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
第二步:部署DHCP服务
目标:让客户端自动获取到168.1.0/24网段的IP地址,DNS服务器为我们的服务器168.1.10。
-
安装DHCP服务
sudo dnf install -y dhcp-server
-
配置DHCP 备份并编辑主配置文件:
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak sudo vi /etc/dhcp/dhcpd.conf
清空文件内容,然后添加以下配置:
# 默认租约时间(秒) default-lease-time 600; # 最大租约时间(秒) max-lease-time 7200; # 声明DNS服务器 option domain-name-servers 192.168.1.10; option domain-name "mycompany.lan"; # 声明我们管理的网络 subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; # 可分配的IP范围 option routers 192.168.1.1; # 网关地址 } -
启动并设置开机自启
sudo systemctl start dhcpd sudo systemctl enable dhcpd
-
测试 在客户端(Windows/Linux)将网络设置改为“自动获取IP地址”,然后使用
ipconfig /renew(Windows) 或dhclient(Linux) 命令,检查是否成功获取到168.1.100-200之间的IP。
第三步:部署DNS服务
目标:实现域名解析,例如将 www.mycompany.lan 解析到Web服务器IP,将 files.mycompany.lan 解析到文件共享服务器IP。
-
安装BIND DNS服务
sudo dnf install -y bind bind-utils
-
配置主配置文件 编辑
/etc/named.conf,确保以下配置正确:
sudo vi /etc/named.conf
检查
listen-on和allow-query,通常修改为:listen-on port 53 { 127.0.0.1; 192.168.1.10; }; // 允许本机和服务器自身查询 allow-query { localhost; 192.168.1.0/24; }; // 允许内网所有客户端查询 -
创建区域文件 我们需要为
mycompany.lan域创建一个正向区域和一个反向区域。-
a. 编辑主区域配置文件
sudo vi /etc/named.conf
在文件末尾添加:
zone "mycompany.lan" IN { type master; file "mycompany.lan.zone"; allow-update { none; }; }; zone "1.168.192.in-addr.arpa" IN { type master; file "192.168.1.zone"; allow-update { none; }; }; -
b. 创建正向区域文件
sudo cp /var/named/named.localhost /var/named/mycompany.lan.zone sudo vi /var/named/mycompany.lan.zone
如下:
$TTL 1D @ IN SOA ns1.mycompany.lan. admin.mycompany.lan. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns1.mycompany.lan. A 192.168.1.10 ns1 A 192.168.1.10 www A 192.168.1.10 files A 192.168.1.10 -
c. 创建反向区域文件
sudo cp /var/named/named.loopback /var/named/192.168.1.zone sudo vi /var/named/192.168.1.zone
如下:
$TTL 1D @ IN SOA ns1.mycompany.lan. admin.mycompany.lan. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns1.mycompany.lan. 10 IN PTR server.mycompany.lan. 10 IN PTR ns1.mycompany.lan. 10 IN PTR www.mycompany.lan. 10 IN PTR files.mycompany.lan.
-
-
启动并设置开机自启
sudo systemctl start named sudo systemctl enable named
-
测试 在服务器或客户端上使用
dig或nslookup命令测试解析:dig www.mycompany.lan @192.168.1.10
