配置网络接口
如何配置Linux网络接口卡
网络配置
以下是在Red Hat Enterprise Linux 7.0,CentOS 7.0和Oracle Linux 7.0服务器上配置网络设置的基本指南。在以下示例中,我们将介绍如何通过编辑配置文件来手动配置网络以及如何使用新的网络管理器配置工具nmtui
。在大多数情况下,基于Red Hat 7.0的服务器将自动配置在安装过程中找到的所有活动接口。但是,有时您想添加其他接口,分配静态IP地址或切换为使用DHCP。以下示例都是在配置了桌面GUI的标准Red Hat Enterprise Linux 7.0服务器上执行的。
网络配置文件的位置
以下文件用于网络设置的配置。这些设置包括网络接口、路由、DNS、域搜索顺序、配置主机名和主机文件解析。您可以选择文本编辑器手动修改这些文件,或者使用推荐的网络工具nmtui
。
网络接口文件
用于保存我们的接口配置设置和路由的网络接口文件的位置可以在以下位置找到:
/etc/sysconfig/network-scripts
接口通常遵循以下命名约定:ifcfg-eth0
ifcfg
表示这是一个接口配置文件,名称的后半部分表示接口。传统上,接口被称为eth0、eth1、eth2等等,但是,在Red Hat 7下,接口是根据适配器自动命名的。在这个特定的系统上,接口称为ifcfg-enp0s3
。静态路由文件也可以在这个位置找到。这些由路由
前缀标识。
接口:ifcfg-interface
路由:route-interface
DHCP与静态IP寻址
对于大多数桌面方案,通常可以接受使用DHCP(动态主机配置协议)自动获取IP地址。但是,生产环境中的大多数服务器将分配一个静态IP地址。在基本安装过程中,您可以指定是手动配置网络还是接受DHCP地址。
DHCP IP寻址
DHCP(动态主机配置协议)是在系统启动时为自动将IP地址分配给网络接口的协议提供的名称。这些IP地址租用了一定的时间。这意味着在一段时间内IP地址可能会更改。
静态IP寻址
静态IP地址是已手动分配给接口的IP地址。与DHCP不同,这些IP地址将一直分配给接口,直到管理员手动更改为止。大多数服务器环境将使用静态IP寻址。
DHCP配置文件示例
ifcfg-enp0s3:
TYPE="Ethernet" BOOTPROTO=dhcp DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT=no IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" NAME="enp0s3" UUID="6df8f600-ea9f-43c1-9ce9-fca5d4c3a899" ONBOOT="yes" IPV6_PEERDNS=yes IPV6_PEERROUTES=yes HWADDR=08:00:27:AE:5C:3F PEERDNS=yes PEERROUTES=yes
主要设置:BOOTPROTO=dhcp
静态IP地址配置示例
TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME="enp0s8" UUID=44404333-262f-4634-ae23-6ad978de1d08 ONBOOT=yes HWADDR=08:00:27:4C:A5:9E IPADDR0=192.168.0.75 PREFIX0=32 GATEWAY0=192.168.0.1 DNS1=8.8.8.8 DNS2=8.8.4.4 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes
BOOTPROTO设置为dhcp
以自动配置IP地址。如果将其设置为none
,则将使用静态路由。(请注意,单词static
不再有效)
Type=Ethernet
指定将使用有线连接。
ONBOOT=yes
指定该接口应在系统引导时启动。
NAME=xxxxxxx
指定接口的名称。
IPADDR0=xxx.xxx.xxx.xxx
指定要分配给接口的第一个IP地址。可以使用IPADDR1,IPADDR2 ...添加其他IP地址。DNS1
DNS1=xxx.xxx.xxx.xxx
指定要使用的DNS服务器。通过使用DNS2 .....添加其他DNS服务器。
HWADDR=
这些是自动生成的,在您的系统上会有所不同。
配置主机名
通常,在安装过程中,步骤之一是提供一个唯一的主机名,系统将通过该主机名在网络上进行标识。可以通过编辑以下配置文件来更改此名称:
/etc/hostname
管理主机名的另一种方法是使用以下命令:hostnamectl
hostnamectl
hostnamectl是一个命令,它允许您定义/更改系统上的主机名。
hostnamectl命令示例
显示与系统有关的信息
[root@rhel07a network-scripts]# hostnamectl Static hostname: rhel07a Icon name: computer Chassis: n/a Machine ID: 5904595331544c5fb48da4501a98ae7c Boot ID: aa8349956c294c1f92ff096454a0d62e Virtualization: oracle Operating System: Red Hat Enterprise Linux Server 7.0 (Maipo) CPE OS Name: cpe:/o:redhat:enterprise_linux:7.0:GA:server Kernel: Linux 3.10.0-121.el7.x86_64 Architecture: x86_64
设置静态主机名
# hostnamectl --static set-hostname rhel07a
设置临时主机名
# hostnamectl --transient set-hostname myserver
DNS设置和域搜索顺序的位置
在安装过程中,您可能已经手动配置了网络,以提供DNS服务器的名称和域搜索顺序。
这些设置的配置在 /etc/resolv.conf
DNS或主机文件查找-名称服务交换配置文件nsswitch.conf
位置/etc/nsswitch.conf
名称服务交换机(NSS)配置文件/etc/nsswitch.conf
。由GNU C库使用,以确定从哪些源来获取类别范围内的名称服务信息,以及以什么顺序获取。
RHEL 7.0服务器上的配置:
# # /etc/nsswitch.conf # passwd: files sss shadow: files sss group: files sss hosts: files dns bootparams: nisplus [NOTFOUND=return] files ethers: files netmasks: files networks: files protocols: files rpc: files services: files sss netgroup: files sss publickey: nisplus automount: files aliases: files nisplus
指定查找顺序的行如下:hosts: files dns
这个条目指定在尝试使用DNS服务器之前,我们将首先在host文件中查找条目。
主机文件- "/etc/ Hosts "
/etc/hosts
文件是一个简单的文本文件,它将IP地址与主机名关联起来,每个IP地址对应一行。对于每个主机,一行应显示以下信息:
IP_address canonical_hostname [别名...]
例如:
192.168.0.75 www.example.com myserver
对该文件的修改通常立即生效,除非该文件被应用程序缓存。
添加永久静态路由
有几种添加或删除静态路由信息的方法。传统方式是使用route
命令,该命令允许系统管理员操纵路由表。
显示路由表
[root@rhel07a etc]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.0.1 0.0.0.0 UG 1024 0 0 enp0s3 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
注意: route命令现在已过时,应该改为使用
ip route
命令。
ip route命令
ip route
命令用于路由表管理,是对过时的route
命令的替代。静态路由用于不允许或不应该通过默认网关的流量。
默认网关
适用于所有非本地网络且在路由表中未指定首选路由的流量。
配置静态路由
使用ip route add
命令将其添加到路由表中,并使用ip route del
命令将其删除。
查看路由表
[root@rhel07a etc]# ip route default via 192.168.0.1 dev enp0s3 proto static metric 1024 192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.20
将静态路由添加到主机地址
ip route add 192.0.2.1 via 10.0.0.1 [dev interface]
其中192.0.2.1
是主机的IP地址,10.0.0.1
是下一跳地址,interface
是通向下一跳的出口接口。
将静态路由添加到代表一系列IP地址的网络
ip route add 192.0.2.0/24 via 10.0.0.1 [dev interface]
其中192.0.2.0
是目标网络的IP地址,/ 24
是网络前缀。
静态路由配置可以按/etc/sysconfig/network-scripts/route-interface
的命名约定存储在一个文件中。
一个名为eth0
的接口将被存储在一个名为/etc/sysconfig/network-scripts/route-eth0的文件中。
路由接口
文件有两种可用的格式。一个是使用ip参数
,另一个是使用network/netmask
指令。
配置默认网关
默认网关由网络脚本决定,这些脚本首先解析/etc/sysconfig/network
文件,然后解析处于up
状态的接口的任何网络接口ifcfg
文件。这些ifcfg接口文件按数字升序解析。要读取的最后一个网关指令用于在路由表中组合一个默认路由。
默认路由可以通过网关指令来指定,可以全局设置,也可以在接口特定的配置文件中设置。
全局默认网关的配置存储在文件/etc/sysconfig/network
中。此配置文件为所有网络接口指定网关和主机信息。
在ifcfg接口文件中配置静态路由
使用命令行中的ip命令设置的静态路由不是持久的,如果系统关闭或重新启动,它们将丢失。要配置在系统重新启动后仍然存在的静态路由,必须将它们放在/etc/sysconfig/network-scripts/
目录下的接口配置文件中。
文件名格式为route-interface
。
使用IP命令参数的静态路由
使用以下命名约定创建一个接口文件(在本例中使用了名称eth0),例如/etc/sysconfig/network-scripts/router-eth0
,然后在第一行定义到默认网关的路由。只有当网关没有被DHCP设置,并且在/etc/sysconfig/network
文件中没有全局设置时,才需要这样做:
default via 192.168.1.1 dev interface
192.168.1.1
是默认网关的IP地址。接口
是连接到默认网关或可以到达默认网关的接口。可以忽略dev
选项,因为它是可选的。此接口配置文件设置优先于/etc/sysconfig/network
文件中定义的设置。
如果需要到远程网络的路由,可以指定静态路由,具体如下:
10.10.10.0/24 via 192.168.1.2 [dev interface]
每一行都被解析为单独的路由。10.10.10.0/24是远程或目标网络的网络地址和前缀长度(CIDR格式)。地址192.168.1.2是通往远程网络的IP地址。它最好是下一跳地址,然而,退出接口的地址将工作。
下一跳
指的是链路(网关/路由器)的远程端。dev
选项可用于指定退出接口。
网络/网络掩码指令格式
以下格式使用地址ADDRESS
、掩码NETMASK
和网关GATEWAY
字段。每个字段后面都有一个数字,表明它适用于哪条路由。
ADDRESS<N>=xxx.xxx.xxx.xxx NETMASK0<N>=xxx.xxx.xxx.xxx GATEWAY<N>0=xxx.xxx.xxx.xxx
例如:
ADDRESS0=10.10.10.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.1.1
其中10.10.10.0
是要访问的远程网络或远程主机的网络地址。255.255.255.0
是用10.10.10.0
定义的网络地址的网掩码。192.168.1.1
是默认网关,或一个IP地址,可用于到达地址10.10.10.0
下面是一个使用network/netmask
指令格式的配置路由的示例。
ADDRESS<0>=xxx.xxx.xxx.xxx NETMASK<0>=xxx.xxx.xxx.xxx GATEWAY<0>=xxx.xxx.xxx.xxx ADDRESS<1>=xxx.xxx.xxx.xxx NETMASK<1>=xxx.xxx.xxx.xxx GATEWAY<1>=xxx.xxx.xxx.xxx
静态路由必须按顺序编号。例如,ADDRESS0、ADDRESS1、ADDRESS2,等等。
使用nmtui
配置网络
网络管理器文本用户接口(nmtui)提供了一个文本接口,可通过控制NetworkManager来配置网络。现在,默认情况下该工具应随NetworkManager一起提供,但是,如果缺少该工具,则可以使用以下命令安装该工具:
yum install NetworkManager-tui
确定接口是否在NetworkManager的控制之下
[root@rhel07a ~]# nmcli dev status DEVICE TYPE STATE CONNECTION enp0s3 ethernet connected enp0s3 lo loopback unmanaged --
启动nmtui
要启动NM Text用户接口,请以root用户身份执行命令nmtui
。
配置网口 nmtui edit enp0s3
查看网络管理器的状态
[root@rhel07a ~]# systemctl status NetworkManager.service NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled) Active: active (running) since Fri 2014-10-03 20:01:32 BST; 43min ago Main PID: 797 (NetworkManager) CGroup: /system.slice/NetworkManager.service ├─ 797 /usr/sbin/NetworkManager --no-daemon └─1233 /sbin/dhclient -d -sf /usr/libexec/nm-dhcp-helper -pf /var/... Oct 03 20:25:47 rhel07a dhclient[1233]: bound to 192.168.0.34 -- renewal in .... Oct 03 20:25:47 rhel07a NetworkManager[797]: bound to 192.168.0.34 -- renewa.... Oct 03 20:25:47 rhel07a NetworkManager[797]: (enp0s3): DHCPv4 state c...w Oct 03 20:25:47 rhel07a NetworkManager[797]: address 192.168.0.34
启动和停止服务和接口
红帽企业Linux 7.0,CentOS 7.0,Oracle Linux 7.0和Scientific Linux 7.0都使用systemd命令来操作服务。
以下是一些有用的与网络相关的命令:
显示当前网络状态:systemctl status network.service
重启网络服务:systemctl restart network.service
停止网络服务:systemctl stop network.service
启动网络服务:systemctl start network.service
停止接口:ifdown 接口
激活接口:ifup 接口
其他网络命令
由NetworkManager控制的显示设备:nmcli dev status
NetworkManager文本用户接口(nmtui):nmtui
NetworkManager文本用户接口(nmtui):nmtui edit 接口
显示接口连接:ip link
显示接口统计信息:ip -s link
显示分配的IP地址:ip address show
显示路由表:ip route show
管理路由表:ip route { add | del | change | append | replace } ROUTE
显示路由表:netstat -nr
显示路由表(已过时):route
显示和配置接口(已过时):ifconfig
显示主机名信息:hostnamectl
设置主机名-静态:hostnamectl --static set-hostname rhel07a
设置主机名-pretty:hostnamectl --pretty set-hostname "Land of Linux's RHEL 7 test server"
设置主机名-临时:hostnamectl --transient set-hostname myserver