Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3.5. 使用 ifcfg 文件配置 IP 网络

作为系统管理员,您可以通过编辑 ifcfg 文件手动配置网络接口。
接口配置(ifcfg)文件可控制不同网络设备的软件接口。当系统引导时,它使用这些文件来决定启动哪些界面以及如何进行配置。这些文件通常命名为 ifcfg-name ,后缀名称指的是配置文件控制的设备的名称按照惯例,ifcfg 文件的后缀与配置文件中 DEVICE 指令提供的字符串相同。

使用 ifcfg 文件配置带有静态网络设置的接口

例如,若要使用 ifcfg 文件配置带有静态网络设置的接口,请为名为 enp1s0 的接口,在 /etc/sysconfig/network -scripts/ 目录中创建一个名为 ifcfg- enp1s0 的文件,该文件包含:
  • 对于 IPv4 配置
    DEVICE=enp1s0
    BOOTPROTO=none
    ONBOOT=yes
    PREFIX=24
    IPADDR=10.0.1.27
    
  • 对于 IPv6 配置
    DEVICE=enp1s0
    BOOTPROTO=none
    ONBOOT=yes
    IPV6INIT=yes
    IPV6ADDR=2001:db8::2/48
    
    您不需要指定网络或广播地址,因为这由 ipcalc 自动计算。
    更多 IPv6 ifcfg 配置选项请查看 nm-settings-ifcfg-rh(5) man page。
重要
在 Red Hat Enterprise Linux 7 中,网络接口的命名规则已更改,如 第 11 章 一致的网络设备命名 中所述。使用HWADDR 指令指定硬件或 MAC 地址可能会影响设备命名过程。

使用 ifcfg 文件配置带有动态网络设置的接口

使用 ifcfg 文件配置名为 em1 的接口:
  1. /etc/sysconfig/network-scripts/ 目录中创建一个名为 ifcfg-em1 的文件,其中包含:
    DEVICE=em1
    BOOTPROTO=dhcp
    ONBOOT=yes
    
  2. 要将接口配置为向 DHCP 服务器发送其他主机名,请在 ifcfg 文件中添加以下行:
    DHCP_HOSTNAME=hostname
    要将接口配置为将不同的完全限定域名(FQDN)发送到 DHCP 服务器,请在 ifcfg 文件中添加以下行:
    DHCP_FQDN=fully.qualified.domain.name
    注意
    在给定的 ifcfg 文件中只能使用一个指令(DHCP_HOSTNAME 或 DHCP_FQDN )。如果同时指定了 DHCP_HOSTNAMEDHCP_FQDN,则仅使用后者。
  3. 要将接口配置为使用特定的 DNS 服务器,请在 ifcfg 文件中添加以下行:
      PEERDNS=no
      DNS1=ip-address
      DNS2=ip-address
    其中 ip-addressDNS 服务器的地址。这会导致网络服务使用指定的 DNS 服务器更新 /etc/resolv.conf。只需要一个 DNS 服务器地址,另一个是可选的。
  4. 要在 ifcfg 文件中配置静态路由,请参阅 第 4.5 节 “在 ifcfg 文件中配置静态路由”
    默认情况下,当配置集被设置为通过在接口配置文件中将 BOOTPROTO 设置为 dhcp 来自动获取地址时,NetworkManager 会调用 DHCP 客户端, dhclient。如果需要 DHCP,则会在接口上为每个互联网协议 IPv4 和 IPv 6 启动 todhclient 实例。如果 NetworkManager 没有运行,或者未管理接口,则传统的网络服务将根据需要调用 fordhclient 实例。有关动态 IP 地址的详情,请参考 第 1.2 节 “静态与动态 IP 地址比较”
  5. 应用配置:
    1. 重新载入更新的连接文件:
      # nmcli connection reload
    2. 重新激活连接:
      # nmcli connection up connection_name

3.5.1. 使用 ifcfg 文件管理系统范围以及专用连接配置集

权限与 ifcfg 文件中的 USERS 指令对应。如果没有 USERS 指令,则网络配置文件将可供所有用户使用。例如,ifcfg 文件中的以下命令将仅使连接对列出的用户可用
USERS="joe bob alice"
另外,您可以设置 USERCTL 指令来管理该设备:
  • 如果您设置了 yes,则允许非root 用户控制这个设备。
  • 如果没有,则 不允许非 root 用户控制这个设备。