目录
一:查看及测试网络
1.1:查看网络配置
1.1.1:查看网络接口地址
主机的网络接口卡(网卡)通常称为网络接口。在
Linux
操作系统中,使用
ifconfig
命令可以查看网络接口的地址配置信息(Interface Configuration
)
(
1
)查看活动的网络接口设备
若采用
mini
版
CentOS 7
安装的系统,默认是没有
ifconfig
命令的,需要先通过
yum 方式安装 net-tools
软件包,才有
ifconfig
命令。在不带任何选项和参数执行
ifconfig 命令时,将显示当前主机中已启用(活动)的网络接口信息。例如,直接执行 ifconfig 命令后可以看到 ens33、lo 这两个网络接口的信息,具体操作如下:

在上述输出结果中,
ens33
对应为第一块物理网卡,
lo
对应为虚拟的回环接口。
- ens33:第一块以太网卡的名称。“ens33”中的“en”是“EtherNet”的缩写,表示网卡类型为以太网,“s”表示热插拔插槽上的设备(hot-plug Slot),数字“33”表示插槽编号。由此可以得知,从 CentOS 7 开始,使用基于固件、硬件拓扑和设备位置信息分配的一致网络设备命名(Consistent Network Naming)。因为一致的网络设备名是基于系统硬件的,所以在不同的操作系统上,网络接口名称可能不同。
- lo:“回环”网络接口,“lo”是“loopback”的缩写,它不代表真正的网络接口,而是一个虚拟的网络接口,其 IP 地址默认是“127.0.0.1”。回环地址通常仅用于对本机的网络测试。
(
2
)查看指定的网络接口信息
当只需要查看其中某一个网络接口的信息时,可以使用网络接口的名称作为
ifconfig
命令的参数(不论该网络接口是否处于激活状态)。
从上述命令显示的结果中,可以获知
ens33
网卡的一些基本信息,如下所述:
- inet:表示网络接口的 IP 地址,如“192.168.4.11”。
- netmask:表示网络接口的子网掩码,如“255.255.255.0”。
- broadcast:表示网络接口所在网络的广播地址,如“192.168.4.255”。
- ether:表示网络接口的物理地址(MAC 地址),如“00:0c:29:3a:81:cc”。网络接口的物理地址通常不能更改,是网卡在生产时确定的全球唯一的硬件地址。
除此以外,还能够通过
“TX”
和
“RX”
等信息了解通过该网络接口发送和接收的数据包个
数、流量等更多属性
1.1.2:查看主机名称
使用
hostname
命令可以查看当前主机的主机名,不用添加任何选项或参数
1.1.3:查看路由表条目
直接执行
“route”
命令可以查看当前主机中的路由表信息,在输出结果中,Destination
列对应目标网段的地址,
Gateway
列对应下一跳路由器的地址,
Iface
列对应发送数据的网络接口
当目标网段为
“default”
时,表示此行是默认网关记录;当下一跳为
“gateway”
时,表示目标网段是与本机直接相连的。但是,直接执行“route”
命令无法直接看出默认网关地址。
若结合
“-n”
选项使用,可以将路由记录中的地址显示为数字形式,这可以跳过解析主机名的过程,在路由表条目较多的情况下能够加快执行速度
1.1.4:查看网络连接情况
通过
netstat
命令可以查看当前操作系统的网络连接状态、路由表、接口统计等信息,它是了解网络状态及排除网络服务故障的有效工具。以下是 netstat
命令常用的几个选项。
- -a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
- -n:以数字的形式显示相关的主机地址、端口等信息。
- -r:显示路由表信息。
- -l:显示处于监听(Listening)状态的网络连接及端口信息。
- -t:查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息。
- -u:显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息。
- -p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)
通常使用
“-anpt”
组合选项,以数字形式显示当前系统中所有的
TCP
连接信息,同时显示对应的进程信息。结合管道命令使用“grep”
命令,还可以在结果中过滤出所需要的特定记录。例如,执行以下操作可以查看本机中是否有监听“TCP 80”
端口(即标准
Web
服务)的服务程序,输出信息中包括 PID
号和进程名称
除了
netstat
,
ss
命令也可以
查看网络连接情况,它
是
Socket Statistics
的缩写,主要用于获取 socket
统计信息,它可以显示和
netstat
命令类似的输出内容。但
ss
的优势在于它能够显示更多更详细的有关 TCP
和连接状态的信息,而且比
netstat
更快速更高效。要想使用 ss
命令,首先确保
iproute
程序包已被安装,可以通过
yum 方式进行安装ss 命令的输出结果,可以提供 TCP 和 UDP 的 socket 信息,以及各种服务建立的持连结,熟悉这个命令有助于更好的发现与解决系统性能问题。
以下是
ss
命令常用的几个选项。
- -h:--help 通过该选项获取更多的使用帮助。
- -V:--version 显示软件的版本号。
- -t:--tcp 显示 TCP 协议的 sockets。
- -u:--udp 显示 UDP 协议的 sockets。
- -n:--numeric 不解析服务的名称,如 "22" 端口不会显示成 "ssh"。
- -l:--listening 只显示处于监听状态的端口。
- -p:--processes 显示监听端口的进程。
- -a: --all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接。
- -r: --resolve 把 IP 解释为域名,把端口号解释为协议名称。
1.2:测试网络连接
1.2.1:测试网络连通性
使用
ping
命令可以向目标主机持续地发送测试数据包,并显示反馈结果,直到按
Ctrl +C 组合键后中止测试,并显示最终统计结果。
执行
ping
测试命令时,若不能获得从目标主机发回的反馈数据包,则表示在本机到目标主机之间存在网络连通性故障。例如,若看到“Destination Host Unreachable”
的反馈信息,则表示目的主机不可达,可能目标地址不存在或者主机已经关闭;若看到“Network is unreachable”的反馈信息,则表示没有可用的路由记录(如默认网关),无法达到目标主机所在的网络。
当网络中存在影响通信过程稳定性的因素(如网卡故障、病毒或网络攻击等)时,使用 ping 命令测试可能会频繁看到
“Request timeout”
的反馈结果,表示与目标主机间的连接超时(数据包响应缓慢或丢失)。除此以外,当目标主机有严格的防火墙限制时,也可能收到“Request timeout”的反馈结果。
1.2.2:跟踪数据包的路由途径
若服务器上没有
traceroute
命令,可通过
yum
方式安装
traceroute
软件包。
traceroute 命令可以用于测试从当前主机到目的主机之间经过了哪些网络结点,并显示各中间结点的连接状态(响应时间)。对于无法响应的结点,连接状态将显示为“*”
。
traceroute
命令能够比
ping
命令更加准确地定位网络连接的故障点(中断点),因此执行速度会比 ping
命令稍慢。在网络测试与排错过程中,通常会先使用
ping
命令测试与目的主机的网络连接,如果发现网络连接有故障,再使用 traceroute
命令跟踪查看是在哪个中间结点存在故障。
1.2.3:测试DNS域名解析
当域名解析出现异常时,将无法使用域名的形式访问网络中的
Web
站点、电子邮件系统等服务。nslookup
命令是用来测试域名解析的专用工具,使用时只要指定要解析的目标域名作为参数即可。若在执行过程中提示无法找到nslookup
命令,可通过
yum
安装
bind-utils程序包的方式来解决。
若能够成功反馈要查询域名的
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
命令最典型的用法就是查询单个主机的信息。
二:设置网络地址参数
2.1:使用网络配置命令
2.1.1:修改网卡的地址、状态
ifconfig
命令不仅可以用于查看网卡配置,还可以修改网卡的
IP 地址、子网掩码,也可以绑定虚拟网络接口、激活或禁用网络接口。
(
1
)修改网卡的
IP
地址、子网掩码
需要设置网卡的地址时,命令格式如下:
ifconfig 网络接口名称 IP 地址 [ netmask 子网掩码 ]ifconfig 网络接口名称 IP 地址 [/ 子网掩码长度 ]
通常后一种方式用得更多一些。当不指定子网掩码时,将使用
IP
地址所在分类的默认子网掩码。指定新的 IP
地址和子网掩码以后,原有的地址将会失效。
(
2
)禁用、激活网络接口
需要临时禁用或者重新激活指定的网络接口时,需要结合
“down”
和
“up”
开关选项。网络接口被禁用以后,将无法使用该网络接口与其他主机进行连接。
(
3
)为网卡绑定虚拟接口
例如,执行以下操作可以为网卡
ens33
添加一个虚拟接口
ens33:0
,并将这个虚拟接口的 IP
地址设置为
172.17.17.17
。虚拟接口的
IP
地址和网卡原有的
IP
地址都可以正常使用。
[root@localhost ~]# ifconfig ens33:0 172.17.17.17[root@localhost ~]# ifconfigens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.4.11 netmask 255.255.255.0 broadcast 192.168.12.255inet6 fe80::9106:d38b:670d:1a89 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:3a:81:cc txqueuelen 1000 (Ethernet)RX packets 8791 bytes 811759 (792.7 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 4459 bytes 584948 (571.2 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.17.17.17 netmask 255.255.0.0 broadcast 172.17.255.255ether 00:0c:29:3a:81:cc txqueuelen 1000 (Ethernet)
2.1.2:添加、删除静态路由记录
route
命令不仅可以用于查看路由表信息,还可用来添加、删除静态的路由表条目,其中也包括设置默认网关地址(默认网关记录是一条特殊的静态路由条目)。
(
1
)添加、删除到指定网段的路由记录
通过
“route add”
操作可以添加路由记录,结合
“-net”
选项指定目标网段的地址,结合
“gw”选项指定下一跳路由器的IP
地址。例如,若要使本机访问另一个网段
192.168.3.0/24
的数据包都发送给 192.168.4.254
,可以执行以下操作。需要注意的是,默认网关的
IP
地址应该与本机其中一个接口的 IP
地址在同一个网段内。
route add -net 192.168.3.0/24 gw 192.168.4.254 // 添加静态路由
通过
“route del”
操作可以删除路由记录,只要结合
“-net”
选项指定对应路由记录中目标网段的地址即可
(
2
)添加、删除默认网关记录
添加、删除默认网关记录时,与添加、删除静态路由记录的命令格式类似,但指定目标网段时只需简单地使用“default”
表示即可,无须再使用
“-net”
选项指明网段地址。例如,执行以下操作将先删除已有的到 192.168.4.1
的默认网关记录,再添加新的
192.168.4.254
的默认网关记录。
[root@www ~]# route -n | grep "192.168.4.1" //查看原路由表中的默认网关记录0.0.0.0 192.168.4.1 0.0.0.0 UG 100 0 0 ens33[root@www ~]# route del default gw 192.168.4.1 // 删除默认网关记录 192.168.4.1[root@www ~]# route -n | grep "192.168.4.1" //确认删除结果 ( 检索时无输出 )[root@www ~]# route add default gw 192.168.4.254 // 添加新的默认网关记录 192.168.4.254[root@www ~]# route -n | grep "192.168.4.254" // 确认新的默认网关记录0.0.0.0 192.168.4.254 0.0.0.0 UG 100
2.1.3:修改主机的名称
hostname
命令不仅可以用于显示当前主机的名称,还可以修改当前主机的名称。在新登录的用户会话(Shell
环境)中,命令提示符中的主机名部分也会出现相应的变化。例如,执行“hostname www.bdqn.com”
命令可以将主机名改为
“www.bdqn.com”
2.2:修改网络配置文件
2.2.1:网络接口配置文件
网络接口的配置文件默认位于目录
/etc/sysconfig/network-scripts/
中,文件名格式为“ifcfg-XXX”,其中
“XXX”
是网络接口的名称。例如,网卡
ens33
的配置文件是
“ifcfg- ens33”
,回环接口 lo
的配置文件是
“ifcfg-lo”
。
在网卡的配置文件
ifcfg- ens33
中,可以看到设置静态
IP
地址的部分内容如下:
TYPE=EthernetBOOTPROTO=staticDEVICE=ens33ONBOOT=yesIPADDR=192.168.4.11NETMASK=255.255.255.0GATEWAY=192.168.4.1
上述各配置项的含义及作用如下。
- TYPE:设置网卡类型,“Ethernet”表示以太网。
- BOOTPROTO:设置网络接口的配置方式,值为“static”时表示使用静态指定的 IP地址,为“dhcp”时表示通过 DHCP 的方式动态获取地址。
- DEVICE:设置网络接口的名称。
- ONBOOT:设置网络接口是否在 Linux 操作系统启动时激活。
- IPADDR:设置网络接口的 IP 地址。
- NETMASK:设置网络接口的子网掩码。
- GATEWAY:设置网络接口的默认网关地址
2.2.2:启用、禁用网络接口配置
在
CentOS 7
操作系统中,当修改了网络接口的配置文件以后,若要使新的配置生效,可以重新启动 network
服务或者重启主机,具体操作如下。默认情况下,重启
network
服务会先关闭所有的网络接口,再根据配置文件重新启用所有的网络接口。
如果只是禁用、启用某一个网络接口(而不是所有接口),可分别使用两个接口控制脚本ifdown
、ifup
2.2.3:主机名称配置文件
若要修改
Linux
操作系统的主机名,可以修改配置文件
/etc/hostname
。将要设置的主机名写入此文件内,如果文件内输入了多行内容,此时系统仅识别第一行的内容为系统主机名。
通过修改
/etc/hostname
来更改的主机名,如果要让其生效,需重启
Linux
系统。 此外,还可以通过 hostnamectl
命令来修改主机名,命令操作如下。
[root@localhost ~]# hostnamectl set-hostname www.wind.com //设置新的主机名[root@localhost ~]# bash //启用新的 Shell 会话 , 查看变化[root@www ~]# hostnamewww.wind.com
2.2.4:域名解析配置文件
(
1
)指定为本机提供
DNS
解析的服务器地址
/etc/resolv.conf
文件中记录了本机默认使用的
DNS
服务器的地址信息,对该文件所做的修改将会立刻生效。Linux
操作系统中最多可以指定
3
个(第
3
个以后的将被忽略)不同的 DNS
服务器地址,优先使用第一个
DNS
服务器。
resolv.conf
文件中的
“search localdomain”
行用来设置默认的搜索域(域名扩展名)。
在
CentOS 7 环境下,如果按照上面方式配置,过一段时间会被系统重新覆盖或者清除,此时需要修改/etc/NetworkManager/NetworkManager.conf 文件,在 main 部分添加“dns=none”配置项。
之后需要重启
NetworkManager
服务。确保
/etc/resolv.conf
内有配置信息,此时就可以正常解析域名了。
(
2
)本地主机映射文件
/etc/hosts
文件中记录着一份主机名与
IP
地址的映射关系表,一般用来保存经常需要访问的主机的信息。当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果找不到再去向DNS
服务器查询。
对于经常访问的一些网站,可以通过在
/etc/hosts
文件添加正确的映射记录,减少
DNS 查询过程,从而提高上网速度。当然,若添加了错误的映射记录,则可能导致网站访问出现异常。另外,因为 hosts
文件只保存在本地,所以其中的映射记录也只适用于当前主机,而无法作用于整个网络。