Show Table of Contents
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-address 是
DNS
服务器的地址。这样就会让网络服务使用指定的 DNS
服务器更新 /etc/resolv.conf
。
将配置文件设定为自动获取地址,或者将接口配置文件的 BOOTPROTO 设定为
dhcp
后,NetworkManager 将默认调用 DHCP
客户端 dhclient。需要 DHCP
时,会为每个互联网协议启动 dhclient
,即每个接口中的 IPv4
和 IPv6
。若未运行 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.0
的IP
地址。
以下为使用网络/子网掩码指令格式的
route-interface
文件示例。默认网关为 192.168.0.1
,但租用线路或 WAN 连接位于 192.168.0.10
。这两个静态路由分别用于连接 10.10.10.0/24
和 172.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
后面的静态路由必须以数字顺序排列,且不能跳过任意数值。例如:
ADDRESS0
、ADDRESS1
、ADDRESS2
等等。
2.4.5. 配置 VPN
Red Hat Enterprise Linux 7 中常见 VPN 的首选方法是使用 Libreswan 的 IPsec。使用命令行配置 IPsec VPN 的详情,请参考《Red Hat Enterprise Linux 7 安全指南》。