2.4. 使用命令行界面(CLI)

2.4.1. 使用 ifcfg 文件配置网络接口

接口配置文件控制各个独立网络设备的软件接口。系统引导后,它会使用这些文件决定激活哪些接口,以及如何配置它们。这些文件通常名为 ifcfg-name,其后缀指的是该配置文件控制的设备名称。通常 ifcfg 文件的后缀与配置文件本身的 DEVICE 指令给出的字符串相同。

静态网络设置

要让名为 eth0 的接口使用 ifcfg 文件配置使用静态网络设置的接口,请在 /etc/sysconfig/network-scripts/ 目录中生成名为 ifcfg-eth0 的文件,如下所示:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
PREFIX=24
IPADDR=10.0.1.27
另外还可使用 HWADDR 指令指定硬件或 MAC 地址。注:这可能会影响设备命名步骤,如 第 8 章 一致网络设备命名 所述。不需要指定网络或广播地址,因为 ipcalc 会自动计算这些数值。

动态网络设置

要使用 ifcfg 文件为名为 em1 的接口配置使用动态网络设置的接口,请按照如下操作在 /etc/sysconfig/network-scripts/ 目录中生成名为 ifcfg-em1 的文件:
DEVICE=em1
BOOTPROTO=dhcp
ONBOOT=yes
另外还可以使用 HWADDR 指令指定硬件或 MAC 地址。注:这可能会影响设备命名过程,如 第 8 章 一致网络设备命名 所述。
要配置一个向 DHCP 服务器发送不同的主机名的接口,请在 ifcfg 文件中添加以下行:
DHCP_HOSTNAME=hostname
要将接口配置为忽略由 DHCP 服务器发送的路由,请在 ifcfg 文件中添加以下行:
PEERDNS=no
这样可防止网络服务使用从 DHCP 服务器接收的 DNS 服务器更新 /etc/resolv.conf
要配置一个接口以便使用具体 DNS 服务器,请如上所述设定 PEERDNS=no,并在 ifcfg 文件中添加以下行:
DNS1=ip-address
DNS2=ip-address
其中 ip-addressDNS 服务器的地址。这样就会让网络服务使用指定的 DNS 服务器更新 /etc/resolv.conf
将配置文件设定为自动获取地址,或者将接口配置文件的 BOOTPROTO 设定为 dhcp 后,NetworkManager 将默认调用 DHCP 客户端 dhclient。需要 DHCP 时,会为每个互联网协议启动 dhclient,即每个接口中的 IPv4IPv6。若未运行 NetworkManager,或者未管理接口,旧的网络设备将根据需要调用 dhclient 实例。

配置 DHCP 客户端

2.4.2. 使用 ip 命令配置网络接口

可使用 ip 程序为接口分配 IP 地址。这个命令的格式如下:
ip addr [ add | del ] address dev ifname

使用 ip 命令分配静态地址

请作为 root 使用以下命令为接口分配 IP 地址:
~]# ip address add 10.0.0.3/24 dev eth0
The address assignment of a specific device can be viewed as follows:
~]# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether f0:de:f1:7b:6e:5f brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.3/24 brd 10.0.0.255 scope global global eth0
       valid_lft 58682sec preferred_lft 58682sec
    inet6 fe80::f2de:f1ff:fe7b:6e5f/64 scope link 
       valid_lft forever preferred_lft forever
更多示例及命令选项请查看 ip-address(8) manual page。

使用 ip 命令配置多个地址

因为 ip 程序支持为同一接口分配多个地址,所以不再需要使用别名接口方法在同一接口中绑定多个地址。可重复多次使用 ip 命令分配地址,这样就可以分配多个地址。例如:
~]# ip address add 192.168.2.223/24 dev eth1
~]# ip address add 192.168.4.223/24 dev eth1
~]# ip addr
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:fb:77:9e brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.223/24 scope global eth1
    inet 192.168.4.223/24 scope global eth1
有关 ip 程序的命令,请参考 ip(8) manual page。

注意

系统重启后会丢失命令行中给出的 ip 命令。

2.4.3. 静态路由及默认网关

静态路由是用于流量,不得用于或不应用于默认网关。路由通常是由网络中专门用于路由的设备提供(虽然所有设备都可被配置为执行路由)。因此,通常不需要在 Red Hat Enterprise Linux 服务器或客户端中配置静态路由。那些必须通过加密 VPN 通道,或者那些因为成本或安全原因应使用具体路由的流量除外。默认网关是用于那些目标不是本地网络,且未在路由表中指定首选路由的流量。默认网关通常是一个专用网络路由器。

注意

要扩展您的专业领域,Red Hat 系统管理 I (RH124) 培训课程可能会对您有所帮助。

使用命令行配置静态路由

如果需要静态路由,可使用 ip route add 命令在路由表中添加,使用 ip route del 命令删除。最常使用的 ip route 命令格式如下:
ip route [ add | del | change | append | replace ] destination-address
有关选项及格式的详情,请查看 ip-route(8) man page。
使用不附带任何选项的 ip route 命令显示 IP 路由表。例如:
~]$ ip route
default via 192.168.122.1 dev ens9  proto static  metric 1024
192.168.122.0/24 dev ens9  proto kernel  scope link  src 192.168.122.107
192.168.122.0/24 dev eth0  proto kernel  scope link  src 192.168.122.126
要在主机地址中添加一个静态路由,即 IP 地址,请作为 root 运行以下命令:
ip route add 192.0.2.1 via 10.0.0.1 [dev ifname]
其中 192.0.2.1 是用点分隔的十进制符号中的 IP 地址,10.0.0.1 是下一个跃点,ifname 是进入下一个跃点的退出接口。
要在网络中添加一个静态路由,即代表 IP 地址范围的 IP 地址,请作为 root 运行以下命令:
ip route add 192.0.2.0/24 via 10.0.0.1 [dev ifname]
其中 192.0.2.1 是用点分隔的十进制符号中目标网络的 IP 地址,10.0.0.1 是网络前缀。网络前缀是在子网掩码中启用的位元。这个网络地址/网络前缀长度格式有时是指无类别域际路由选择CIDR)表示法。
可在 /etc/sysconfig/network-scripts/route-interface 文件中为每个接口保存其静态路由配置。例如:接口 eth0 的静态路由可保存在 /etc/sysconfig/network-scripts/route-eth0 文件中。route-interface 文件有两种格式:ip 命令参数和网络/子网掩码指令,如下所述。
有关 ip route 命令的详情,请查看 ip-route(8) man page。

配置默认网关

确定默认网关时,首先是使用网络脚本解析 /etc/sysconfig/network 文件,然后是为处于 up 的接口解析 ifcfg 文件 。ifcfg 文件是按照数字升序的顺序解析,使用最后读取的 GATEWAY 指令编写路由表中的默认路由。
因此,默认路由可使用 GATEWAY 指令代表,并可在全局或具体接口的配置文件中指定。但在 Red Hat Enterprise Linux 中,已经不再使用全局 /etc/sysconfig/network 文件,现在只能在每个接口的配置文件中指定网关。
在动态网络环境中,当使用 NetworkManager 管理主机时,网关信息一般是指具体接口,而且最好是由 DHCP 分配。在某些特殊情况下,如果要影响 NetworkManager 选择用来连接网关的退出接口,请在 ifcfg 文件中为那些不想连接默认网关的接口使用 DEFROUTE=no 命令。

2.4.4. 在 ifcfg 文件中配置静态路由

在命令提示符后使用 ip 设定的静态路由会在系统关机或重启后丢失。要配置静态路由以便在系统重启后仍可保留,则必须将其放在 /etc/sysconfig/network-scripts/ 目录中。该文件名的格式应为 route-ifname。在该配置文件中使用两类命令,即 ip,如 第 2.4.4.1 节 “使用 IP 命令参数格式的静态路由” 所述;及 网络/子网掩码 格式,如 第 2.4.4.2 节 “网络/子网掩码指令格式” 所述。

2.4.4.1. 使用 IP 命令参数格式的静态路由

如果需要根据接口设置的配置文件,例如 /etc/sysconfig/network-scripts/route-eth0 中第一行定义默认网关的路由。只有不是使用 DHCP 设置的网关需要此操作,且不会在 /etc/sysconfig/network 文件中进行全局设置:
default via 192.168.1.1 dev interface
其中 192.168.1.1 是默认网关的 IP 地址。interface 是连接到,或可连接网关的接口。可省略 dev 选项,它是自选项。注:这个设置可覆盖 /etc/sysconfig/network 文件中的设置。
如果需要路由到远程网络,可按以下方式指定静态路由。每行都解析为一个独立路由:
10.10.10.0/24 via 192.168.1.1 [dev interface]
其中 10.10.10.0/24 是网络地址及远程或目标网络的前缀长度。地址 192.168.1.1 是远程网络的第一个 IP 地址。首选下一个跃点地址,但也可以使用退出接口。下一个跃点的含义是链接的远端点,例如网关或路由器。可使用 dev 选项指定退出接口 interface,但不一定要这么做。根据需要添加所有静态路由。
以下是使用 ip 命令参数格式的 route-interface 文件示例。默认网关是 192.168.0.1,接口为 eth0,以及 192.168.0.10 中的租用专线或 WAN 连接。两个静态路由是用来连接 10.10.10.0/24 网络和 172.16.1.10/32 主机:
default via 192.168.0.1 dev eth0
10.10.10.0/24 via 192.168.0.10 dev eth0
172.16.1.10/32 via 192.168.0.10 dev eth0
在以上示例中,会将进入本地 192.168.0.0/24 网络的数据包指向附加到那个网络的接口。会将进入 10.10.10.0/24 网络和 172.16.1.10/32 主机的数据包指向 192.168.0.10。进入未知、远程、网络的数据包将使用默认网关,因此只应在默认路由不适用时为远程网络或主机配置静态路由。在这里远程是指没有直接连接到该系统的网络或主机。
指定退出接口为自选项,要强制让流量离开某个具体接口时有用。例如:在使用 VPN 时,可强制让流量通过远程网络使用 tun0 接口,即便该接口处于不同于目标网络的子网中。

重要

如果已由 DHCP 分配默认网关,且在配置文件中指定了使用同一跃点的同一网关,则会在启动时出错,或者在激活某个接口时出错,并显示以下出错信息:"RTNETLINK answers: File exists"。可忽略该信息。

2.4.4.2. 网络/子网掩码指令格式

还可以在 route-interface 文件中使用网络/子网掩码指令格式。以下是网络/子网掩码格式示例,并随后提供具体说明:
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.1.1
  • ADDRESS0=10.10.10.0 是要连接的远程网络或主机的网络地址。
  • NETMASK0=255.255.255.0 是使用 ADDRESS0=10.10.10.0 定义的网络地址的子网掩码。
  • GATEWAY0=192.168.1.1 是默认网关,或用来连接 ADDRESS0=10.10.10.0IP 地址。
以下为使用网络/子网掩码指令格式的 route-interface 文件示例。默认网关为 192.168.0.1,但租用线路或 WAN 连接位于 192.168.0.10。这两个静态路由分别用于连接 10.10.10.0/24172.16.1.0/24 网络:
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.10
ADDRESS1=172.16.1.10
NETMASK1=255.255.255.0
GATEWAY1=192.168.0.10
后面的静态路由必须以数字顺序排列,且不能跳过任意数值。例如:ADDRESS0ADDRESS1ADDRESS2 等等。

2.4.5. 配置 VPN

Red Hat Enterprise Linux 7 中常见 VPN 的首选方法是使用 Libreswan 的 IPsec。使用命令行配置 IPsec VPN 的详情,请参考《Red Hat Enterprise Linux 7 安全指南》