连接活动设备

LinuxBeginner
立即练习

介绍

Maple Yard 即将举办周末活动。参考台已经能够自动收到网络设置。两台新的访客设备也需要这项服务,同时不能占用路由器或固定服务台预留的地址。

你将配置一个小型 DHCP 地址池,让两个客户端获取真实租约,并通过收到的网关和 DNS 下载活动日程。本实验只要求会在终端输入基本命令、切换具名 Tab,不要求编程或 DHCP 管理经验。

使用 Network Desk 编辑服务器配置,在 Guest A 和 Guest B 执行客户端命令,通过 Network Map 观察实时节点。这些是共享同一内核的隔离 Linux 网络节点,各自拥有独立目录和网络状态。打开或重新连接 Tab 不会重置课程。

为新设备安排地址空间

这一步将选择安全的动态地址范围,并让 DHCP 服务器提供这些地址。首先打开 Network Map,找到 reference 卡片,点击 Request programme,应看到 Maple Yard 日程。这是已有的正常样例,还不是你的新成果。

IPv4 地址标识网络中的设备。/24(如 10.77.0.10/24 中所示)表示以 10.77.0 开头的地址属于这个本地子网。网关把流量送往另一个子网中的日程服务器。DNS 将 programme.event.test 这样的名称转换为地址。只收到一个地址,不能证明其他设置可用。

切换到 Network Desk。该终端的初始目录是 /home/labex/project/event-network。pwd 显示当前目录,cat 显示文本文件内容:

pwd
cat devices.tsv

MAC 地址是设备在这个预置网络中的链路层身份,与 IPv4 地址和友好的 Tab 名称不同。参考台使用 10.77.0.10,路由器和 DNS 使用 10.77.0.1。不要改变这些固定地址。访客地址池从 10.77.0.100 到 10.77.0.109,包括两个端点;掩码为 255.255.255.0,等同于 /24。

读取可以编辑的服务器文件:

cat dhcp.conf

其中的 conf-file 行引入预置的参考台服务,必须保留。dhcp-range 指定起始地址、结束地址、子网掩码和租期。租约是临时分配;2h 表示两小时,不代表永久拥有地址。

下面的 here-document 会写入完整的小文件。> 替换原有内容。带引号的 'CONF' 保证块内文本保持原样;结尾的 CONF 必须独占一行并从行首开始。复制整个代码块:

cat > dhcp.conf <<'CONF'
conf-file=/opt/labex/event-network/server-base.conf
dhcp-range=10.77.0.100,10.77.0.109,255.255.255.0,2h
CONF

--test 只检查语法,不会启动另一个服务器。--conf-file 指定配置文件:

dnsmasq --test --conf-file=dhcp.conf

应看到 dnsmasq: syntax check OK.。如果报错,用 cat 读取保存的文件,恢复上面的代码块后重新检查。已知存在语法错误时,不要重启正在工作的服务。

sudo 以管理员权限运行这一个命令。systemctl restart 将修改后的配置加载到名为 event-dhcp 的课程服务中:

sudo systemctl restart event-dhcp

成功重启通常没有输出。它不会替访客请求租约。你已经准备好服务器可提供的配置,客户端还需要主动请求。在第一门实验中,dnsmasq 默认将其预置的本地地址作为网关和 DNS 通告给客户端。下一门实验会教授如何通过显式服务器选项控制这两个值。

让每台访客设备请求租约

这一步将通过真实 DHCP 请求连接两个新客户端。切换到 Guest A。这是该隔离客户端的管理员 shell,已经进入自己的工作目录。它的 eth0 是课程链路,不是平台网卡。不要在 Network Desk 中执行这些命令。

dhclient 是提供给你的 ISC DHCP 客户端。本课使用未修改的本地副本,配合预置 hook,仅把收到的选项应用到该隔离节点。它不会编造地址,也不会更改平台的解析器。-4 选择 IPv4,-v 显示交互过程,-1 使本次获取尝试在没有服务器响应时结束。-cf client.conf 选择预置设置;-pf client.pid 和 -lf client.leases 将该客户端的进程及租约状态保存在自己的目录中。预置租约文件最初为空,客户端会将真实收到的租约写入其中。保留这些预置文件。

将下面命令作为一行运行:

dhclient -4 -v -1 -cf client.conf -pf client.pid -lf client.leases eth0

观察 DHCPDISCOVER、DHCPOFFER、DHCPREQUEST 和 DHCPACK。首次交互时,客户端寻找服务器、收到提议、请求该提议,最后收到确认。已有租约可能使之后的交互缩短。末尾的 bound to 10.77.0... 表示分配到的地址。访客的具体地址和续租时间可以在地址池允许范围内变化。

ip -4 addr show 显示选定网卡上的 IPv4 地址:

ip -4 addr show dev eth0

应看到 10.77.0.100–10.77.0.109 范围内的一个地址,前缀为 /24。

切换到 Guest B,它有自己的目录和客户端状态。在那里也运行完整命令:

dhclient -4 -v -1 -cf client.conf -pf client.pid -lf client.leases eth0
ip -4 addr show dev eth0

两个地址都必须在地址池内,且彼此不同。如果看到 No DHCPOFFERS received,先确认 Tab 是否正确,再返回 Network Desk 读取 dhcp.conf、检查语法并重启 event-dhcp。只在仍等待租约的客户端重试获取。不要为了纠正输入错误而删除租约文件或重置 VM。

在 Network Map 中重新加载页面。两个访客卡片现在应显示真实地址。这个观察操作不会请求或修复租约。

使用收到的设置获取日程

这一步将证明每个客户端都能使用收到的配置,并保存真实日程文件。首先进入 Guest A。

ip route show default 显示访问本地子网以外目标时使用的网关。/etc/resolv.conf 列出该客户端的 DNS 解析器:

ip route show default
cat /etc/resolv.conf

应看到网关为 10.77.0.1,位于 eth0,解析器为 nameserver 10.77.0.1。预置路由器同时提供 DNS。日程本身位于另一个子网,因此这次请求需要两个设置都正确。

curl 请求 HTTP 资源。--noproxy '*' 使本地练习不经过任何外部代理;引号让 * 保持字面含义。-f 将 HTTP 错误视为失败,-s 隐藏进度条,-S 仍显示错误。--max-time 5 将等待时间限制为五秒。-o programme.txt 将响应字节保存到当前客户端目录:

curl --noproxy '*' -fsS --max-time 5 -o programme.txt http://programme.event.test:8080/programme.txt
cat programme.txt

预期内容如下:

MAPLE YARD | Weekend programme
10:00 Welcome desk opens
11:00 Bicycle repair
13:00 Seed exchange
15:00 Community workshop

切换到 Guest B,检查它独立收到的设置:

ip route show default
cat /etc/resolv.conf

也在那里下载并读取日程:

curl --noproxy '*' -fsS --max-time 5 -o programme.txt http://programme.event.test:8080/programme.txt
cat programme.txt

Could not resolve host 指向域名解析问题;连接超时可能指向网络路径或网关问题;Connection refused 表示所选目标在该端口上没有接受连接的服务。成功的 HTTP 响应也可能包含错误资源,因此要读完所有日程条目。

如果已有地址但请求失败,比较网关和 DNS 是否符合上面的值。返回正确的服务器文件处理,不要手动为客户端指定网络设置。如果需要释放后重新请求租约,-r 会释放该客户端当前租约并结束旧客户端进程:

dhclient -4 -v -r -cf client.conf -pf client.pid -lf client.leases eth0

然后使用已学过的获取命令,再次下载。只在受影响访客的 Tab 中执行这些恢复操作。

最后重新加载 Network Map,在两个访客和参考台上分别点击 Request programme。三者都应返回完整日程。保存的文件和实时请求共同证明配置可用,而不只是服务器文件看起来正确。

真实客户端请求完成后的 Network Map

比较各卡片的 IPv4 地址、网关和 DNS,再阅读按钮下方的日程响应。访客的具体分配地址可能与此示例不同。

总结

你选择了排除固定设备的地址池,获取了不同的真实 DHCP 租约,读取了已应用的网关和 DNS,并在两个客户端上下载了完整日程,同时保留参考台的正常功能。

这些是当前训练 VM 内的临时设置,并不意味着重启后仍然保留、能够访问公共互联网,或兼容所有 DHCP 客户端。下一门 guided lab 会独立准备一个新环境,练习设备地址预留和配置恢复。