LabHub
学习 学习路径 课程

LFCS — Linux 基金会认证系统管理员

配置并读出地址、名字、路径

在 LabHub 中继续学习

目标

编写静态地址配置文件,分段检查名称解析路径,并通过读取套接字与路由信息生成摘要。

为什么重要

本实验的第 1~2 步,原样复现了作者为防止家庭实验室集群再次宕机而制定的流程。DHCP 租约续期改变了控制平面的地址,导致它与证书 SAN 不一致,apiserver 无法启动。当时得到的教训是:仅设置 dhcp4: false 并不等于真正固定地址。cloud-init 会在每次启动时重新生成网络设置,因此还必须阻止这一生成过程,并同时在路由器上设置 DHCP 保留,地址才算真正固定。

其余步骤用于熟悉诊断顺序。getentdig 结果开始分歧的位置,就是问题所在的区段;ss 的套接字状态与 ip route 的默认路径,则是确认“到这里为止都正常”的依据。此环境禁用了 pingiptables,因此训练仅依据配置文件与观测工具判断,而不使用连通性探测。

步骤

  1. /root/lfcs-net/01-static.yaml 中编写 netplan 配置。network.version 为 2,接口为 enp3s0dhcp4: false,地址为 10.0.0.120/24,默认路由使用 to: defaultvia: 10.0.0.1,名称服务器为 10.0.0.11.1.1.1
  2. /root/lfcs-net/99-disable-network-config.cfg 中写入关闭 cloud-init 网络配置生成的内容。在真实服务器中,该文件应放在 /etc/cloud/cloud.cfg.d/ 下。
  3. /etc/hosts 中添加地址 10.0.0.120、规范名称 cp-1.homelab.internal、别名 cp-1 的条目,并将 getent hosts cp-1 的输出保存到 /root/lfcs-net/getent.txt
  4. /root/lfcs-net/resolv-summary.txt 中写入 nameservers=<nameserver 줄 개수>ndots=<옵션 값 또는 none> 两行,内容以 /etc/resolv.conf 为准。
  5. 启动一个监听 127.0.0.1:8087 的 TCP 服务,并将当前处于 LISTEN 状态的套接字本地地址逐行写入 /root/lfcs-net/listen.txt
  6. /root/lfcs-net/route.txt 中写入 default_via=<기본 경로의 게이트웨이 또는 none>primary_iface=<기본 경로가 나가는 장치> 两行。
  7. /root/lfcs-net/nsswitch.txt 中写入一行 hosts=<'/etc/nsswitch.conf' 의 hosts 행 값들>。各值之间用一个空格分隔。
  8. /root/lfcs-net/firewall-plan.txt 中,按照 <동작> <프로토콜> <포트> <출발지> 格式,以如下顺序原样写入五行规则。
allow tcp 22 10.0.0.0/24
allow tcp 6443 10.0.0.0/24
allow tcp 80 0.0.0.0/0
allow tcp 443 0.0.0.0/0
deny any any 0.0.0.0/0

参考

使用 netplan 配置静态地址

/root/lfcs-net/01-static.yaml 中编写 netplan 配置。network.version 为 2,接口为 enp3s0dhcp4: false,地址为 10.0.0.120/24,默认路由使用 to: defaultvia: 10.0.0.1,名称服务器为 10.0.0.11.1.1.1

netplan 使用 YAML,顶层键是 network。接口下包含关闭 DHCP 的键、地址列表、路由列表和名称服务器。地址需同时填写前缀长度。

关闭 cloud-init 网络配置

/root/lfcs-net/99-disable-network-config.cfg 中写入关闭 cloud-init 网络配置生成的内容。在真实服务器中,该文件应放在 /etc/cloud/cloud.cfg.d/ 下。

只需一行。将阻止 cloud-init 重新生成网络设置的键设为禁用值。

添加 hosts 条目并用 getent 检查

/etc/hosts 中添加地址 10.0.0.120、规范名称 cp-1.homelab.internal、别名 cp-1 的条目,并将 getent hosts cp-1 的输出保存到 /root/lfcs-net/getent.txt

hosts 文件的一行依次为地址、规范名称和别名。检查时不要使用只查询 DNS 的工具,而要使用经过整个名称服务切换路径的工具。

汇总解析器设置

/root/lfcs-net/resolv-summary.txt 中写入 nameservers=<nameserver 줄 개수>ndots=<옵션 값 또는 none> 两行,内容以 /etc/resolv.conf 为准。

统计以 nameserver 开头的行数,并从 options 行中找到点数阈值。如果没有该项,填写 none。

启动监听器并生成套接字列表

启动一个监听 127.0.0.1:8087 的 TCP 服务,并将当前处于 LISTEN 状态的套接字本地地址逐行写入 /root/lfcs-net/listen.txt

可以用 Python 内置模块启动简单服务器,并提供将地址绑定到回环接口的选项。提取套接字列表时使用不显示表头的选项,便于后续处理。

解析默认路由

/root/lfcs-net/route.txt 中写入 default_via=<기본 경로의 게이트웨이 또는 none>primary_iface=<기본 경로가 나가는 장치> 两行。

有一个子命令可以只查看默认路由。从输出中提取表示下一跳和出口设备的关键字后面的值。

记录名称解析顺序

/root/lfcs-net/nsswitch.txt 中写入一行 hosts=<'/etc/nsswitch.conf' 의 hosts 행 값들>。各值之间用一个空格分隔。

将以 hosts 开头的行中的值按原样抄写,各项之间只留一个空格。列出的顺序就是查询顺序。

编写防火墙规则设计文档

/root/lfcs-net/firewall-plan.txt 中,按照 <동작> <프로토콜> <포트> <출발지> 格式,以如下顺序原样写入五行规则。

规则从上到下评估。必须先开放管理访问端口,并把默认拒绝放在最后,避免在远程操作时锁死自己。