• 使用 netstat 查看你的 Linux 服务器网络连接

使用 netstat 查看你的 Linux 服务器网络连接

2025-04-27 11:13:08 栏目:宝塔面板 29 阅读

  • netstat 命令为你的 Linux 服务器提供了监测和网络故障排除的重要观察手段。

在 之前的文章中,我分享了一些管理你的个人 Linux 服务器的首要步骤。我简要的提到了监测网络连接的监听端口,我想通过 Linux 系统的 netstat 命令来扩展开讲讲。

服务监测和端口扫描是标准的行业惯例。有很好的软件,如 Prometheus 协助这个过程自动化,SELinux 协助上下文和保护系统访问权限。然而,我相信了解你的服务器是如何连接到其他网络和设备的,是建立正常服务器基准的关键,能够帮助你识别有可能表明错误和入侵等异常情况。作为一个初学者,我已经掌握了 netstat 命令为我的服务器提供了监测和网络故障排除的重要观察手段。

Netstat 和类似的一些网络监测工具被归入 net-tools 软件包 里,用来显示关于活动连接的信息。因为运行在开放的端口的服务往往容易被利用,定期进行网络监测能够帮助你及早探测到可疑的活动。

安装 netstat

netstat 经常预装在 Linux 发行版上。如果 netstat 没有在你的服务器上安装,用你的包管理器安装它。下面是在基于 Debian 的系统上:

$ sudo apt-get install net-tools

在基于 Fedora 的系统上:

$ dnf install net-tools

使用 netstat

就其本身而言,netstat 命令显示了全部建立成功的连接。你可以使用 netstat 的参数指定进一步预期的输出。举个例子,要显示所有监听和非监听的连接,使用 --all(-a 为简写)的参数。这将返回许多结果,所以在例子中我用管道符输出给 head 命令来显示输出的前 15 行:

    $ netstat --all | head -n 15
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:27036 *:* LISTEN
tcp 0 0 localhost:27060 *:* LISTEN
tcp 0 0 *:16001 *:* LISTEN
tcp 0 0 localhost:6463 *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:57343 *:* LISTEN
tcp 0 0 *:ipp *:* LISTEN
tcp 0 0 *:4713 *:* LISTEN
tcp 0 0 10.0.1.222:48388 syd15s17-in-f5.1e:https ESTABLISHED
tcp 0 0 10.0.1.222:48194 ec2-35-86-38-2.us:https ESTABLISHED
tcp 0 0 10.0.1.222:56075 103-10-125-164.va:27024 ESTABLISHED
tcp 0 0 10.0.1.222:46680 syd15s20-in-f10.1:https ESTABLISHED
tcp 0 0 10.0.1.222:52730 syd09s23-in-f3.1e:https ESTABLISHED

要只显示 TCP 端口,使用 --all 和 --tcp 参数,或者简写成 -at :

    $ netstat -at | head -n 5
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:27036 *:* LISTEN
tcp 0 0 localhost:27060 *:* LISTEN
tcp 0 0 *:16001 *:* LISTEN

要只显示 UDP 端口,使用 --all 和 --udp 参数,或者简写成 -au :

    $ netstat -au | head -n 5
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:27036 *:*
udp 0 0 10.0.1.222:44741 224.0.0.56:46164 ESTABLISHED
udp 0 0 *:bootpc

netstat 命令参数常常是简单易懂的。举个例子,要显示带有全部进程 ID(PID)和数字地址的监听 TCP 和 UDP 的端口:

    $ sudo netstat --tcp --udp --listening --programs --numeric
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Addr State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2500/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1726/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1721/cupsd
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4023/sshd: tux@
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::22 :::* LISTEN 1726/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1721/cupsd
tcp6 0 0 ::1:6010 :::* LISTEN 4023/sshd: tux@
udp 0 0 0.0.0.0:40514 0.0.0.0:* 1499/avahi-daemon:
udp 0 0 192.168.122.1:53 0.0.0.0:* 2500/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 2500/dnsmasq
udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 1499/avahi-daemon:
udp6 0 0 :::111 :::* 1/systemd
udp6 0 0 :::44235 :::* 1499/avahi-daemon:
udp6 0 0 :::5353 :::* 1499/avahi-daemon:

这个常用组合简写版本是 -tulpn 。

要显示一个指定服务的信息,使用 grep 命令过滤:

    $ sudo netstat -anlp | grep cups
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1721/cupsd tcp6 0 0 ::1:631 :::* LISTEN 1721/cupsd
unix 2 [ ACC ] STREAM LISTENING 27251 1/systemd /var/run/cups/cups.sock
unix 2 [ ] DGRAM 59530 1721/cupsd
unix 3 [ ] STREAM CONNECTED 55196 1721/cupsd /var/run/cups/cups.sock

接下来的步骤

一旦你运行了 netstat 命令,你就可以采取措施来保护你的系统,确保只有你主动使用的服务在你的网络上被监听。

  • 识别通常被利用的端口和服务。一般来说,关闭你实际不使用的端口。
  • 留意不常见的端口号,认识了解在你系统上使用的合法端口。
  • 密切注意 SELinux 错误。有时你需要做的只是更新上下文,以匹配你对系统做的合法更改,但是要阅读错误警告,以确保 SELinux 提醒你的不是可疑或者恶意的活动。

如果你发现一个端口正在运行一个可疑的服务,或者你只是简单的想要关闭你不再使用的端口,你可以遵从以下这些步骤,通过防火墙规则手动拒绝端口访问:

如果你在使用 firewall-cmd ,运行这些命令:

    $ sudo firewall-cmd –remove-port=<port number>/tcp
$ sudo firewall-cmd –runtime-to-permanent

如果你在使用 UFW,运行以下的命令:

 $ sudo ufw deny <port number>

下一步,使用 systemctl 来停止这个服务:

$ systemctl stop

理解 netstat

netstat 是一个快速收集你的服务器网络连接信息的有用工具。定期网络监测是了解你的系统的重要组成部分,对帮助你保持你的系统安全有着重要意义。将这一步纳入你的日常管理中,你可以使用类似 netstat 或者 ss ,以及 Nmap 等开源端口扫描器或者 Wireshark 等嗅探器 ,它们都允许设定 计划任务。

随着服务器存储了大量的个人数据,确保个人服务器的安全日益重要。通过了解你的服务器怎样连接到互联网,你可以降低你的机器的风险,同时你仍可以在数字时代大量的连接中获得益处。

本文地址:https://www.yitenyun.com/156.html

搜索文章

Tags

数据库 API FastAPI Calcite 电商系统 MySQL 数据同步 ACK 双主架构 循环复制 Web 应用 异步数据库 序列 核心机制 生命周期 Deepseek 宝塔面板 Linux宝塔 Docker JumpServer JumpServer安装 堡垒机安装 Linux安装JumpServer esxi esxi6 root密码不对 无法登录 web无法登录 Windows Windows server net3.5 .NET 安装出错 宝塔面板打不开 宝塔面板无法访问 SSL 堡垒机 跳板机 HTTPS Windows宝塔 Mysql重置密码 无法访问宝塔面板 HTTPS加密 查看硬件 Linux查看硬件 Linux查看CPU Linux查看内存 ES 协同 修改DNS Centos7如何修改DNS scp Linux的scp怎么用 scp上传 scp下载 scp命令 防火墙 服务器 黑客 Serverless 无服务器 语言 存储 Spring SQL 动态查询 Oracle 处理机制 Linux 安全 网络架构 工具 网络配置 加密 场景 MySQL 9.3 开源 PostgreSQL 存储引擎 RocketMQ 长轮询 配置 Canal Rsync 缓存方案 缓存架构 缓存穿透 HexHub 信息化 智能运维 架构 InnoDB 响应模型 日志文件 MIXED 3 线上 库存 预扣 索引 数据 业务 监控 聚簇 非聚簇 B+Tree ID 字段 AI 助手 数据库锁 单点故障 分库 分表 云原生 GreatSQL Hash 字段 DBMS 管理系统 Redis 自定义序列化 SpringAI 优化 万能公式 Redis 8.0 ​Redis 机器学习 推荐模型 SVM Embedding openHalo OB 单机版 数据集成工具 SQLite Redka sqlmock PostGIS 系统 SQLark 虚拟服务器 虚拟机 内存 分页查询 Netstat Linux 服务器 端口 SQLite-Web 数据库管理工具 自动重启 运维 同城 双活 缓存 sftp 服务器 参数 共享锁 RDB AOF Testcloud 云端自动化 查询 prometheus Alert 向量数据库 大模型 不宕机 容器化 分布式架构 分布式锁​ 聚簇索引 非聚簇索引 • 索引 • 数据库 Entity 开发 技术 排行榜 排序 EasyExcel MySQL8 IT 数据备份 Postgres OTel Iceberg MongoDB 容器 数据类型 OAuth2 Token StarRocks 数据仓库 Doris SeaTunnel 人工智能 推荐系统 分页 数据结构 连接控制 机制 AIOPS Python Web LRU Milvus IT运维 Caffeine CP 部署 崖山 新版本 高可用 向量库 悲观锁 乐观锁 Ftp 池化技术 连接池 磁盘架构 MCP mini-redis INCR指令 redo log 重做日志 单线程 线程 MVCC 事务隔离 流量 开放协议 Web 接口 字典 电商 速度 服务器中毒 数据脱敏 加密算法 R2DBC QPS 高并发 原子性 对象 微软 SQL Server AI功能 窗口 函数 双引擎 RAG HelixDB 频繁 Codis 主库 Order SSH 引擎 性能 网络 dbt 数据转换工具 Crash 代码 1 PG DBA ZODB List 类型 Pottery 工具链 优化器 模型 意向锁 记录锁 网络故障 InfluxDB 传统数据库 向量化 发件箱模式 事务同步 UUIDv7 主键 仪表盘 Redisson 锁芯 线程安全 Undo Log LLM 连接数 订单 JOIN INSERT COMPACT