菜鸟科技网

Linux网络管理命令有哪些?

基础信息查看

这些命令用于快速查看当前网络接口的基本信息和状态。

Linux网络管理命令有哪些?-图1
(图片来源网络,侵删)

ip - 现代化的网络管理工具(推荐)

ip 命令是 ifconfig 的现代替代品,功能更强大,信息更详细。

  • 查看所有网络接口信息:

    ip addr show
    # 或简写
    ip a
    • 输出会显示接口名(如 eth0, lo, ens33)、MAC 地址、IP 地址、子网掩码、状态等。
  • 查看特定接口信息:

    ip addr show eth0
  • 启用/禁用网络接口:

    Linux网络管理命令有哪些?-图2
    (图片来源网络,侵删)
    # 启用 eth0
    ip link set eth0 up
    # 禁用 eth0
    ip link set eth0 down
  • 查看路由表:

    ip route show
    # 或简写
    ip r
  • 查看网络连接状态(类似 netstat):

    ip [s|S]h m [a|t|u|p] [dev IFACE] [STATE] [proto PROTO]
    # 查看所有 TCP 连接
    ss -t

ifconfig - 传统的网络配置工具(已逐渐被淘汰)

虽然很多新系统默认不安装,但在一些旧系统或脚本中仍会看到。

  • 查看所有网络接口信息:

    Linux网络管理命令有哪些?-图3
    (图片来源网络,侵删)
    ifconfig -a
  • 查看特定接口信息:

    ifconfig eth0
  • 启用/禁用接口:

    ifconfig eth0 up
    ifconfig eth0 down

hostname - 查看或设置主机名

  • 查看当前主机名:

    hostname
  • 临时设置主机名:

    sudo hostname new_hostname

    注意:这只是临时生效,重启后会恢复,永久修改需要编辑 /etc/hostname 文件。


连接测试与诊断

这些命令用于测试网络连通性、解析域名和诊断问题。

ping - 测试网络连通性

  • 测试与另一台主机的连通性:
    ping google.com
    # 或指定 IP
    ping 8.8.8.8
    • 它会持续发送 ICMP 回显请求包,并显示响应时间和丢包率,按 Ctrl+C 停止。

ss / netstat - 查看网络连接、路由表、接口统计

  • ss (Socket Statistics) - netstat 的现代替代品(推荐)

    • 查看所有 TCP 连接:
      ss -t
    • 查看所有 UDP 连接:
      ss -u
    • 查看所有监听端口:
      ss -l
    • 查看所有连接(包括 TCP, UDP):
      ss -a
    • 查看所有监听的 TCP 端口:
      ss -lt
  • netstat - 传统工具

    • 功能与 ss 类似,但效率较低。
    • 查看所有监听的 TCP 端口:
      netstat -tlnp
    • 显示所有网络连接:
      netstat -an

traceroute / tracepath - 跟踪数据包路径

  • traceroute - 显示数据包到目标主机经过的所有路由节点

    traceroute google.com

    它会显示数据包每经过一跳的 IP 地址和往返时间,有助于定位网络延迟或中断点。

  • tracepath - traceroute 的简化版本,通常不需要 root 权限

    tracepath google.com

nslookup / dig - DNS 查询工具

  • nslookup - 交互式或命令行的 DNS 查询工具

    # 查询域名的 IP 地址
    nslookup google.com
    # 查询 IP 对应的域名(反向解析)
    nslookup 8.8.8.8
  • dig - 更详细、更专业的 DNS 查询工具

    # 查询 google.com 的 A 记录
    dig google.com
    # 查询 MX 邮件交换记录
    dig google.com MX
    # 只显示答案部分
    dig google.com +short

mtr - pingtraceroute 的超级结合体

  • mtr (My Traceroute) - 持续显示网络路径和每个节点的丢包/延迟情况
    mtr google.com
    • 它比 traceroute 更直观,能实时看到网络质量的变化,是网络诊断的利器。

路由管理

手动添加或删除路由条目。

ip route - 管理路由表

  • 添加一条静态路由:

    # 格式: ip route add 目标网段 via 下一跳地址 dev 出接口
    # 示例: 添加一条到 192.168.100.0/24 网段的路由,下一跳是 10.0.0.1,从 eth0 出去
    sudo ip route add 192.168.100.0/24 via 10.0.0.1 dev eth0
  • 删除一条静态路由:

    sudo ip route del 192.168.100.0/24
  • 添加默认网关(默认路由):

    sudo ip route add default via 192.168.1.1
  • 临时修改默认网关:

    # 先删除旧的
    sudo ip route del default
    # 再添加新的
    sudo ip route add default via 192.168.1.254

    注意:以上路由命令都是临时的,重启网络服务或系统后会失效,要永久生效,需要修改网络配置文件(如 /etc/netplan//etc/sysconfig/network-scripts/)。


防火墙与安全

iptables / nftables - Linux 内核防火墙

  • iptables - 传统且功能强大的防火墙工具

    • 查看当前规则链:
      sudo iptables -L -n -v
      • -L: 列出规则
      • -n: 以数字形式显示地址和端口,不进行 DNS 解析
      • -v: 显示详细信息(如数据包/字节数)
    • 允许所有传入的 SSH 连接 (端口 22):
      sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    • 丢弃所有其他传入的连接:
      sudo iptables -A INPUT -j DROP
    • 注意:iptables 规则复杂,操作不当可能导致失联,修改前请确保有其他方式访问服务器。
  • nftables - iptables 的现代替代品(CentOS 8+, Ubuntu 20.04+ 默认使用)

    • 语法更简洁,性能更好。
    • 查看规则集:
      sudo nft list ruleset
    • 添加一条允许 SSH 的规则:
      sudo nft add table inet myfilter
      sudo nft add chain inet myfilter myinput { type filter hook input priority 0 \; }
      sudo nft add rule inet myfilter myinput tcp dport 22 accept

firewalld - iptables/nftables 的动态管理前端(CentOS/RHEL/Fedora 主流)

  • 启动并启用 firewalld 服务:

    sudo systemctl start firewalld
    sudo systemctl enable firewalld
  • 查看防火墙状态和区域:

    sudo firewall-cmd --state
    sudo firewall-cmd --get-active-zones
  • 永久开放 TCP 端口 80 (HTTP):

    sudo firewall-cmd --permanent --add-service=http
    # 重新加载防火墙使配置生效
    sudo firewall-cmd --reload
  • 永久开放特定端口:

    sudo firewall-cmd --permanent --add-port=8080/tcp
    sudo firewall-cmd --reload
  • 查看已开放的服务和端口:

    sudo firewall-cmd --list-services
    sudo firewall-cmd --list-ports

网络配置与服务管理

nmcli - NetworkManager 的命令行工具(现代桌面和服务器发行版推荐)

  • 查看所有连接和设备状态:

    nmcli connection show
    nmcli device status
  • eth0 分配静态 IP 地址:

    sudo nmcli con mod "连接名称" ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4"
    # 激活连接
    sudo nmcli con up "连接名称"

systemctl - 管理网络服务

  • 重启网络服务(根据发行版不同,服务名可能不同):

    # 对于使用 NetworkManager 的系统 (Ubuntu, CentOS 7+)
    sudo systemctl restart NetworkManager
    # 对于使用传统 ifupdown 的系统 (老版 Debian)
    sudo systemctl networking restart
  • 启用/禁用开机自启:

    sudo systemctl enable NetworkManager
    sudo systemctl disable NetworkManager

网络监控与分析

iftop / nethogs - 查看实时带宽使用和进程级流量

  • iftop - 按主机/端口显示实时网络带宽使用情况

    sudo iftop -i eth0

    它会显示哪个 IP 正在占用最多带宽。

  • nethogs - 按进程显示实时网络带宽使用情况

    sudo nethogs
    • 它能告诉你是哪个程序(如 chrome, wget)在消耗网络流量。

tcpdump - 抓包分析工具(终极网络诊断工具)

  • 抓取 eth0 接口上所有发往或来自 192.168.1.100 的数据包:

    sudo tcpdump -i eth0 host 192.168.1.100
  • 抓取 eth0 接口上所有的 HTTP 流量(端口 80):

    sudo tcpdump -i eth0 port 80
  • 将抓包结果保存到文件,并用 Wireshark 分析:

    # -w 表示写入文件
    sudo tcpdump -i any -w capture.pcap
    • capture.pcap 文件可以用 Wireshark (图形界面) 或 tshark (命令行) 打开分析。
命令类别 常用命令 主要用途
基础信息 ip a, ifconfig 查看网络接口 IP、状态
hostname 查看主机名
连接测试 ping 测试网络连通性
ss, netstat 查看端口、连接状态
traceroute, mtr 跟踪路由,诊断延迟/丢包
nslookup, dig DNS 域名解析查询
路由管理 ip route add/del 添加/删除静态路由
防火墙 firewall-cmd 管理防火墙规则 (CentOS/RHEL)
iptables, nftables 管理内核防火墙规则
配置与服务 nmcli 配置网络连接 (现代系统)
systemctl 启动/重启网络服务
监控分析 iftop 查看主机级实时流量
nethogs 查看进程级实时流量
tcpdump 抓包分析,深度诊断

掌握这些命令,您将能够应对绝大多数 Linux 环境下的网络管理任务,对于初学者,建议先从 ip, ping, ss, firewall-cmdnmcli 开始学习。

分享:
扫描分享到社交APP
上一篇
下一篇