1.安装并配置 DHCP 服务器
# 1. 安装 DHCP 服务器软件
dnf install -y dhcp-server
# 2. 配置 DHCP 服务器
cat > /etc/dhcp/dhcpd.conf << 'EOF'
# 全局配置
authoritative;
default-lease-time 600;
max-lease-time 7200;
# 日志配置
log-facility local7;
# 子网配置
subnet 192.168.10.0 netmask 255.255.255.0 {
# IP 地址池范围
range 192.168.10.30 192.168.10.200;
# 网关地址
option routers 192.168.10.254;
# 广播地址
option broadcast-address 192.168.10.255;
# DNS 服务器配置
option domain-name-servers 192.168.10.30, 192.168.10.40;
option domain-name "dns.linux.cn";
# 默认租约时间
default-lease-time 600;
max-lease-time 7200;
}
EOF
# 3. 配置 DHCP 服务监听的网卡
# 首先查看网卡名称(通常是 ens33、eth0 等)
ip addr show
# 编辑 DHCP 服务配置文件,假设网卡是 ens33
sed -i 's/^#DHCPDARGS=/DHCPDARGS=ens33/' /etc/sysconfig/dhcpd
# 或者手动编辑文件,在 DHCPDARGS 行指定网卡名称
echo 'DHCPDARGS="ens33"' >> /etc/sysconfig/dhcpd
# 4. 启动 DHCP 服务并设置为开机自启
systemctl start dhcpd
systemctl enable dhcpd
systemctl status dhcpd
# 5. 配置防火墙允许 DHCP 服务
firewall-cmd --permanent --add-service=dhcp
firewall-cmd --reload2. 配置 DNS 服务器
# 由于需要 DNS 服务器,我们可以配置一个简单的 DNS 服务器
# 安装 bind DNS 服务器
dnf install -y bind bind-utils
# 配置主配置文件
cat > /etc/named.conf << 'EOF'
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
managed-keys-directory "/var/named/dynamic";
geoip-directory "/usr/share/GeoIP";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "linux.cn" IN {
type master;
file "linux.cn.zone";
allow-update { none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
EOF
# 创建区域文件
cat > /var/named/linux.cn.zone << 'EOF'
$TTL 86400
@ IN SOA dns.linux.cn. admin.linux.cn. (
2024010101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS dns.linux.cn.
@ IN A 192.168.10.30
dns IN A 192.168.10.30
dns IN A 192.168.10.40
www IN A 192.168.10.50
web IN A 192.168.10.50
EOF
# 设置文件权限
chown named:named /var/named/linux.cn.zone
# 启动 DNS 服务
systemctl start named
systemctl enable named
# 配置防火墙允许 DNS 服务
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload3. 配置网络接口
# 为服务器配置静态 IP 地址
# 编辑网卡配置文件(假设网卡是 ens33)
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 << 'EOF'
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
# 为 DHCP 服务器配置 IP
IPADDR=192.168.10.20
PREFIX=24
GATEWAY=192.168.10.254
DNS1=192.168.10.30
DNS2=192.168.10.40
EOF
# 为 DNS 服务器添加第二个 IP 地址(192.168.10.30)
cat > /etc/sysconfig/network-scripts/ifcfg-ens33:1 << 'EOF'
DEVICE="ens33:1"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.10.30
PREFIX=24
EOF
# 为 WEB 服务器添加第三个 IP 地址(192.168.10.50)
cat > /etc/sysconfig/network-scripts/ifcfg-ens33:2 << 'EOF'
DEVICE="ens33:2"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.10.50
PREFIX=24
EOF
# 重启网络服务
systemctl restart NetworkManager
# 或者重启网络(如果使用 network 服务)
# systemctl restart network4. 配置 WEB 服务器
# 安装 nginx web 服务器
dnf install -y nginx
# 创建测试网页
cat > /usr/share/nginx/html/index.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
<title>Test Web Server</title>
</head>
<body>
<h1>Welcome to Test Web Server!</h1>
<p>Server IP: 192.168.10.50</p>
<p>Domain: dns.linux.cn</p>
<p>This is a test page for DHCP and DNS configuration.</p>
</body>
</html>
EOF
# 启动 web 服务
systemctl start nginx
systemctl enable nginx
# 配置防火墙允许 HTTP 服务
firewall-cmd --permanent --add-service=http
firewall-cmd --reload5. 测试 DHCP 服务
# 在一台客户端机器上测试(需要另一台机器)
# 在客户端执行以下命令:
# 1. 释放当前 IP(如果已有)
sudo dhclient -r
# 2. 获取新 IP
sudo dhclient
# 3. 查看获取的 IP 地址
ip addr show
# 4. 测试网络连接
ping -c 4 192.168.10.254 # 测试网关
ping -c 4 192.168.10.20 # 测试 DHCP 服务器
ping -c 4 192.168.10.30 # 测试 DNS 服务器
ping -c 4 192.168.10.50 # 测试 WEB 服务器
# 5. 测试 DNS 解析
nslookup dns.linux.cn
nslookup web.linux.cn
nslookup www.linux.cn
# 6. 测试 WEB 访问
curl http://192.168.10.50
curl http://web.linux.cn
curl http://www.linux.cn
# 7. 查看 DHCP 租约信息
cat /var/lib/dhclient/dhclient.leases6. 查看 DHCP 服务器状态和日志
# 在 DHCP 服务器上查看服务状态
systemctl status dhcpd
# 查看 DHCP 分配日志
tail -f /var/log/messages | grep dhcpd
# 或者使用 journalctl
journalctl -u dhcpd -f
# 查看当前的 DHCP 租约
cat /var/lib/dhcpd/dhcpd.leases
# 查看网络接口统计
netstat -anu | grep :67
# 测试 DHCP 服务器配置文件的语法
dhcpd -t -cf /etc/dhcp/dhcpd.conf7. 故障排除命令
# 如果 DHCP 服务启动失败
# 1. 检查配置文件语法
dhcpd -t -cf /etc/dhcp/dhcpd.conf
# 2. 检查端口是否被占用
netstat -tulpn | grep :67
# 3. 检查 SELinux 状态(openEuler 默认可能开启 SELinux)
getenforce
# 如果 enforcing,可以暂时关闭或设置规则
setenforce 0 # 临时关闭(重启后恢复)
# 或添加 SELinux 规则
setsebool -P dhcpd_use_ldap on
# 4. 检查防火墙规则
firewall-cmd --list-all
# 5. 查看详细错误信息
journalctl -xe | grep dhcpd完整测试流程
在服务器端执行:
- 安装和配置 DHCP、DNS、WEB 服务
- 配置网络接口
- 启动所有服务
在客户端执行:
# 设置网络为 DHCP 获取 nmcli con mod "Wired connection 1" ipv4.method auto nmcli con down "Wired connection 1" nmcli con up "Wired connection 1" # 或者使用 dhclient dhclient -r && dhclient # 验证 IP 地址是否在 192.168.10.30-200 范围内 ip addr show # 测试网络连通性 ping 192.168.10.254 ping 192.168.10.50 # 测试 WEB 访问 curl http://192.168.10.50