配置Linux系统实现dhcp功能

1、背景及原理
    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。

2、环境模拟

    克隆两台或三台Linux机器,第一台命名为dhcpd作为dhcp服务端,第二台和第三台分别命名为dhcp-client1和dhcp-client2作为dhcp客户端

3、配置dhcpd服务端

3.1    修改dhcpd服务端的网卡配置文件

eth0 ip 192.168.214.210 网关192.168.214.2(同VMware网关地址)

eth1 ip 192.168.1.1

3.2 清空网卡相关信息

克隆的机器除了修改网卡配置文件(去掉网卡UUID和MAC地址)之外还需要执行命令

> /etc/udev/rules.d/70-persistent-net.rules 清空网卡信息文件

3.3 重启机器查看ip并检查能否与外网建立通信

3.4 安装配置dhcp服务

执行命令yum install dhcp –y安装dhcp服务相关软件

3.5 修改dhcp的配置文件

cat /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample |grep -Ev '^$|#'

查看示例,过滤掉注释和空行

截取红框部分内容,并修改为此处需要的配置,将配置写入 /etc/dhcp/dhcpd.conf

subnet 192.168.1.0 netmask 255.255.255.0 {        #网段和子网掩码

range 192.168.1.100 192.168.1.254;            #可自动获取的IP地址范围

option domain-name-servers 223.5.5.5;        #dns服务器名称

option routers 192.168.1.1;                    #网关地址

option broadcast-address 192.168.1.255;        #广播地址

default-lease-time 600;                        #默认租约期限,单位秒

max-lease-time 7200;                        #最长租约期限,单位秒

}

3.6 启动dhcpd服务

4、获取dhcp并检验

4.1 在dhcp-client1上重启网络服务

在dhcpd上进行tcpdump指定网卡eth1,指定默认dhcp服务端端口67进行抓包

包含获取到ip的机器的mac地址,获取时间,通信记录等内容

4.2 服务端cat /var/lib/dhcpd/dhcpd.leases查看dhcp缓存

客户端也可cat /var/lib/dhclient/dhclient-eth0.leases查看dhcp缓存

4.3 在dhcp-client1上重启网络服务

通过Windows平台的wireshark抓取名为bootp的包,可以看到相关dhcp信息

第一个包是客户端向dhcp服务器请求分配IP、dns、默认网关和子网掩码

第二个包是服务端回应客户端请求

第三个包是客户端询问服务端是否确认该请求信息

第四个包是服务端回应客户端的确认信息

4.4 此时dhcp-client并不能连接外网,需要在dhcp服务端(dhcpd)做如下配置

修改配置开启ip转发功能

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

sysctl –p        加载内核参数

此时可以ping通192.168.214.210

配置iptables转发规则nat

iptables –F    

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

此时可以ping通外网

5、通过dhcp获取固定分配的ip

若想给某一主机分配固定的IP地址,前提是知道要分配IP地址主机的网卡mac地址(物理地址)和主机名,也能固定为主机分配一个ip地址

5.1 cat /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample |grep -Ev '^$|#'查看示例

修改为此处需要的配置,利用ifconfig查看网卡mac地址

host dhcp-client{

hardware ethernet 00:0C:29:E4:81:9A;

fixed-address 192.168.1.199;

}

5.2 将此内容追加到/etc/dhcp/dhcpd.conf文件中

5.3 /etc/init.d/dhcpd restart 重启dhcp服务

5.4 在dhcp-client1上重启网络服务,查看ip,可以发现已经成功重新获取到新指定的ip地址

 

博主原创文章,转载请务必注明出处

配置Linux系统实现dhcp功能的更多相关文章

  1. 基于ARM9和嵌入式Linux系统的多功能综合通信控制系统的框架

    基于ARM9硬件平台和嵌入式Linux系统的多功能综合通信控制系统的框架设计及各模块的功能.系统采用符合POSIX.1标准的C语言编写,实现了对下位机传送数据帧的采集.分析和存储,并能根据上位机的配置 ...

  2. Linux系统下DHCP服务安装部署和使用详解

    一.概述 DHCP :动态主机设置协议(英语:Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:用于内部网或 ...

  3. 『学了就忘』Linux基础 — 11、通过setup工具配置Linux系统IP地址

    目录 1.setup命令介绍 2.使用setup命令配置IP (1)执行setup命令 (2)进入图形化配置界面 (3)选择配置IP还是DNS (4)选择要配置的网卡 (5)进入IP地址配置页面 (6 ...

  4. 如何配置Linux系统的网络IP地址

    一台安装了Linux系统的电脑如果想要联网,首先要做的就是进行网络配置.今天小编就以CentOS6.4系统为例为大家介绍整个网络配置的过程,虽然只是以CentOS6.4系统为例,但是其它的Linux系 ...

  5. Linux系统中cgroup功能介绍

    1  Cgroups简介 1.1 What are cgroups ? Cgroups(控制组)是Linux内核的一个功能,用来限制.统计和分离一个进程组的资源(CPU.内存.磁盘输入输出等).换句话 ...

  6. 如何配置Linux系统防火墙,以防止DDOS攻击?

    虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等.通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长.比较彻底的解决方法是添置硬件防火墙.不过,硬件防 ...

  7. Linux 系统常见命令功能大全_【all】

    Linux常见快捷键(6个) ctrl + u:剪贴光标前面 ctrl + k:剪贴光标后面 ctrl + y:粘贴 ctrl + r:查找命令 ctrl + insert:复制 shift+ ins ...

  8. 编程实现类似Linux系统的cp功能

    选做题目以及分析 题目:编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文 ...

  9. 编程实现Linux系统的od功能

    选做题目以及分析 题目:编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 分析:我觉得这道题目中的参数应当是-tx1而不是-tx,使用了-tx后结 ...

随机推荐

  1. python的pip安装

    http://blog.csdn.net/liuchunming033/article/details/39578019

  2. angular组件--tips提示功能

    将组件封装起来在项目中开发很实用,之前遭遇过一次痛苦的经历,那阵子改的要吐血了.常用的组件封装起来,改公共的地方,往往多处受用. 例如:我在项目中引用  tips.text('加载中...',fals ...

  3. ztree 2.0 节点搜索

    最近做了一个简单的功能,树节点的搜索.ztree的版本的2.0,3.X以上的版本请百度解决办法. 1.在setting中增加 function getFontCss(treeId, treeNode) ...

  4. nutch2.3.1源码分析——InjectorJob

    InjectorJob实现的功能是:从种子站点文件当中读取站点信息并且将这些站点的个数.url(url以 域名:协议/端口号/路径名 设为形式存储在数据库当中,为了提高读写速度)回写到Context类 ...

  5. 关于0x*** 十六进制的运算。为什么枚举多用十六进制的运算原因。。

    1.看个人爱好 2.可以看出布尔运算的结果. 3.可以更快进行and和or 运算

  6. MFC下CSocket编程详解(转)

    原文转自 http://blog.csdn.net/yejiansnake/article/details/2175778 MFC下CSocket编程详解: 1. 常用的函数和注意事项(详细的函数接口 ...

  7. 总结DSP28335的程序设计的方法

    对DSP进行开发时,需要对其底层的硬件及外设进行相应的配置,当配置完成后才可以将其相应模块激活,才可以在其内部进行程序编写及调试处理.下面对程序配置及操作进行简单的整理,仅供参考. 第一步:初始化系统 ...

  8. linux内核情景分析之exit与Wait

    //第一层系统调用 asmlinkage long sys_exit(int error_code) { do_exit((error_code&0xff)<<8); } 其主体是 ...

  9. urllib url解析学习

    #!/usr/bin/env python # encoding: utf-8 from urllib.parse import * #urlparse:解析url分段 #urlsplit:类似url ...

  10. C/51单片机

    1.    串口也可以有多根线的,但是各线之间没有协调同步发送,而是各自是独自发送的.并口是同步发送,同步一次8位同时成功同时失败,类比事务. 2.    ASCII码的前32位是通讯预留的编码即使现 ...