网络协议复习笔记(四)DHCP与PXE:IP怎么来的,怎么消失的

如何配置IP地址?

可以用命令行配置一个地址。可以使用ifconfig,也可以使用ip addr。设置好了以后,用这两个命令,将网卡up一下。

使用net-tools:

$ sudo ifconfig eth1 10.0.0.1/24
$ sudo ifconfig eth1 up
使用iproute2:

$ sudo ip addr add 10.0.0.1/24 dev eth1
$ sudo ip link set up eth1
如果乱配置ip的话会导致包发不出去,比如旁边的机器都是192.168.1.x,非要配置一个16.158.23.6。在这台机器上,企图去ping192.168.1.6,你觉得只要将包发出去,同一个交换机的另一台机器马上就能收到?

可是Linux系统不是这样的。

只要是在网络上跑的包,都是完整的,可以有下层没上层,绝不可能有上层没下层。

所以看着它有自己的源IP地址16.158.23.6,也有目标IP地址192.168.1.6,但是包发布出去,因为MAC层还没填。

自己的MAC自己知道,但是目标的MAC填什么呢?

Linux首先会判断,要去的这个地址是不是一个网段,或者和自己网卡是不是同一个网段?只有是一个网段,才会发送ARP请求,获取MAC地址。

如果发现不是?Linux默认的逻辑是,如果这是一个跨网段的调用,它便不会直接将包发送到网络上,而是企图将包发送到网关。

如果配置了网关,Linux会获取网关的MAC地址,然后将包发出。对192.168.1.6这台机器,虽然路过它家门的这个包,目标IP是它,但是无奈MAC地址不是它,所以它的网卡不会把包收进去。

如果没有配置网关,那包根本发不出。

如果将网关配置为192.168.1.6,不可能,Linux不会让配置成功,因为网关要和当前网络至少一个网卡是同一个网段,怎么可能192.168.1.6成为16.158.23.6的网关。

一般不是直接用命令配置,而是放在一个配置文件里面。不同系统的配置文件格式不同,但是无非就是CIDR、子网掩码、广播地址和网关地址。

动态主机配置协议DHCP

Dynamic Host Configuration Protocol,动态主机配置协议。

有了这个,只需要配置一段共享的IP地址。每一台新接入的机器都通过DHCP协议,来这个共享的IP地址里申请,然后自动配置好就可以了。等人走了,或者用完了就还回去,这样其他的机器也能用。

数据中心里的服务器,IP一旦配置好,基本不会变,相当于买房自己装修。而DHCP相当于租房,都是配置好的,用完退租。

DHCP工作方式

当一台新机器加入一个网络时,只知道自己的MAC地址。先“吼”一句,我来啦。这一步,称为DHCP Discover

新机器使用0.0.0.0发送了一个广播包,目的地址是255.255.255.255。广播包封装了UDP,UDP封装了BOOTP。其实DHCP是BOOTP的增强版,但是如果去抓包,很可能看到的名称还是BOOTP协议。

广播包里,新人大喊:我是新来的(Boot Request),我的MAC地址是这个,我还没有IP,谁能租个IP地址给我!

如果一个网管在网络里配置了DHCP Server的话,他就相当于这些IP的管理员。只有MAC唯一,IP管理员才能知道这是一个新人,需要租给它一个IP地址,这个过程称为DHCP offer。同时,DHCP Server 为此客户保留为它提供的IP地址,从而不会为其他DHCP客户分配此IP地址。

DHCP Offer的格式如下,里面有给新人分配的地址

DHCP仍然使用广播地址作为目的地址,因为此时新人还没有自己的IP。除此之外,服务器还发送了子网掩码、网关和IP地址租用期等信息。

如果有多个DHCP Server,这台新机器会收到多个IP地址,它会选择其中一个DHCP Offer,一般是最先到达的那个,并且会向网络发送一个DHCP Request广播数据包,包中包含客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等,并告诉所有DHCP Server它接受哪一个服务器的IP地址,并要求撤销其他服务器提供的IP地址。

此时由于还没得到DHCP Server的最后确认,客户端仍然0.0.0.0作为源IP地址、255.255.255.255为目标地址进行广播。在BOOTP里面,接受某个DHCP Server的分配的IP。

当DHCP Server收到客户机的DHCP Request后,会广播返回给客户机一个DHCP ACK消息包,表明接受客户机的选择。并将IP地址的合法租用信息和其他的配置信息都放入该广播包,发给客户机,欢迎加入网络。

IP地址的收回和续租

客户机会在租期过去50%的时候,直接向其提供的IP地址的DHCP Server发送DHCP request消息包。客户机收到该服务器回应的DHCP ACK消息包,会根据包中提供的新的租期以及其他以及更新的TCP/IP参数,更新自己的配置。这样IP租用更新就好了。

预启动执行环境(PXE)

为多台电脑自动安装操作系统。装好系统后自动分配IP。

一个办法:将光盘里要安装的操作系统放在一个服务器上,让客户端去下载。

首先,启动BIOS。这是一个特别小的系统,只能干特别小的事情。就是读取硬盘的MBR启动扇区,将GRUB启动起来;然后将权力交给GRUB,GRUB加载内核、加载作为根文件系统的initramfs文件;然后将权力交给内核;最后内核启动,初始化整个操作系统。

安装操作系统只能在BIOS启动后。因而叫预启动执行环境(Pre-boot Execution Environment),简称PXE。PXE协议分为客户端和服务器端,由于还没有操作系统,只能先把客户端放在BIOS里面。当计算机启动时,BIOS把PXE客户端调入内存里面,就可以连接到服务器端做一些操作。

PXE客户端自己也需要有个IP。因为PXE客户端启动时就可以发送一个DHCP请求,让DHCP服务器给它分配一个地址。PXE客户端有了自己的地址,怎么知道PXE服务器在哪呢?

DHCP Server除了分配IP地址以外,还可以做一些其他的事情。一个DHCP Server样例配置:

ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
subnet 192.168.1.0 netmask 255.255.255.0
{
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option time-offset -18000;
default-lease-time 21600;
max-lease-time 43200;
range dynamic-bootp 192.168.1.240 192.168.1.250;
filename "pxelinux.0";
next-server 192.168.1.180;
}
默认的DHCP Server是需要配置的。如果想使用PXE,则需要配置next-server,指向PXE服务器的地址,另外要配置初始启动文件filename。

解析PXE的工作过程

第一步通过DHCP协议告诉DHCP Server,服务器便租给它一个地址,同时也给它PXE服务器的地址、启动文件pxelinux.0。

然后,PXE客户端知道要去PXE服务器下载这个文件后,就可以初始化机器。便开始下载,下载的时候使用的是TFTP协议。所以PXE服务器上,往往还需要有一个TFTP服务器。PXE客户端向TFTP服务器请求下载这个文件,TFTP说好,然后就将文件传给他。

然后,PXE客户端收到这个文件后,就开始执行这个文件。这个文件会指示PXE客户端,向TFTP服务器请求计算机的的配置信息pxelinux.cfg。TFTP服务器会给PXE客户端一个配置文件,里面说内核哪里、initramfs在哪里。PXE客户端会请求这些文件。

最后启动Linux内核。

小结

DHCP协议主要用来给客户租用IP地址。DHCP协议能给客户推荐“装修队”PXE,能够安装操作系统,在云计算领域大有用处。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值