当前位置: 首页 > article >正文

Ubuntu18.04 搭建DHCP服务器

在Ubuntu系统中,DHCP(动态主机配置协议)服务通常由isc-dhcp-server软件包提供。要配置和使用DHCP服务,你可以按照以下步骤操作:

1. 安装DHCP服务器

首先,你需要安装isc-dhcp-server。打开终端并输入以下命令:

sudo apt update
sudo apt install isc-dhcp-server


2. 配置DHCP服务器

安装完成后,你需要编辑DHCP的配置文件。配置文件通常位于/etc/dhcp/dhcpd.conf。你可以使用文本编辑器来编辑这个文件,例如使用nano:

sudo nano /etc/dhcp/dhcpd.conf


3. 编辑配置文件

在dhcpd.conf文件中,你可以定义网络配置、IP地址池、DNS设置等。下面是一个基本的配置示例:

# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
# Attention: If /etc/ltsp/dhcpd.conf exists, that will be used as
# configuration file instead of this file.
#

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

#默认租期(秒)
default-lease-time 600;
#最大租期(秒)
max-lease-time 7200;

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
#log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name "internal.example.org";
#  option subnet-mask 255.255.255.224;
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

subnet 192.168.2.0 netmask 255.255.255.0 {
  range 192.168.2.100 192.168.2.200;        #IP地址池范围    
  option routers 192.168.2.1;            #默认网关
  option domain-name-servers 8.8.8.8, 4.4.4.4;    #DNS服务器地址
  interface eth0;                #指定固定网口
}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename "vmunix.passacaglia";
#  server-name "toccata.example.com";
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.example.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class "foo" {
#  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of "foo";
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of "foo";
#    range 10.0.29.10 10.0.29.230;
#  }
#}

4. 启用DHCP服务

确保DHCP服务已经启动:

sudo systemctl start isc-dhcp-server

为了使DHCP服务在系统启动时自动启动,你可以启用它:

sudo systemctl enable isc-dhcp-server


5. 检查DHCP服务状态

你可以检查DHCP服务的状态来确认它是否正在运行:

sudo systemctl status isc-dhcp-server


6. 防火墙配置(可选)

如果你的服务器上运行了防火墙(如UFW),你需要允许UDP端口67(DHCP客户端到服务器)和UDP端口68(DHCP服务器到客户端):

sudo ufw allow 67/udp
sudo ufw allow 68/udp


7. 测试DHCP配置

你可以在局域网中的另一台设备上测试DHCP配置,看是否能够自动获取IP地址。或者,你也可以使用如dhclient的命令行工具在测试服务器上请求IP地址:

sudo dhclient -r  # 释放当前IP地址(如果有的话)
sudo dhclient     # 请求新的IP地址(应该会从DHCP服务器获取)

按照这些步骤,你应该能够成功配置和运行Ubuntu上的DHCP服务。如果你遇到任何问题,检查配置文件中的语法错误或查看日志文件/var/log/syslog或/var/log/syslog中的相关条目可能会帮助诊断问题。


http://www.kler.cn/a/516925.html

相关文章:

  • Blazor-Blazor呈现概念
  • ray.rllib 入门实践-2:配置算法
  • 算法基础 -- 快速幂算法详解
  • 终极的复杂,是简单
  • 【Go面试】工作经验篇 (持续整合)
  • Vue3.5 企业级管理系统实战(三):页面布局及样式处理 (Scss UnoCSS )
  • 08.七种排序算法实现(C语言)
  • Kafka中bin目录下面kafka-run-class.sh脚本中的JAVA_HOME
  • 浅谈APP之历史股票通过echarts绘图
  • 回归预测 | MATLAB基于TCN-BiGRU时间卷积神经网络结合双向门控循环单元多输入单输出回归预测
  • Jenkins pipline怎么设置定时跑脚本
  • js封装vue组件
  • C# OpenCV机器视觉:卡尔曼滤波
  • qt QNetworkRequest详解
  • 【springboot集成knife4j】
  • c++常见设计模式之装饰器模式
  • GPS信号生成:C/A码序列生成【MATLAB实现】
  • 基于单片机的水果保鲜仓库设计
  • OpenCV:高通滤波之索贝尔、沙尔和拉普拉斯
  • Day 16 卡玛笔记
  • opengrok_windows_多工程环境搭建
  • 小哆啦的编程冒险:罗马数字转整数
  • Golang笔记——静态强类型、编译型、并发型语言
  • Android OpenGL(六) 纹理
  • doris:Routine Load
  • ReUtil- 一个强大的正则表达式工具库