文章目录

Linux 网络问题:网络配置与防火墙

发布于 2026-04-07 06:28:06 · 浏览 9 次 · 评论 0 条

Linux 网络问题:网络配置与防火墙

一、诊断基础网络环境

  1. 查询 网卡物理状态与分配地址。在终端执行 ip link showip addr show。关注显示 UP 标志的网卡,记录其名称(如 eth0ens33)与 inet 字段后的 IPv4 地址。若地址为 127.0.0.1 或缺失 inet 行,说明网卡未成功获取 IP。
  2. 验证 本地协议栈完整性。输入 ping -c 4 127.0.0.1 并观察输出。连续返回 4 个带时间的回复表明内核网络模块与回环接口运行正常。若出现 Network is unreachable 提示,需 执行 sudo systemctl restart NetworkManager 重启基础网络服务。
  3. 检查 路由出口配置。运行 ip route | grep default。输出结果中 default via 后的 IP 即为默认网关。若命令无返回,表示系统不知道如何转发非局域网流量,必须手动添加默认路由或启用 DHCP 客户端。

二、配置静态网络参数

现代 Linux 发行版普遍使用 NetworkManager(即 Linux 默认的网络控制服务)作为网络守护进程。以下指令通过其命令行工具直接修改底层配置。

  1. 列出 所有活跃连接。执行 nmcli connection show --active,从 NAME 列中确认需要修改的配置名称,避免误改其他网卡。
  2. 写入 静态 IPv4 信息。将下方命令中的占位符替换为实际数值后 执行
    sudo nmcli connection modify "连接名称" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 ipv4.method manual connection.autoconnect yes

    (说明:/24 代表子网掩码 255.255.255.0manual 表示禁用 DHCP 自动获取,强制使用手动设定值。)

  3. 激活 修改后的配置。输入 sudo nmcli connection up "连接名称"。系统会瞬间断开并重新握手,期间 SSH 连接可能短暂卡顿,请勿重复发送控制指令。
  4. 核对 DNS 解析服务。查看 /etc/resolv.conf 文件内容,确认 nameserver 指向已配置的正确地址。若文件被其他服务反复覆盖,编辑 /etc/NetworkManager/NetworkManager.conf,在 [main] 区块下方 添加 dns=none 参数,防止外部插件干扰解析配置。

三、部署与管理系统防火墙

防火墙通过规则链拦截或放行特定端口的流量。不同发行版采用不同的底层管理框架,请严格依据实际系统类型执行对应指令。

  1. 识别 当前活跃的防护软件。依次尝试 sudo systemctl status firewalldsudo systemctl status ufw,观察 Active: 状态行。仅有一个服务处于 running 状态时才对其进行操作,双工具共存会导致规则互相覆盖。
  2. 添加 firewalld 永久放行规则(适用于 RHEL 系)。输入 sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent 写入磁盘配置。
  3. 重载 firewalld 内存规则库。输入 sudo firewall-cmd --reload。此步骤将磁盘配置同步至内存,不重载则规则仅在当前会话生效。
  4. 开启 ufw 拦截引擎(适用于 Ubuntu 系)。输入 sudo ufw enable 启动防护。
  5. 设定 ufw 默认策略。执行 sudo ufw default deny incoming,拒绝所有未明确允许的入站流量。
  6. 插入 ufw 放行条目。运行 sudo ufw allow 443/tcp 开放 HTTPS 访问权限。
  7. 排查 云平台虚拟防火墙。若系统规则已放行但外部无法访问,登录 云控制台,定位 安全组设置,添加 对应端口的入方向允许策略。云平台的虚拟网关通常位于系统防火墙之前。

不同发行版的防火墙核心指令对比如下。操作前请确认当前使用的工具类型。

工具名称 状态检查指令 开放指定端口 删除指定规则
firewalld firewall-cmd --state --add-port=端口/协议 --permanent --remove-port=端口/协议 --permanent
ufw ufw status verbose allow 端口/协议 deny 端口/协议 或按编号删除 delete 编号

掌握上述指令后,可快速调整策略以适配 Web 服务器、数据库或自定义业务应用的访问需求。


四、验证连通性与深度排错

配置完成后,必须通过多维度测试确认链路稳定。遇到异常时,按顺序执行以下排查动作。

  1. 探测 外部主机可达性。执行 curl -I http://目标IP:端口telnet 目标IP 端口。若返回 Connection refused,表示端口未开启或防火墙拦截;若返回 Connection timed out,通常表示路由不通或上游设备丢弃数据包。
  2. 审查 服务监听地址。输入 sudo ss -tulnp。观察 LISTEN 状态对应的 Local Address:Port。若显示为 127.0.0.1:端口,代表服务仅监听本机。需 打开 对应软件的配置文件,将绑定 IP 修改为 0.0.0.0 以接受外部请求,随后 重启 该业务进程。
  3. 追踪 数据包中断节点。运行 mtr <目标IP>。该命令结合持续 ping 与路径追踪功能,实时刷新每一跳的延迟与丢包率。若发现某跳延迟骤升或丢包率超过 30%,记录 该 IP 并联系对应网络段的管理员,或调整本机的 MTU(数据包最大传输单元)数值避免分片丢包。
  4. 分析 内核丢弃日志。执行 sudo dmesg | grep -i "drop"sudo journalctl -k --grep="REJECT\|DROP"。系统内核会记录被防火墙规则拦截的数据包来源 IP 与目标端口。根据日志中的 SRC(源地址)与 DPT(目标端口)字段,调整 对应的防火墙放行策略或白名单。
  5. 清理 残留连接状态。网络故障恢复后,旧的空闲 TCP 连接可能占用系统句柄导致新请求失败。输入 sudo ss -K dst <故障IP> 强制关闭指向该目标的陈旧连接,随后 发起 新的业务请求验证恢复效果。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文