Linux如何查看映射关系?

在Linux系统中,“映射”是一个广义概念,涵盖网络端口映射、进程与文件的映射、内存映射、网络连接映射等多个场景,不同场景下查看映射的方法各有侧重,本文将详细介绍常见映射类型的查看方式,包括命令工具、输出解析及实际示例。

linux如何查看映射

网络端口映射查看

网络端口映射通常指通过NAT(网络地址转换)将内网服务端口映射到公网IP或本地端口,常见于服务器端口转发、容器端口暴露等场景,查看端口映射主要依赖iptablesfirewalldss等工具。

使用iptables查看NAT规则

iptables是Linux内核的防火墙工具,其nat表记录了端口转发规则,通过以下命令查看:

sudo iptables -t nat -L -n -v  
  • -t nat:指定操作nat表;
  • -L:列出所有规则链;
  • -n:以数字形式显示IP和端口(避免域名解析延迟);
  • -v:显示详细信息(如数据包数量、字节大小)。

输出示例中,DNAT(目标地址转换)和SNAT(源地址转换)规则即为端口映射的核心,

DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 to:192.168.1.100:80  

表示将本机的8080端口映射到内网IP 168.1.100 的80端口。

使用firewalld查看端口转发

若系统使用firewalld(如CentOS/RHEL 7+),可通过以下命令查看已配置的端口转发:

sudo firewall-cmd --list-forward-ports --permanent  
  • --permanent:查看永久配置(临时配置需去掉该参数);
  • 输出示例:port=8080:proto=toc:toport=80:toaddr=192.168.1.100,含义同iptables的DNAT规则。

使用ssnetstat查看监听端口

映射生效后,目标端口需处于监听状态,通过ss(推荐,比netstat更高效)查看:

ss -tuln | grep 8080  
  • -t:TCP端口,-u:UDP端口,-l:仅显示监听端口,-n:数字形式;
  • 输出示例:LISTEN 0 128 *:8080 *:*,表示8080端口正在监听所有IP地址。

进程与文件映射查看

进程与文件的映射指进程打开的文件、网络连接、设备文件等资源,可通过/proc文件系统或lsof工具查看。

通过/proc文件系统查看进程文件描述符

Linux中,/proc/PID/fd目录存储了进程ID为PID的文件描述符(每个描述符是一个符号链接,指向实际文件):

linux如何查看映射

ls -l /proc/$(pgrep nginx)/fd  
  • pgrep nginx:获取nginx进程的PID;
  • 输出示例:lrwx------ 1 root root 64 Dec 1 10:00 0 -> /dev/null(标准输入)、lrwx------ 1 root root 64 Dec 1 10:01 1 -> /var/log/nginx/access.log(标准输出),分别对应进程的输入输出文件。

使用lsof查看进程打开的文件

lsof(list open files)可查看进程打开的文件、网络连接等:

lsof -p $(pgrep nginx)  # 查看nginx进程打开的文件  
lsof -i :80             # 查看占用80端口的进程  
  • -p:指定进程ID;-i:显示网络连接;
  • 输出示例:nginx 1234 root 6u IPv4 12345 0t0 TCP *:http (LISTEN),表示进程1234(nginx)正在监听80端口(http)。

内存映射查看

内存映射指进程将文件或设备映射到虚拟内存空间,可通过/proc/PID/mapspmap工具查看。

通过/proc/PID/maps查看内存映射

/proc/PID/maps记录了进程的虚拟内存地址映射关系,包括权限、偏移量、文件路径等:

cat /proc/$(pgrep nginx)/maps  

输出格式为:虚拟地址范围 权限 偏移量 设备 inode 文件路径

7f8a5a1b2000-7f8a5a1b3000 r-xp 00000000 08:02 123456 /usr/sbin/nginx  

表示进程将/usr/sbin/nginx文件的0x7f8a5a1b2000-0x7f8a5a1b3000地址范围映射为可执行(r-x)。

使用pmap查看详细内存映射

pmap(process memory map)提供更易读的内存映射信息:

pmap -d $(pgrep nginx)  
  • -d:显示设备映射信息;
  • 输出包含进程的代码段、数据段、堆、栈、共享库等映射详情,
    7f8a5a1b2000     64K r-x-- nginx  
    7f8a5a1b3000     16K r---- nginx  
    7f8a5a1b4000      8K rw--- nginx  

网络连接映射查看

网络连接映射指本地IP与端口、远程IP与端口的对应关系,可通过ssnetstatlsof查看。

使用ss查看TCP/UDP连接

ssnetstat的替代工具,性能更优,常用参数:

linux如何查看映射

ss -tulnp  # 查看所有监听端口及进程  
ss -t  # 仅查看TCP连接  
ss -4  # 仅查看IPv4连接  
  • -n:数字形式,-p:显示进程ID和名称;
  • 输出示例:LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3)),表示sshd进程监听所有IP的22端口。

使用netstat查看连接状态(传统工具)

若系统未安装ss,可用netstat

netstat -tulnp  

输出格式与ss类似,但netstat已逐渐被废弃。

工具对比与适用场景

映射类型 常用工具 核心命令示例 适用场景
网络端口映射 iptables, firewalld, ss iptables -t nat -L, firewalld --list-forward-ports 查看NAT端口转发规则、容器端口暴露
进程文件映射 /proc, lsof ls /proc/PID/fd, lsof -p PID 查看进程打开的文件、日志、网络连接
内存映射 /proc/PID/maps, pmap cat /proc/PID/maps, pmap -d PID 分析进程内存占用、共享库加载情况
网络连接映射 ss, netstat, lsof ss -tulnp, netstat -tulnp 查看端口占用、网络连接状态

相关问答FAQs

Q1: 如何查看某个进程(如Nginx)打开了哪些文件和网络连接?
A1: 可通过lsof工具结合进程ID查看,具体命令为:

lsof -p $(pgrep nginx)  # 查看nginx进程打开的所有文件  
lsof -i -p $(pgrep nginx)  # 仅查看nginx进程的网络连接  

若需查看特定端口(如80端口)的占用进程,使用:

lsof -i :80  

Q2: 如何查看Linux中端口转发的当前配置(如iptables的NAT规则)?
A2: 使用iptables查看nat表的规则,命令为:

sudo iptables -t nat -L -n -v  

若需查看具体链(如PREROUTING、POSTROUTING)的规则,可添加-t nat -S或指定链名称(如-t nat -L PREROUTING),对于firewalld用户,使用:

sudo firewall-cmd --list-forward-ports --permanent  

临时配置可通过去掉--permanent参数查看。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/38067.html

(0)
酷番叔酷番叔
上一篇 2025年10月8日 02:38
下一篇 2025年10月8日 02:56

相关推荐

  • 修改前必须知道哪些要点?

    在Linux系统中修改MAC地址(Media Access Control Address)是网络管理中的常见操作,通常用于隐私保护、网络故障排查或绕过MAC地址绑定限制,以下详细指南涵盖临时修改和永久修改两种方式,请确保您拥有合法授权(如修改自有设备),避免违反网络政策,合法性:仅在授权设备上操作,未经授权修……

    2025年7月23日
    12300
  • 如何高效同时操作三个终端窗口?

    在Linux系统中,终端是用户与系统交互的核心工具,无论是系统管理、软件开发还是日常任务,同时打开多个终端窗口或标签页能显著提升效率,例如监控日志、并行执行命令或管理远程服务器,以下是多种经过验证的方法,适用于不同桌面环境和需求:图形界面(GUI)的快捷操作适用于主流桌面环境(GNOME、KDE、XFCE等……

    2025年7月26日
    13100
  • Linux中如何获取文件夹?具体操作方法有哪些?

    在Linux系统中,“获取文件夹”通常涉及多种操作场景,如查看文件夹基本信息、列出内容、获取权限属性、统计大小,或从远程服务器下载文件夹等,本文将详细讲解不同场景下的具体命令和用法,帮助用户高效完成文件夹信息的获取与管理,本地文件夹信息获取查看文件夹基本属性要获取文件夹本身的元数据(如权限、所有者、大小、修改时……

    2025年9月27日
    8300
  • Linux awk重排字段技巧

    使用 awk 重排字段awk 默认以空格或制表符为分隔符,通过 $1, $2, … 表示字段($0 为整行),基本语法command | awk '{print $3, $1, $2}' # 输出第3列、第1列、第2列示例场景调整列顺序将 ls -l 输出的权限列(第1列)与文件名列(第9列……

    2025年6月16日
    12500
  • Linux设备驱动操作如何掌握?关键步骤与实践指南

    Linux设备驱动是内核与硬件设备之间的核心桥梁,负责抽象硬件细节,为上层应用提供统一的设备访问接口,驱动开发需遵循内核编程规范,涉及模块机制、设备模型、中断处理、内存管理等关键技术,其操作流程可拆解为环境搭建、框架设计、功能实现、资源管理及调试优化等步骤,环境搭建与基础准备开发Linux设备驱动需配置内核开发……

    2025年10月4日
    9500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信