手动设置 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
一个包要发出去,怎么知道对方的 MAC 地址?
- 这里有个前提:目标 IP 地址是已知的 ;
- Linux 会判断,要去的地址和我是一个网段吗,或者和我的一个网卡是同一网段吗?
- 如果是同一个网段的:
- 如果不是同一个网段的
- 不会直接将包发送到网络上,而是试图将包发送到网关,由网关将包发出去;
- 由网关发出去的包,到目标机器,虽然 IP 对上了,但是 MAC 对不上,MAC 是网关的,所以目标机器不会接收这个包;
- 如果没有配置网关,包根本发不出去,配置给网关的 IP 要和当前网络在一个网段;
DHCP 动态主机配置协议
-
DHCP Discover:新来的机器用 IP 0.0.0.0 发送广播包,目标 IP 为 255.255.255.255,带着自己的 MAC,向 DHCP Server 租 IP;
-
DHCP offer:DHCP Server 向新来的机器提供一个 IP,看它是否接受;
-
DHCP request:新来的机器发送一个广播包,说接受;
-
DHCP ack:敲定租约,广播一下,让大家都知道;
PXE(Pre-boot Execution Environment)预启动执行环境
- DHCP 服务处理可以给新入网的机器分配 IP,还可以和 PXE 配合,给新机器安装操作系统;
- 操作系统的启动过程:BOIS -> MBR(启动扇区) -> GRUB -> 内核 -> 操作系统;
- PXE 客户端在 BOIS 启动后被加载到内存;
- PXE 客户端启动起来之后向 DHCP Server 要一个 IP;
- DHCP Server 给 PXE客户端 一个 IP 和 PXE 服务器的地址;
DHCP 额外配置
- next-server 指向 PXE 服务器的地址;
- filename 初始启动文件;
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;
}
PXE 的工作过程
- TFTP 服务器一般就和 PXE 服务器在一台机器中;
- PXE 客户端问 DHCP 服务器要一个 IP 和 PXE 服务器的地址;
- PXE 客户端向 PXE 服务器要启动文件;
- PXE 客户端执行启动文件;
- PXE 客户端向 PXE服务器要配置文件;
- PXE 客户端根据配置文件要内核;
- 加载内核;
- 操作系统启动了;