9.5. 一般网络配置

9.5.1. 创建网络接口配置文件

负责网络的引导脚本通常根据 /etc/sysconfig 中配置文件的内容,判定需要启用或禁用哪些网络接口。对于每个需要配置的网络接口,该目录中都应该包含一个文件,文件名类似 ifconfig.xyz,这里xyz应该能够描述该网卡。使用接口名 (如 eth0) 一般比较合适。文件中包含该网络接口的属性,如 IP 地址、子网掩码等。文件名必须以 ifconfig 开头。

[注意]

注意

如果没有使用前一节描述的自定义命名策略,udev 会根据系统物理特征命名网卡接口,例如 enp2s1。如果您不能确定接口名,可以在引导您的 LFS 系统后使用 ip linkls /sys/class/net 命令确认。

接口名依赖于系统正在运行的 udev 守护进程的实现和配置。LFS 的 udev 守护进程 (在第 8.76 节 “Systemd-256.4 中的 Udev”中安装) 直到 LFS 系统引导时才会运行。因此,在宿主系统中使用上述命令未必能确定 LFS 系统将会使用的接口名,即使在 chroot 环境中仍然如此

例如,以下命令为 eth0 设备创建一个静态 IP 地址配置:

cd /etc/sysconfig/
cat > ifconfig.eth0 << "EOF"
ONBOOT=yes
IFACE=eth0
SERVICE=ipv4-static
IP=192.168.1.2
GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=192.168.1.255
EOF

您必须修改每个文件中用斜体显示的设定值,以正确设置网络接口。

如果 ONBOOT 变量被设置为yes,则 System V 网络脚本会在引导系统时启用该网络接口卡 (NIC)。如果设定的值不是 yes,网络脚本会忽略该 NIC,不自动启用它。您可以使用 ifupifdown 命令,手动启用或禁用网络接口。

IFACE 变量指定网络接口名,例如 eth0。所有网络设备配置文件都需要它。配置文件扩展名必须与该变量的值相同。

SERVICE 变量定义获取 IP 地址的方法。LFS-Bootscripts 软件包使用模块化 IP 配置格式,在 /lib/services/ 目录中新建一些文件,即可使用其他 IP 分配方法,这一般被用于动态主机配置协议 (DHCP) 配置,具体方法在 BLFS 手册中说明。

如果默认网关存在,GATEWAY 变量应该包含默认网关的 IP 地址。如果默认网关不存在,应该将这一行完全注释掉。

PREFIX 变量指定子网使用的 IP 地址位数。IP 地址中的每一段都是二进制为 8 位的数,如果子网掩码是 255.255.255.0,说明 IP 地址中前三段 (24 位) 表示子网编号。如果子网掩码是 255.255.255.240,则使用了前 28 位表示子网编号。子网前缀比 24 长的情况一般见于基于 DSL 或同轴电缆的 Internet 服务提供商 (ISP)。在我们的例子中,子网掩码是 255.255.255.0。您应该根据您所处的子网调整 PREFIX 变量。如果忽略它,则默认值为 24。

参考 ifup 的手册页获得更多信息。

9.5.2. 创建 /etc/resolv.conf 文件

系统需要某种方式,获取域名服务 (DNS),以将 Internet 域名解析成 IP 地址,或进行反向解析。为了达到这一目的,最好的方法是将 ISP 或网络管理员提供的 DNS 服务器的 IP 地址写入 /etc/resolv.conf。执行以下命令创建该文件:

cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf

domain <您的域名>
nameserver <您的主要域名服务器 IP 地址>
nameserver <您的次要域名服务器 IP 地址>

# End /etc/resolv.conf
EOF

可以省略 domain 语句,或使用一条 search 语句代替它。阅读 resolv.conf 的手册页了解更多细节。

<域名服务器 IP 地址> 替换为您的网络环境下最合适的 DNS 服务器 IP 地址。这里往往会写入不止一个 DNS 服务器 (需要提供后备功能的次要服务器)。如果您只需要或只希望使用一个 DNS 服务器,可以删除文件中的第二个 nameserver 行。也可以写入本地路由器的 IP 地址。

[注意]

注意

Google 公用 DNS 服务器的 IP 地址是 8.8.8.8 和 8.8.4.4。

9.5.3. 配置系统主机名

在引导过程中,/etc/hostname 被用于设定系统主机名。

执行以下命令,创建 /etc/hostname 文件,并输入一个主机名:

echo "<lfs>" > /etc/hostname

<lfs> 需要被替换为赋予该计算机的名称。不要在这里输入全限定域名 (FQDN)。FQDN 应该被写入 /etc/hosts 文件。

9.5.4. 自定义 /etc/hosts 文件

选择一个全限定域名 (FQDN),和可能的别名,以供 /etc/hosts 文件使用。如果使用静态 IP 地址,您还需要确定要使用的 IP 地址。hosts 文件条目的语法是:

IP_地址 主机名.域名 别名

除非该计算机可以从 Internet 访问 (即拥有一个注册域名,并分配了一个有效的 IP 地址段 —— 多数用户没有分配公网 IP),则使用的 IP 地址必须属于私网 IP 范围。有效的范围是:

私网地址范围                         公共前缀长度
10.0.0.1 - 10.255.255.254            8
172.x.0.1 - 172.x.255.254           16
192.168.y.1 - 192.168.y.254         24

x 可以是 16-31 之间的任何数字。y 可以是 0-255 之间的任何数字。

例如,192.168.1.1 是有效的私网 IP 地址。

如果计算机要被配置为能够从 Internet 访问,则可以使用注册域名本身作为有效的 FQDN,或者在其之前用.符号连接一个前缀 (前缀通常是主机名) 得到 FQDN。另外,您需要联系域名提供商,以将 FQDN 解析到您的公网 IP 地址。

即使计算机无法从 Internet 访问,一些程序,如 MTA,仍然需要一个 FQDN 才能正常工作。此时可以使用一个特殊的 FQDN localhost.localdomain

执行以下命令,创建 /etc/hosts

cat > /etc/hosts << "EOF"
# Begin /etc/hosts

127.0.0.1 localhost.localdomain localhost
127.0.1.1 <FQDN> <HOSTNAME>
<192.168.1.1> <FQDN> <HOSTNAME> [alias1] [alias2 ...]
::1       localhost ip6-localhost ip6-loopback
ff02::1   ip6-allnodes
ff02::2   ip6-allrouters

# End /etc/hosts
EOF

其中 <192.168.0.2><FQDN>,以及<主机名> 的值需要为特定使用环境和需求进行修改(如果系统或网络管理员分配了 IP 地址,且本机将被连接到现有的网络中)。可以跳过别名 (alias),它们不是必要的。