配置网络接口

时间:2019-04-29 03:17:34  来源:igfitidea点击:

如何配置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

配置网口 nmtui edit enp0s3

nmtui

查看网络管理器的状态

[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