在 CentOS 系统管理中,准确、高效地查看和诊断网络信息是一项至关重要的基础技能,无论是排查网络故障、配置服务,还是进行安全审计,都离不开对网络状态的深刻理解,本文将系统性地介绍在 CentOS 环境下查看各类网络信息的常用命令和方法,从基础的 IP 地址配置到复杂的网络连接状态,帮助您全面掌握网络诊断的核心工具。
查看网络接口与 IP 地址
这是最基础也是最频繁的网络操作,我们需要知道系统有哪些网络接口,它们的 MAC 地址是什么,以及分配了哪些 IP 地址。
使用 ip
命令(推荐)
ip
命令是 iproute2
软件包的一部分,是现代 Linux 发行版中用于网络配置和状态查询的首选工具,功能强大且输出信息清晰。
ip addr show # 或者使用简写 ip a
该命令的输出通常会包含以下关键信息:
- 1: lo: 回环接口,用于本机内部通信,IP 地址通常为 127.0.0.1。
- 2: eth0: 以太网接口(名称可能不同,如 enp0s3, ens33 等)。
link/ether 00:1a:2b:3c:4d:5e
: 这是网卡的 MAC 地址,是全球唯一的硬件标识符。inet 192.168.1.100/24
: 这是分配给该接口的 IPv4 地址以及子网掩码(/24 表示 255.255.255.0)。state UP
: 表示该接口的物理链路是激活的。inet6 fe80::...
: 这是链路本地 IPv6 地址。
使用 ifconfig
命令(传统方法)
ifconfig
来自于 net-tools
软件包,是一个非常经典的工具,但在较新的 CentOS 版本中默认可能未安装。
# 如果未安装,需要先安装 sudo yum install net-tools # 查看信息 ifconfig
ifconfig
的输出相对简洁,但提供的信息不如 ip
命令全面(它不直接显示多路由表信息)。
检查路由表
路由表决定了数据包从本机发往目标地址的路径,查看路由表是排查网络连通性问题的关键步骤。
使用 ip route
命令(推荐)
ip route show # 或者简写 ip r
输出示例:
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
: 这条是默认路由,所有发往未知网络(即不匹配其他特定路由)的数据包,都会被发送到网关地址 168.1.1
。: 这是本地网络的路由,发往 168.1.0/24
网段的数据包,会直接通过eth0
接口发送。
使用 route -n
命令(传统方法)
-n
参数的作用是以数字形式显示 IP 地址,避免 DNS 查询,加快显示速度。
route -n
监控网络连接与端口
了解系统当前有哪些网络连接、哪些服务在监听端口,对于系统安全和故障排查至关重要。
使用 ss
命令(推荐)
ss
是 netstat
的现代替代品,它更快速、更高效,能够从内核直接获取信息。
常用组合 ss -tulnp
:
-t
: 显示 TCP 协议的连接。-u
: 显示 UDP 协议的连接。-l
: 只显示处于监听状态的套接字。-n
: 以数字形式显示地址和端口。-p
: 显示使用该套接字的进程信息。
ss -tulnp
输出示例:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1104,fd=3))
LISTEN 0 80 [::]:22 [::]:* users:(("sshd",pid=1104,fd=4))
从上例可以看出,sshd
进程(PID 为 1104)正在监听 TCP 的 22 端口(SSH 服务)。
使用 netstat
命令(传统方法)
netstat
是一个非常熟悉的工具,功能与 ss
类似,但性能稍差。
netstat -tulnp
DNS 解析配置
DNS 负责将域名(如 www.google.com)解析为 IP 地址。
查看 /etc/resolv.conf
文件
该文件是客户端 DNS 配置的核心。
cat /etc/resolv.conf
输出示例:
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 114.114.114.114
nameserver
: 指定了 DNS 服务器的地址,系统会按顺序依次尝试查询。
使用 dig
或 nslookup
测试解析
dig
功能更强大,输出信息更详细;nslookup
则更简单直观。
# 使用 dig 查询 dig www.baidu.com # 使用 nslookup 查询 nslookup www.baidu.com
主机名与本地解析
查看主机名
hostname
查看 /etc/hosts
文件
该文件用于本地域名解析,优先级高于 DNS,可以在此文件中添加自定义的域名与 IP 映射。
cat /etc/hosts
为了方便记忆和选择,下表小编总结了现代命令与传统命令的对应关系。
功能描述 | 现代命令 (推荐) | 传统命令 |
---|---|---|
查看IP地址和接口 | ip addr / ip a | ifconfig |
查看路由表 | ip route / ip r | route -n |
查看网络连接/端口 | ss -tulnp | netstat -tulnp |
相关问答 (FAQs)
为什么我在新安装的 CentOS 8/9 上输入 ifconfig
命令会提示“command not found”?
解答: 这是因为从 CentOS 7 开始,系统默认使用 iproute2
工具集(包含 ip
, ss
等命令)来替代老旧的 net-tools
工具集(包含 ifconfig
, netstat
, route
等命令)。net-tools
已被官方视为过时,因此默认不再安装,如果您仍然习惯使用 ifconfig
,可以通过以下命令手动安装 net-tools
包:sudo yum install net-tools
我们强烈建议您尽快熟悉并使用 ip
和 ss
命令,因为它们是未来的标准,功能也更加强大。
我如何快速检查服务器的 80 端口(Web 服务)是否正在被监听?
解答: 您可以使用 ss
或 netstat
命令,并结合 grep
过滤工具来快速实现,最推荐的命令是:sudo ss -lntp | grep ':80 '
这个命令的含义是:
sudo
: 因为-p
选项需要查看进程信息,可能需要 root 权限。ss -lntp
: 只显示监听状态的(-l
)TCP(-t
)连接,以数字形式(-n
)显示并显示进程(-p
)。| grep ':80 '
: 将ss
的输出通过管道传递给grep
,只过滤出包含80
的行,注意80
后面有一个空格,可以避免匹配到 8080 等端口。
如果命令有输出,就表示有进程正在监听 80 端口,输出中会包含进程名和 PID,如果没有任何输出,则说明 80 端口当前没有被监听。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复