如何配置 IP 地址?
使用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
虽然配置很简单,单并非人为随意配置即可,比如,旁边的机器都是 192.168.1.x,我非得配置一个 16.158.23.6,会出现什么现象呢?
可以配置,但是包发不出去,为什么?
举例192.168.1.6 就在你这台机器的旁边,甚至是在同一个交换机上,而你把机器的地址设为了 16.158.23.6。在这台机器上,你企图去 ping192.168.1.6
因为只要是在网络上跑的包,都是完整的,可以有下层没上层,绝对不 可能有上层没下层。
所以,你看着它有自己的源 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 不会让你配置成功的,因为网关要和当前的网络至 少一个网卡是同一个网段的,怎么可能 16.158.23.6 的网关是 192.168.1.6 呢?
实际的配置大多数是配置文件的形式,不同系统的配置文件格式不同,但是无非就是 CIDR、子网掩 码、广播地址和网关地址。
动态主机配置协议(DHCP)
有了这个协议,网络管理员就轻松多了。网路管理人员只需要配置一段共享的 IP 地址。每一台新接入的机器都通过 DHCP 协议,来这个共享的 IP 地址里申请,然后自动配置好就可以了。等人走了,或者用完了,还回 去,这样其他的机器也能用。
典型的例子就是你的laptop来回在公司移动使用。
如果是数据中心里面的服务器,IP 一旦配置好,基本不会变,这就相当于买房自己装修。 DHCP 的方式就相当于租房。你不用装修,都是帮你配置好的。你暂时用一下,用完退租就可以了。
解析 DHCP 的工作方式
1.新来的机器使用 IP 地址 0.0.0.0 发送了一个广播包,目的 IP 地址为 255.255.255.255。广播包封装在 UDP 里面,UDP 封装在 BOOTP 里面。其实 DHCP 是 BOOTP 的增强版,但是如果你去抓包的话,很 可能看到的名称还是 BOOTP 协议。
2.唯一机器的MAC唯一性,IP 管理员才能知道这是一个新人,需要租给它一个 IP 地址,这个过程我们称为DHCP Offer。同时,DHCP Server 为此客户保留为它提供的 IP 地址,从而不会为其他 DHCP 客户分配此 IP 地址。
DHCP Server 仍然使用广播地址作为目的地址,因为,此时请求分配 IP 的新人还没有自己的 IP。 DHCP Server 回复说,我分配了一个可用的 IP 给你,你看如何?除此之外,服务器还发送了子网掩 码、网关和 IP 地址租用期等信息。
3.机器会收到这个广播,然后回复是否接受这个IP地址。它会选择其中一个 DHCP Offer,一般是最先到达的那个,并且会向网络发送一个 DHCP Request 广播 数据包,包中包含客户端的 MAC 地址、接受的租约中的 IP 地址、提供此租约的 DHCP 服务器地址 等,并告诉所有 DHCP Server 它将接受哪一台服务器提供的 IP 地址,告诉其他 DHCP 服务器,谢谢你 们的接纳,并请求撤销它们提供的 IP 地址,以便提供给下一个 IP 租用请求者。
此时,由于还没有得到 DHCP Server 的最后确认,客户端仍然使用 0.0.0.0 为源 IP 地址、 255.255.255.255 为目标地址进行广播。在 BOOTP 里面,接受某个 DHCP Server 的分配的 IP。
4.当 DHCP Server 接收到客户机的 DHCP request 之后,会广播返回给客户机一个 DHCP ACK 消息包, 表明已经接受客户机的选择,并将这一 IP 地址的合法租用信息和其他的配置信息都放入该广播包,发给客户机,表示欢迎。
最终租约达成的时候,还是需要广播一下,让大家都知道。
IP 地址的收回和续租
客户机会在租期过去 50% 的时候,直接向为其提供 IP 地址的 DHCP Server 发送 DHCP request 消息 包。客户机接收到该服务器回应的 DHCP ACK 消息包,会根据包中所提供的新的租期以及其他已经更新 的 TCP/IP 参数,更新自己的配置。这样,IP 租用更新就完成了。
预启动执行环境(PXE)
简单来讲就是客户端request然后给分配ip和安装操作系统
首先,启动 PXE 客户端。第一步是通过 DHCP 协议告诉 DHCP Server,我刚来,一穷二白,啥都没 有。DHCP Server 便租给它一个 IP 地址,同时也给它 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,能够安装操作系统,这个在云计算领域大有用处。
参考:刘超老师《趣谈网络协议》