草庐IT

DHCP配置——Linux网络服务

H unter 2024-05-23 原文

一、了解DHCP服务

1.1 DHCP定义

DHCP( Dynamic Host Configuration Protocol ,动态主机配置协议 )
由 Internet 工作任务小组设计开发
专门用于为 TCP/IP 网络中的计算机制动分配TCP/IP 参数的协议

DHCP( 动态主机配置协议)是一个局域网的网络协议,指的是由服务器控制一段 IP 地址范围,客户机登录服务器时可以自动获取服务器分配的 IP 地址和子网掩码。在默认情况下,DHCP作为Windows Server 的一个服务组件是不会被系统自动安装的,需要管理员手动安装并进行配置。

DHCP 采用 C/S 架构:C = client(客户机),S = server (服务器),客户机/服务器 架构

DHCP服务对应传输层 UDP 协议,因为是 C/S 架构 ,所以客户机端口号是67服务器端口号是68

1.2 DHCP的优点

1.减少管理员的工作量
2.避免输入错误的可能
3.避免IP地址冲突
4.当更改IP地址段时,不需要重新配置每个用户的IP地址
5.提高了IP地址的利用率
6.方便客户端的配置

1.3 DHCP的分配方式

自动分配:分配到一个IP地址以后永久使用
手动分配:由DHCP服务器管理员专门指定IP地址
动态分配:使用完后释放该IP,供其他客户机使用
 

二、DHCP工作原理

客户机从DHCP服务器获得IP地址的过程称为DHCP的租约过程 :

1.客户机请求IP地址

当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址此时DHCP客户机以广播方式发送DHCP Discover发现信息来寻找DHCP服务器

2.服务器响应

DHCP服务器接收到来自客户机请求lP地址的信息时,在自己的IP地址池中查找是否有合法的IP地址提供给客户机,如果有,DHCP服务器将此IP地址做上标记,加入到DHCP Offer的消息中,然后广播一则DHCP Offer消息

3.客户机选择IP地址

DHCP客户机从接收到的第一个DHCP Offer 消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机

4.服务器确定租约

DHCP服务器接收到DHCP Request 消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息,当客户机收到DHCP ACK消息时,配置IP地址,完成TCP/IP 的初始化

重新登陆:

DHCP客户机每次重新登录网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息

更新租约:

当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约,客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约
 

三、使用 DHCP 动态配置主机地址

3.1 DHCP 服务

  1. 为大量客户自动分配地址,提供集中管理

  2. 减轻管理和维护成本、提高网络配置效率

3.2 可分配的地址信息

  1. 网卡的IP地址、子网掩码
  2. 对应的网络地址、官博地址
  3. 默认网关地址
  4. DNS服务器地址

四、DHCP的中继原理与配置

4.1配置 DHCP 服务器

ls | grep dhcp 

rpm -qa | grep dhcp

yum install -y dhcp             //安装dhcp服务

cd /etc/dhcp/
ls
less dhcpd.conf
cp /usr/share/doc/ dhcp-4.2.5
ls
less dhcpd.conf.example
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
设置全局配置参数
default-lease-time 21600;  //默认租约为6小时,单位为秒
max-lease-time 43200;   //最大租约为12小时,单位为秒
option domain-name “benet.com” ;   //指定默认域名
option domain-name-servers 202.106.0.20,202.106.148.1;   //指定DNS服务器地址
ddns-update-style none;   //禁用DNS动态更新
subnet网段声明(作用于整个子网段,部分配置参数优先级高于全局配置参数)
subnet 192.168.80.0 netmask 255.255.255.0 {  //声明要分配的网段地址
range 192.168.80.10 192.168.80.20;//设置地址池
option routers 192.168.80.254; //指定默认网关地址
}

subnet网段声明(作用于整个子网段,部分配置参数优先级高于全局配置参数)
subnet 192.168.80.0 netmask 255.255.255.0 {  //声明要分配的网段地址
range 192.168.80.10 192.168.80.20; //设置地址池
option routers 192.168.80.254; //指定默认网关地址
}

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.254;
}

subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.20 192.168.2.30;
option routers 192.168.2.254;
}

host主机声明(给单机分配固定的IP地址)
host hostname {                                  //指定需要分配固定IP地址的客户机名称
hardware ethernet 00:c0:c3:22:46:81;   //指定该主机的MAC地址
fixed-address 192.168.4.100;           //指定保留给该主机的IP地址
}
systemctl start dhcpd 
systemctl stop firewalld
setenforce 0 

netstat -anpu | grep “:67”
//如果DHCP服务启动失败,可以查看目志文件
tail -f /var/log/messages
在ensp中配置DHCP中继

dhcp enable
开启DHCP功能

interface vlanif10
ip address 192.168.1.254 255.255.255.0
dhcp select relay                                //开启DHCP中继功能
dhcp relay server-ip 192.168.80.10       //指向DHCP服务器的地址

interface vlanif20
ip address 192.168.2.254 255.255.255.0
dhcp select relay
dhcp relay server-ip 192.168.80.10

interface vlanif100
ip address 192.168.80.254 255.255.255.0
dhcp select relay
dhcp relay server-ip 192.168.80.10

在/etc/dhcp/dhcpd.conf中的配置

 网卡配置(ip地址为192.168.100.100,网关为.254)

 配置完成后在pc3中进行查看

Ipconfig /renew刷新后成功显示

PC1

 

 PC2

 

 

 

五、总结

1.DHCP的用途以及它的有点

2.DHCP的中继原理与配置

有关DHCP配置——Linux网络服务的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  4. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  5. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  6. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  7. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  8. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  9. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  10. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

随机推荐