7.13. 配置网络脚本

本节仅适用于需要配置网卡的情况。

如果不使用网卡,就不必创建关联网卡的配置文件,这样的话在所有运行级目录( /etc/rc.d/rc*.d )删除 network 符号链接。

7.13.1. 创建网络接口的稳定名称

由于 Udev 和网络驱动的模块化,网络设备接口的加载顺序在每次重启后可能不同,因为驱动是并行加载的,所以顺序会变成随机的。例如,在一台计算机上有两块由 Intel 和 Realtek 生产的网卡。 Intel 制造的网卡可能是 eth0 ,Realtek 的网卡是 eth1 ,在某些情况下,在重启后网卡的顺序可能反过来。为避免这种情况, 我们应该根据网卡的 MAC 地址或总线位置来为他们命名。

先指定的规则保证了在每次启动时同一设备分配到同一数字。包括第一个:


for NIC in /sys/class/net/* ; do

    INTERFACE=${NIC##*/} udevadm test --action=add --subsystem=net $NIC

done

现在,检查 /etc/udev/rules.d/70-persistent-net.rules 文件,找到与网络设备对应的代号:


cat /etc/udev/rules.d/70-persistent-net.rules

这个文件开始的是一个注释块,紧跟注释块的是针对每个 NIC 的两行。第一行是显示它的硬件 ID 的描述性语句(例如,如果是一块 PCI ,它就的 PCI 生产商和设备 ID),如果驱动可用,圆括号里的是它的驱动。用来决定一个接口名字的既不是硬件 ID 也不是驱动。这里的信息仅作引用。第二行是匹配 NIC 的 Udev 规则,实际是为它命名。

所有的 Udev 规则是由一连串的,由逗号和可选择的空格分开的 keys 组成这个规则的 keys 和解释如下:

  • SUBSYSTEM=="net" - 告诉 Udev 忽略不是网卡的设备。

  • ACTION=="add" - 告诉 Udev 忽略不作为 "add" 的 uevent 的规则 (移除和改变 uevents 也会发生,但不需要重命名网络接口)。

  • DRIVERS=="?*" - 这个存在,以至于 Udev 会忽略 VLAN 或 桥接器子接口( bridge sub-interfaces )( 因为这些子接口没有驱动)。这些子接口被跳过因为已经被分配的名字会和父设备冲突。

  • ATTR{address} - 这个关键字的值是 NIC 的 MAC 地址。

  • ATTR{type}=="1" - 就某些无线驱动(它们创建多个虚拟接口)来说,这个保证了只匹配主要接口的规则。次要的接口被忽略,原因和 VLAN 与 桥接器子接口被忽略的原因一样:有名字冲突。

  • KERNEL=="eth*" - 这个键被添加进 Udev 规则产生器中以处理有多个网络接口(都有同一个 MAC 地址, PS3就是这种机器)的机器。如果独立的接口有不同的基极名称,这个键允许 Udev 把它们分开。一般来说,它对大多数的 LFS 用户不是必须的,但用了也无害。

  • NAME - 这个值是 Udev 将分配给这个接口的名字。

NAME 的值很重要。在继续之前确保你知道哪个名字该分配给哪个网卡,并在创建如下的配置文件时确定 NAME 的值。

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

network 脚本启用或关闭哪个接口由 /etc/sysconfig/network-devices 目录下的文件决定,这个目录应该包含有各个要配置的端口的子目录,比如 ifconfig.xyz。这里的 “xyz” 是网络接口名。目录里面将定义接口的属性,比如 IP 地址、子网掩码等等。

在这个目录下新建文件,下面是一个为 eth0 设备创建 ipv4 文件的示例:


cd /etc/sysconfig/network-devices

mkdir -v ifconfig.eth0

cat > ifconfig.eth0/ipv4 << "EOF"

ONBOOT=yes

SERVICE=ipv4-static

IP=192.168.1.1

GATEWAY=192.168.1.2

PREFIX=24

BROADCAST=192.168.1.255

EOF

每个文件中的这些变量的值都要更改成合适的设置。如果 ONBOOT 变量设置成 “yes” ,network 脚本会在系统启动的时候启动 NIC(Network Interface Card 网络接口卡,简称网卡)如果设置为 “yes” 以为的值,网卡会被 network 脚本忽略而没有启动。

SERVICE 变量定义获取 IP 地址的方式。LFS-Bootscripts 包有一套模块化的 IP 地址分配格式,并在 /etc/sysconfig/network-devices/services目录下为其他的 IP 分配方式创建了附加的文件,这通常用做 DHCP ( Dynamic Host Configuration Protocol )方式,在 BLFS 里有详细介绍。

GATEWAY 变量应该设置为默认网关的 IP 地址。如果没有默认网关,就把这个变量完全注释掉。

PREFIX PREFIX 变量设置为子网使用的位数。IP 地址的每个字节是 8 bit 。如果子网掩码是 255.255.255.0 ,那么它使用前三个字节(24 bit)指定网络号;如果网络掩码是 255.255.255.240 ,它用前 28 bit 来指定网络号。长于 24 bits 的前缀一般由 DSL 和 cable-based ISP(Internet Service Providers)使用,这里的例子里( PREFIX=24 ),子网掩码是 255.255.255.0。请根绝您的网络情况调整 PREFIX 变量。

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

如果系统要连接到 Internet 上,就需要 DNS(Domain Name Service 域名服务)名称解析的手段,来把 Internet 域名解析为 IP 地址,反之亦然。在 /etc/resolv.conf 文件里设置 ISP 或网络管理员提供的域名服务器的 IP 地址就可以达到这个目的了,运行下面的命令创建这个文件:


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

# Begin /etc/resolv.conf



domain <域名>

nameserver <主域名服务区 IP 地址>

nameserver <副域名服务器 IP 地址>



# End /etc/resolv.conf

EOF

<域名服务器 IP 地址> 替换为您的域名服务器的 IP 地址。域名服务器常常不止一项(作为备份用途)。如果您只需要一个域名服务器,把文件里的第二行 nameserver 删除就可以了。在局域网里这个 IP 地址还可能是路由器。


Host by Alair