01 Linux网络设置

目录

[1.1 查看及测试网络](#1.1 查看及测试网络)

[1.1.1 查看网络配置](#1.1.1 查看网络配置)

[1. 查看网络接口地址](#1. 查看网络接口地址)

[1. 查看活动的网络接口设备](#1. 查看活动的网络接口设备)

[2. 查看指定的网络接口信息](#2. 查看指定的网络接口信息)

[2. 查看主机名称](#2. 查看主机名称)

[3. 查看路由表条目](#3. 查看路由表条目)

[4. 查看网络连接情况](#4. 查看网络连接情况)

[1.1.2 测试网络连接](#1.1.2 测试网络连接)

[1. 测试网络连通性](#1. 测试网络连通性)

[2. 跟踪数据包的路由途径](#2. 跟踪数据包的路由途径)

[3. 测试DNS域名解析](#3. 测试DNS域名解析)

[1.2 设置网络地址参数](#1.2 设置网络地址参数)

[1.2.1 使用网络配置命令](#1.2.1 使用网络配置命令)

[1. 修改网卡的地址、状态](#1. 修改网卡的地址、状态)

[1. 修改网卡的IP地址、子网掩码](#1. 修改网卡的IP地址、子网掩码)

[2. 禁用、激活网络接口](#2. 禁用、激活网络接口)

[3. 为网卡绑定虚拟接口](#3. 为网卡绑定虚拟接口)

[2. 添加、删除静态路由记录](#2. 添加、删除静态路由记录)

[1. 添加、删除到指定网段的路由记录](#1. 添加、删除到指定网段的路由记录)

[2. 添加、删除默认网关记录](#2. 添加、删除默认网关记录)

[3. 修改主机的名称](#3. 修改主机的名称)

[1.2.2 修改网络配置文件](#1.2.2 修改网络配置文件)

[1. 网络接口配置文件](#1. 网络接口配置文件)

[2. 启用、禁用网络接口配置](#2. 启用、禁用网络接口配置)

[3. 主机名称配置文件](#3. 主机名称配置文件)

[4. 域名解析配置文件](#4. 域名解析配置文件)

[1. 指定为本机提供DNS解析的服务器地址](#1. 指定为本机提供DNS解析的服务器地址)

[2. 本机主机映射文件](#2. 本机主机映射文件)


1.1 查看及测试网络

查看及测试网络配置是管理Linux 网络服务的第一步,本节将学习Linux操作系统中的网络查看及测试命令。其中讲解的大多数命令以普通用户权限就可以完成操作,但普通用户在执行/sbin/目录中的命令时需要指定命令文件的绝对路径。

1.1.1 查看网络配置

1. 查看网络接口地址

主机的网络接口卡(网卡)通常称为网络接口。在Linux操作系统中,使用ifconfig 命令可以查看网络接口的地址配置信息(Interface Configuration)。

1. 查看活动的网络接口设备

若采用mini 版 CentOS 7安装的系统,默认是没有ifconfig命令的,需要先通过yum方式安装net-tools 软件包,才有ifconfig 命令。在不带任何选项和参数执行ifconfig 命令时,将显示当前主机中已启用(活动)的网络接口信息。例如,直接执行ifconfig命令后可以看到ens33、lo这两个网络接口的信息,具体操作如下:

[root@localhost ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.101  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::734f:69d7:145f:1c42  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:48:29:8f  txqueuelen 1000  (Ethernet)
        RX packets 639  bytes 52642 (51.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 645  bytes 50395 (49.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 4  bytes 348 (348.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 348 (348.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# 

在上述输出结果中,ens33对应为第一块物理网卡,lo对应为虚拟的回环接口。

  1. ens33:第一块以太网卡的名称。"ens33"中的"en"是"EtherNet"的缩写,表示网卡类型为以太网,"s"表示热插拔插槽上的设备(hot-plug Slot),数字"33"表示插槽编号。由此可以得知,从 CentOS7开始,使用基于固件、硬件拓扑和设备位置信息分配的一致网络设备命名(Consistent Network Naming)。因为一致的网络设备名是基于系统硬件的,所以在不同的操作系统上,网络接口名称可能不同。
  2. lo:"回环"网络接口,"lo"是"loopback"的缩写,它不代表真正的网络接口,而是一个虚拟的网络接口,其IP地址默认是"127.0.0.1"。回环地址通常仅用于对本机的网络测试。
2. 查看指定的网络接口信息

当只需要查看其中某一个网络接口的信息时,可以使用网络接口的名称作为ifconfig 命令的参数(不论该网络接口是否处于激活状态)。例如,执行"ifconfig ens33"命令后可以只查看网卡ens33的配置信息,具体操作如下:

[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.101  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::f6d:8bdc:c21a:5b47  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8b:11:fe  txqueuelen 1000  (Ethernet)
        RX packets 119  bytes 14467 (14.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 134  bytes 17346 (16.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# 

从上述命令显示的结果中,可以获知 ens33网卡的一些基本信息,如下所述。

  1. inet:表示网络接口的I地址,如"192.168.4.11"。
  2. netmask:表示网络接口的子网掩码,如"255.255.255.0"。
  3. broadcast:表示网络接口所在网络的广播地址,如"192.168.4.255"。
  4. ether:表示网络接口的物理地址(MAC地址),如"00:0c:29:3a:81:cc"。网络接口的物理地址通常不能更改,是网卡在生产时确定的全球唯一的硬件地址。

除此以外,还能够通过"TX""和"RX"等信息了解通过该网络接口发送和接收的数据包个数、流量等更多属性。

2. 查看主机名称

在Linux操作系统中,相当一部分网络服务都会通过主机名来识别主机,如果主机名配置不当,可能会导致程序功能出现故障。使用hostname命令可以查看当前主机的主机名,不用添加任何选项或参数,具体操作如下:

[root@localhost ~]# hostname
localhost.localdomain
[root@localhost ~]# 

3. 查看路由表条目

Linux操作系统中的路由表决定着从本机向其他主机、其他网络发送数据的去向,是排除网络故障的关键信息。直接执行"route"命令可以查看当前主机中的路由表信息,在输出结果中,Destination列对应目标网段的地址,Gateway列对应下一跳路由器的地址,lface列对应发送数据的网络接口。

[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens33
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
[root@localhost ~]# 

当目标网段为"default"时,表示此行是默认网关记录;当下一跳为"gateway"时,表示目标网段是与本机直接相连的。但是,直接执行"route"命令无法直接看出默认网关地址。

若结合"-n"选项使用,可以将路由记录中的地址显示为数字形式,这可以跳过解析主机名的过程,在路由表条目较多的情况下能够加快执行速度。例如,执行"route -n"命令后,输出信息中的"gateway"地址将显示为"192.168.4.1"默认网关记录中的"default"也将显示为"0.0.0.0",具体操作如下:

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.254  0.0.0.0         UG    100    0        0 ens33
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
[root@localhost ~]# 

4. 查看网络连接情况

通过netstat命令可以查看当前操作系统的网络连接状态、路由表、接口统计等信息,它是了解网络状态及排除网络服务故障的有效工具。以下是 netstat命令常用的几个选项。

  1. -a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
  2. -n:以数字的形式显示相关的主机地址、端口等信息。
  3. -r:显示路由表信息。
  4. -l:显示处于监听(Listening)状态的网络连接及端口信息。
  5. -t:查看TCP( Transmission Control Protocol,传输控制协议)相关的信息。
  6. -u:显示 UDP (User Datagram Protocol,用户数据报协议)协议相关的信息。
  7. -p:显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)。

通常使用"-anpt"组合选项,以数字形式显示当前系统中所有的TCP连接信息,同时显示对应的进程信息。结合管道命令使用"grep"命令,还可以在结果中过滤出所需要的特定记录。例如,执行以下操作可以查看本机中是否有监听"TCP 80"端口(即标准 Web服务)的服务程序,输出信息中包括PID号和进程名称。

[root@localhost ~]# netstat -anpt | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1189/sshd           
tcp        0      0 192.168.10.101:22       192.168.10.1:58253      ESTABLISHED 1449/sshd: root@not 
tcp        0     36 192.168.10.101:22       192.168.10.1:58252      ESTABLISHED 1444/sshd: root@pts 
tcp6       0      0 :::22                   :::*                    LISTEN      1189/sshd           
[root@localhost ~]# 

除了netstat,ss命令也可以查看网络连接情况,它是 Socket Statistics 的缩写,主要用于获取 socket统计信息,它可以显示和netstat命令类似的输出内容。但ss 的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比 netstat更快速更高效。要想使用ss命令,首先确保 iproute程序包已被安装,可以通过yum方式进行安装。

以下是ss命令常用的几个选项。

  1. -h:--help 通过该选项获取更多的使用帮助。
  2. -V:--version显示软件的版本号。
  3. -t:--tcp显示TCP协议的sockets。
  4. -u:--udp显示UDP协议的sockets。
  5. -n: --numeric不解析服务的名称,如"22"端口不会显示成"ssh"。
  6. -l:--listening只显示处于监听状态的端口。
  7. -p: --processes显示监听端口的进程。
  8. -a: --all对TCP协议来说,既包含监听的端口,也包含建立的连接。
  9. -r:--resolve 把IP解释为域名,把端口号解释为协议名称。

ss命令的输出结果,可以提供TCP和 UDP的socket 信息,以及各种服务建立的持久连结,熟悉这个命令有助于更好的发现与解决系统性能问题。例如,执行以下操作可以显示TCP协议下已经建立的连接,"Local Address:Port"表示本地监听的IP和端口,"PeerAddress:Port"表示远端连接的IP和端口,具体ss 的操作命令如下。

[root@localhost ~]# ss -t state established
Recv-Q Send-Q Local Address:Port                 Peer Address:Port                
0      0      192.168.10.101:ssh                  192.168.10.1:58253                
0      0      192.168.10.101:ssh                  192.168.10.1:58252                
[root@localhost ~]# 

1.1.2 测试网络连接

用户访问网络服务的前提是网络连接处于正常状态。若网络连接不稳定,甚至无法连接,用户则无法正常访问网络服务。因此,当网络连接出现问题时,需要通过测试网络连接的命令来确定故障点。下面介绍几个常用的测试网络连接的命令。

1. 测试网络连通性

使用ping命令可以向目标主机持续地发送测试数据包,并显示反馈结果,直到按Ctrl+C组合键后中止测试,并显示最终统计结果。例如,以下操作将测试从本机到www.baidu.com的连通性情况,连接正常时会收到返回的数据包。

[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (110.242.68.3) 56(84) bytes of data.
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=8 ttl=128 time=30.9 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=9 ttl=128 time=28.6 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=10 ttl=128 time=30.7 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=11 ttl=128 time=24.6 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=12 ttl=128 time=32.8 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=13 ttl=128 time=29.0 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=14 ttl=128 time=28.1 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=15 ttl=128 time=27.1 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=16 ttl=128 time=34.4 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=17 ttl=128 time=32.6 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=18 ttl=128 time=31.1 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=19 ttl=128 time=24.8 ms
^C
--- www.a.shifen.com ping statistics ---
19 packets transmitted, 12 received, 36% packet loss, time 22274ms
rtt min/avg/max/mdev = 24.624/29.603/34.422/2.961 ms
[root@localhost ~]# 

执行ping测试命令时,若不能获得从目标主机发回的反馈数据包,则表示在本机到目标主机之间存在网络连通性故障。例如,若看到"Destination Host Unreachable"的反馈信息,则表示目的主机不可达,可能目标地址不存在或者主机已经关闭;若看到"Network isunreachable"的反馈信息,则表示没有可用的路由记录(如默认网关),无法达到目标主机所在的网络。

当网络中存在影响通信过程稳定性的因素(如网卡故障、病毒或网络攻击等)时,使用ping命令测试可能会频繁看到"Request timeout"的反馈结果,表示与目标主机间的连接超时(数据包响应缓慢或丢失)。除此以外,当目标主机有严格的防火墙限制时,也可能收到"Request timeout"的反馈结果。

2. 跟踪数据包的路由途径

若服务器上没有traceroute命令,可通过yum方式安装traceroute 软件包。traceroute命令可以用于测试从当前主机到目的主机之间经过了哪些网络结点,并显示各中间结点的连接状态(响应时间)。对于无法响应的结点,连接状态将显示为"*"。例如,通过以下操作结果可以看出,从本机到目标主机192.168.7.7之间,中间需跨越一个路由器192.168.4.1。

[root@localhost ~]# yum -y install traceroute
已加载插件:fastestmirror
Determining fastest mirrors
c7-media                                            | 3.6 kB     00:00     
正在解决依赖关系
--> 正在检查事务
---> 软件包 traceroute.x86_64.3.2.0.22-2.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

===========================================================================
 Package          架构         版本                   源              大小
===========================================================================
正在安装:
 traceroute       x86_64       3:2.0.22-2.el7         c7-media        59 k

事务概要
===========================================================================
安装  1 软件包

总下载量:59 k
安装大小:92 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 3:traceroute-2.0.22-2.el7.x86_64                       1/1 
  验证中      : 3:traceroute-2.0.22-2.el7.x86_64                       1/1 

已安装:
  traceroute.x86_64 3:2.0.22-2.el7                                         

完毕!

[root@localhost ~]# traceroute 192.168.7.7
traceroute to 192.168.7.7 (192.168.7.7), 30 hops max, 60 byte packets
 1  gateway (192.168.10.254)  0.120 ms  0.079 ms  0.040 ms
[root@localhost ~]# 

traceroute命令能够比 ping命令更加准确地定位网络连接的故障点(中断点),因此执行速度会比ping命令稍慢。在网络测试与排错过程中,通常会先使用ping命令测试与目的主机的网络连接,如果发现网络连接有故障,再使用traceroute命令跟踪查看是在哪个中间结点存在故障。

3. 测试DNS域名解析

当域名解析出现异常时,将无法使用域名的形式访问网络中的Web站点、电子邮件系统等服务。nslookup命令是用来测试域名解析的专用工具,使用时只要指定要解析的目标域名作为参数即可。若在执行过程中提示无法找到nslookup命令,可通过yum安装bind-utils程序包的方式来解决。例如,执行"nslookup www.google.com"命令后,nslookup程序将提交查询请求,询问站点www.google.com对应的I地址是多少,具体操作如下:

[root@localhost ~]# yum -y install bind-utils
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 bind-utils.x86_64.32.9.11.4-26.P2.el7 将被 安装
--> 正在处理依赖关系 bind-libs-lite(x86-64) = 32:9.11.4-26.P2.el7,它被软件包 32:bind-utils-9.11.4-26.P2.el7.x86_64 需要
--> 正在处理依赖关系 bind-libs(x86-64) = 32:9.11.4-26.P2.el7,它被软件包 32:bind-utils-9.11.4-26.P2.el7.x86_64 需要
--> 正在处理依赖关系 liblwres.so.160()(64bit),它被软件包 32:bind-utils-9.11.4-26.P2.el7.x86_64 需要
--> 正在处理依赖关系 libisccfg.so.160()(64bit),它被软件包 32:bind-utils-9.11.4-26.P2.el7.x86_64 需要
--> 正在处理依赖关系 libisc.so.169()(64bit),它被软件包 32:bind-utils-9.11.4-26.P2.el7.x86_64 需要
--> 正在处理依赖关系 libirs.so.160()(64bit),它被软件包 32:bind-utils-9.11.4-26.P2.el7.x86_64 需要
--> 正在处理依赖关系 libdns.so.1102()(64bit),它被软件包 32:bind-utils-9.11.4-26.P2.el7.x86_64 需要
--> 正在处理依赖关系 libbind9.so.160()(64bit),它被软件包 32:bind-utils-9.11.4-26.P2.el7.x86_64 需要
--> 正在处理依赖关系 libGeoIP.so.1()(64bit),它被软件包 32:bind-utils-9.11.4-26.P2.el7.x86_64 需要
--> 正在检查事务
---> 软件包 GeoIP.x86_64.0.1.5.0-14.el7 将被 安装
--> 正在处理依赖关系 geoipupdate,它被软件包 GeoIP-1.5.0-14.el7.x86_64 需要
---> 软件包 bind-libs.x86_64.32.9.11.4-26.P2.el7 将被 安装
--> 正在处理依赖关系 bind-license = 32:9.11.4-26.P2.el7,它被软件包 32:bind-libs-9.11.4-26.P2.el7.x86_64 需要
---> 软件包 bind-libs-lite.x86_64.32.9.11.4-26.P2.el7 将被 安装
--> 正在检查事务
---> 软件包 bind-license.noarch.32.9.11.4-26.P2.el7 将被 安装
---> 软件包 geoipupdate.x86_64.0.2.5.0-1.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

===========================================================================
 Package            架构       版本                     源            大小
===========================================================================
正在安装:
 bind-utils         x86_64     32:9.11.4-26.P2.el7      c7-media     260 k
为依赖而安装:
 GeoIP              x86_64     1.5.0-14.el7             c7-media     1.5 M
 bind-libs          x86_64     32:9.11.4-26.P2.el7      c7-media     156 k
 bind-libs-lite     x86_64     32:9.11.4-26.P2.el7      c7-media     1.1 M
 bind-license       noarch     32:9.11.4-26.P2.el7      c7-media      90 k
 geoipupdate        x86_64     2.5.0-1.el7              c7-media      35 k

事务概要
===========================================================================
安装  1 软件包 (+5 依赖软件包)

总下载量:3.1 M
安装大小:7.5 M
Downloading packages:
---------------------------------------------------------------------------
总计                                           96 MB/s | 3.1 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 32:bind-license-9.11.4-26.P2.el7.noarch                1/6 
  正在安装    : geoipupdate-2.5.0-1.el7.x86_64                         2/6 
  正在安装    : GeoIP-1.5.0-14.el7.x86_64                              3/6 
  正在安装    : 32:bind-libs-lite-9.11.4-26.P2.el7.x86_64              4/6 
  正在安装    : 32:bind-libs-9.11.4-26.P2.el7.x86_64                   5/6 
  正在安装    : 32:bind-utils-9.11.4-26.P2.el7.x86_64                  6/6 
  验证中      : 32:bind-libs-9.11.4-26.P2.el7.x86_64                   1/6 
  验证中      : GeoIP-1.5.0-14.el7.x86_64                              2/6 
  验证中      : geoipupdate-2.5.0-1.el7.x86_64                         3/6 
  验证中      : 32:bind-license-9.11.4-26.P2.el7.noarch                4/6 
  验证中      : 32:bind-utils-9.11.4-26.P2.el7.x86_64                  5/6 
  验证中      : 32:bind-libs-lite-9.11.4-26.P2.el7.x86_64              6/6 

已安装:
  bind-utils.x86_64 32:9.11.4-26.P2.el7                                    

作为依赖被安装:
  GeoIP.x86_64 0:1.5.0-14.el7                                              
  bind-libs.x86_64 32:9.11.4-26.P2.el7                                     
  bind-libs-lite.x86_64 32:9.11.4-26.P2.el7                                
  bind-license.noarch 32:9.11.4-26.P2.el7                                  
  geoipupdate.x86_64 0:2.5.0-1.el7                                         

完毕!
[root@localhost ~]# nslookup www.google.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	www.google.com
Address: 31.13.112.9
Name:	www.google.com
Address: 2001::1

[root@localhost ~]# 

若能够成功反馈要查询域名的IP地址,则表示域名解析没有问题,否则需要根据实际反馈情况来判断故障原因。例如,若出现"..... no servers could be reached""的信息,则表示不能连接到指定的DNS服务器;若出现"..... can't find xxx.yyy.zzz:NXDOMAIN"的信息,则表示要查询的域名不存在。

此外还有dig 命令也可以用来测试域名解析,相对于nslookup命令,dig可以得到更多的域名信息。dig 的全称是(domain information groper),它是一个用于查询DNS域名服务器的灵活的工具。大多数系统管理员都是利用dig 作为DNS问题的故障诊断工具,因为它具有灵活性好、易用、输出清晰等特点。dig命令最典型的用法就是查询单个主机的信息。

[root@localhost ~]# dig baidu.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20047
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;baidu.com.			IN	A

;; ANSWER SECTION:
baidu.com.		275	IN	A	110.242.68.66
baidu.com.		275	IN	A	39.156.66.10

;; Query time: 56 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 一 6月 10 17:10:06 CST 2024
;; MSG SIZE  rcvd: 70

[root@localhost ~]# 

dig在查询过程中,还可以指定特点的DNS服务器。如果不指定DNS服务器,默认会使用/etclresolve.conf里面的地址作为DNS服务器。

1.2 设置网络地址参数

在 Linux主机中,手动修改网络配置包括两种最基本的方法。

  1. 临时配置:通过命令行直接修改当前正在使用的网络地址,修改后立即可以生效。这种方式操作简单快速、执行效率高,一般在调试网络的过程中使用。但由于所做的修改并没有固定地存放在静态的文件中,因此当重启 network服务或重启主机后将会失效。
  2. 固定配置:通过配置文件来存放固定的各种网络地址,需要重启 network服务或重启主机后才会生效。这种方式操作上相对要复杂一些,但相当于"永久配置",一般在需要为服务器设置固定的网络地址时使用。

1.2.1 使用网络配置命令

1. 修改网卡的地址、状态

ifconfig 命令不仅可以用于查看网卡配置,还可以修改网卡的IP地址、子网掩码,也可以绑定虚拟网络接口、激活或禁用网络接口。

1. 修改网卡的IP地址、子网掩码

需要设置网卡的地址时,命令格式如下:

ifconfig 网络接口名称 IP地址 [netmask 子网掩码]

或者

ifconfig 网络接口名称 IP地址[/子网掩码长度]

通常后一种方式用得更多一些。当不指定子网掩码时,将使用P地址所在分类的默认子网掩码。指定新的IP地址和子网掩码以后,原有的地址将会失效。例如,执行以下操作可以将网卡ens33的IP地址设置为192.168.168.1,子网掩码长度为24。

或者

2. 禁用、激活网络接口

需要临时禁用或者重新激活指定的网络接口时,需要结合"down"和"up"开关选项。网络接口被禁用以后,将无法使用该网络接口与其他主机进行连接。例如,执行以下操作将会禁用网卡ens37。

3. 为网卡绑定虚拟接口

在对服务器网络进行调试的过程中,有时候需要临时在同一个网卡上使用一个新的IP地址,但是又不能覆盖原有IP地址而导致服务程序不可用。这时可以为网卡绑定一个虚拟的网络接口,然后为虚拟接口设置新的IP地址(相当于一块网卡配多个I地址)

例如,执行以下操作可以为网卡 ens33添加一个虚拟接口 ens33:0,并将这个虚拟接口的IP地址设置为172.17.17.17。虚拟接口的IP地址和网卡原有的IP地址都可以正常使用。

可以根据需要添加更多的虚拟接口,如"ens33:1"ens33:2"等。

2. 添加、删除静态路由记录

route命令不仅可以用于查看路由表信息,还可用来添加、删除静态的路由表条目,其中也包括设置默认网关地址(默认网关记录是一条特殊的静态路由条目)。

1. 添加、删除到指定网段的路由记录

通过"route add"操作可以添加路由记录,结合"-net"选项指定目标网段的地址,结合"gw"选项指定下一跳路由器的I地址。例如,若要使本机访问另一个网段192.168.3.0/24的数据包都发送给192.168.4.254,可以执行以下操作。需要注意的是,默认网关的IP地址应该与本机其中一个接口的IP地址在同一个网段内。

通过""route de"操作可以删除路由记录,只要结合"-net"选项指定对应路由记录中目标网段的地址即可。

例如,执行以下操作可以删除前面添加到192.168.3.0/24网段的静态路由条目。

2. 添加、删除默认网关记录

添加、删除默认网关记录时,与添加、删除静态路由记录的命令格式类似,但指定目标网段时只需简单地使用"default"表示即可,无须再使用"-net"选项指明网段地址。例如,执行以下操作将先删除已有的到192.168.4.1的默认网关记录,再添加新的192.168.4.254的默认网关记录。

需要注意的是,在同一个主机的路由表中只应有一条默认网关记录。若同时存在多条默认网关记录,则可能导致该主机的网络连接出现故障。

3. 修改主机的名称

hostname命令不仅可以用于显示当前主机的名称,还可以修改当前主机的名称。在新登录的用户会话(Shell环境)中,命令提示符中的主机名部分也会出现相应的变化。例如,执行"hostname www.bdqn.com"命令可以将主机名改为"www.bdqn.com",具体操作如下:

1.2.2 修改网络配置文件

当需要为Linux服务器设置固定的网络地址时,若仍用ifconfig等网络命令来进行设置,将会大大降低服务器运行的可靠性。若要使Linux主机在重启系统以后仍然能够使用相同的网络配置,那么直接修改配置文件是最好的方法。

1. 网络接口配置文件

网络接口的配置文件默认位于目录letclsysconfig/network-scripts/中,文件名格式为"ifcfg-XXX"其中"XXX"是网络接口的名称。例如,网卡 ens33的配置文件是"ifcfg- ens33",回环接口 lo 的配置文件是"ifcfg-lo"。

在网卡的配置文件 ifcfg- ens33中,可以看到设置静态IP地址的部分内容如下:

上述各配置项的含义及作用如下。

  1. TYPE:设置网卡类型,"Ethernet"表示以太网
  2. BOOTPROTO:设置网络接口的配置方式,值为"static"时表示使用静态指定的IP地址,为"dhcp"时表示通过DHCP的方式动态获取地址。
  3. DEVICE:设置网络接口的名称。
  4. ONBOOT:设置网络接口是否在 Linux操作系统启动时激活。
  5. IPADDR:设置网络接口的IP地址。
  6. NETMASK:设置网络接口的子网掩码。
  7. GATEWAY:设置网络接口的默认网关地址。

2. 启用、禁用网络接口配置

在 CentOS 7操作系统中,当修改了网络接口的配置文件以后,若要使新的配置生效,可以重新启动network服务或者重启主机,具体操作如下。默认情况下,重启network服务会先关闭所有的网络接口,再根据配置文件重新启用所有的网络接口。

如果只是禁用、启用某一个网络接口(而不是所有接口),可分别使用两个接口控制脚本ifdown、ifup。例如,执行以下操作将会先关闭ens33 网卡,然后根据配置文件启用ens33网卡。

3. 主机名称配置文件

若要修改Linux操作系统的主机名,可以修改配置文件letc/hostname。将要设置的主机名写入此文件内,如果文件内输入了多行内容,此时系统仅识别第一行的内容为系统主机名。例如,执行以下操作可以将主机名由默认的localhost.localdomain改为www.bdqn.com

通过修改letc/hostname来更改的主机名,如果要让其生效,需重启Linux系统。

此外,还可以通过hostnamectl命令来修改主机名,命令操作如下。

4. 域名解析配置文件

1. 指定为本机提供DNS解析的服务器地址

/etc/resolv.conf文件中记录了本机默认使用的DNS服务器的地址信息,对该文件所做的修改将会立刻生效。Linux操作系统中最多可以指定3个(第3个以后的将被忽略)不同的 DNS服务器地址,优先使用第一个DNS服务器。例如,执行以下操作可以指定默认使用的两个DNS服务器地址分别位于202.106.0.20和 202.106.148.1。

resolv.conf文件中的"search localdomain"行用来设置默认的搜索域(域名扩展名)。例如,当访问主机""localhost"时,就相当于访问"localhost.localdomain"。

但是,在 CentOS7环境下,如果按照上面方式配置,过一段时间会被系统重新覆盖或者清除,此时需要修改letc/NetworkManager/NetworkManager.conf 文件,在 main部分添加"dns=none"配置项。

之后需要重启NetworkManager服务。确保l/etc/resolv.conf 内有配置信息,此时就可以正常解析域名了。

2. 本机主机映射文件

/etc/hosts文件中记录着一份主机名与IP地址的映射关系表,一般用来保存经常需要访问的主机的信息。当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果找不到再去向DNS服务器查询。

例如,若在letc/hosts 文件中添加"119.75.218.70www.baidu.com"的映射记求,则当访问网站www.baidu.com 时,将会直接向IP地址119.75.218.70发送Web请求,省略了向DNS服务器解析P地址的过程。

对于经常访问的一些网站,可以通过在letc/hosts文件添加正确的映射记录,减少DNS查询过程,从而提高上网速度。当然,若添加了错误的映射记录,则可能导致网站访问出现异常。另外,因为 hosts文件只保存在本地,所以其中的映射记录也只适用于当前主机,而无法作用于整个网络。

相关推荐
车载诊断技术1 小时前
电子电气架构 --- 什么是EPS?
网络·人工智能·安全·架构·汽车·需求分析
KevinRay_1 小时前
Python超能力:高级技巧让你的代码飞起来
网络·人工智能·python·lambda表达式·列表推导式·python高级技巧
2301_819287122 小时前
ce第六次作业
linux·运维·服务器·网络
CIb0la2 小时前
GitLab 停止为中国区用户提供 GitLab.com 账号服务
运维·网络·程序人生
武汉联从信息2 小时前
如何使用linux日志管理工具来管理oracle osb服务器日志文件?
linux·运维·服务器
天天进步20152 小时前
STUN服务器实现NAT穿透
运维·服务器
月如琉璃2 小时前
1.gitlab 服务器搭建流程
服务器·gitlab
Black_mario2 小时前
链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 应用场景
网络·人工智能·web3
Kika写代码2 小时前
【微信小程序】页面跳转基础 | 我的咖啡店-综合实训
服务器·微信小程序·小程序
Aileen_0v03 小时前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper