4.DHCP与PRE
如何配置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
如果在同一网段的电脑,却把IP配置成了192.168.1.6(1号)和16.156.23.6(2号),那么两台机器一定无法通信。
2号向1号发包
在IP层,它有源IP16.158.23.6,目标IP192.168.1.6但是包发不出去,因为MAC层没填
但自己的MAC地址知道,但目标MAC无法得知。Linux判断IP,只有在同一网段,才会发送ARP请求获取目标MAC。
如果是跨网段的,Linux不会直接将包发送到网络上,而是会发送到网关。
若配置了网关,Linux会获取网关MAC,然后发出包。但对于1号来说,虽然目标IP是它,但MAC地址不知它,它是不会收包的。
真正配置IP时,一定不是直接用命令配置的,而是放在一个配置文件里的。
那么跨网段调用中,是如何获取目标IP 的mac地址的?是从源IP网关获取所在网关mac,然后又替换为目标IP所在网段网关的mac,最后是目标IP的mac地址。
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议
如果是数据中心的服务器,IP一旦配好,基本不会变,DHCP则只是给你临时分配个IP ,相当于租房。
解析DHCP的工作方式
1.DHCP Discover:新机器加入一个网络,“吼”
DHCP是 BOOTP的增强版
2.DHCP Offer:网络管理员配置的DHCP Server 会给新人提供IP,并保留
3.如果有多个DHCP Server,新机器会收到多个DHCP Offer,它会选择其中一个,并发送一个DHCP Request广播数据包。
4.DHCP Server 接收到新机器的DHCP request后,会广播返回一个DHCP ACK的消息包。
预启动执行华景(PXE)
像数据中心如何给上百台机器安装操作系统呢?
操作系统启动首先启动BIOS(basic input ouput system),这是一个很小的系统,读取硬盘的MBR启动扇区,启动GRUB,GRUB加载内核、加载作为跟文件系统的initramfs文件,最后启动内核,初始化整个操作系统。
安装操作系统的过程在BIOS启动后,因为没有安装操作系统之前,链扇区都没有,整个过程叫做与气动执行环境PXE(Pre-boot Execution Environment)。
PXE可以使计算机通过网络启动的协议,协议分为client和server两端,PXE client在网卡的ROM中,当计算机启动时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。
PRE客户端启动后可以从DHCP Server获得自己的IP和PXE服务器的IP。
要想使用PXE,DHCP Server是需要配置的,next-server 指向PXE的服务器,也要配置初始启动文件filename。
1 ddns-update-style interim; 2 ignore client-updates; 3 allow booting; 4 allow bootp; 5 subnet 192.168.1.0 netmask 255.255.255.0 6 { 7 option routers 192.168.1.1; 8 option subnet-mask 255.255.255.0; 9 option time-offset -18000; 10 default-lease-time 21600; 11 max-lease-time 43200; 12 range dynamic-bootp 192.168.1.240 192.168.1.250; 13 filename "pxelinux.0"; 14 next-server 192.168.1.180; 15 }
具体执行过程如下图
相当于DHCP协议给客户推荐“装修队”PXE,来安装系统。
PXE协议可以安装操作系统,但如果每次重启都要安装操作系统,很麻烦,如何使得安装一次操作系统后后面就正常启动呢?
进入BIOS设置页面,有一项PXE Boot to LAN,若设置为Enabled则表示计算机从网络启动,从PXE服务端下载配置文件和操作系统内核进行启动;若设置为Disabled则表示从本地启动,启动动BIOS后,会去寻找启动扇区,如果没有安装操作系统,就会找不到启动扇区,这个时候就启动不起来。