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系统中,文件搜索是日常管理的关键操作,以下是专业、高效且安全的搜索方法,涵盖基础到进阶场景,所有命令均通过实际环境验证(基于主流Linux发行版):按文件名/属性搜索:find 命令(最强大)适用场景:精准定位文件位置、按类型/大小/时间过滤# 常用示例:find /home -name &quot……

    2025年7月31日
    17600
  • Linux如何退回主系统?

    Linux作为广泛使用的操作系统,常与虚拟机、双系统、远程连接等场景结合使用,用户在不同环境下可能需要“退回主系统”——即从当前Linux环境返回到默认的物理机操作系统、桌面环境或本地终端,本文将分场景详细说明具体操作方法,涵盖虚拟机、双系统、SSH连接及本地终端切换等常见场景,帮助用户高效、安全地完成系统切换……

    2025年9月9日
    15500
  • Win7系统下如何安装Linux?详细操作步骤解析

    在Windows 7系统下安装Linux双系统,需提前做好准备工作,谨慎操作分区步骤,以下是详细流程:准备工作选择Linux发行版:推荐Ubuntu(LTS版本)、Linux Mint等对新手友好的发行版,确保与硬件兼容性良好,备份数据:安装过程可能涉及分区调整,务必提前备份Win7重要数据至移动硬盘或云端,准……

    2025年9月27日
    15200
  • 你的日志监控真的发挥价值了吗?

    Linux日志是系统运行的”黑匣子”,记录内核事件、服务状态、用户行为及安全审计信息,有效的日志监控能实现:故障诊断:快速定位服务崩溃、硬件错误根源安全防御:实时检测暴力破解、异常登录、恶意进程性能优化:分析资源瓶颈(如/var/log/syslog中的OOM记录)合规审计:满足GDPR/HIPAA等法规的数据……

    2025年7月26日
    13800
  • 如何刻录光盘安装linux

    刻录软件,如 Nero,将 Linux 镜像文件载入,选择刻录到光盘,设置

    2025年8月18日
    14900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信