Linux 网络问题:网络配置与防火墙
一、诊断基础网络环境
- 查询 网卡物理状态与分配地址。在终端执行
ip link show与ip addr show。关注显示UP标志的网卡,记录其名称(如eth0、ens33)与inet字段后的 IPv4 地址。若地址为127.0.0.1或缺失inet行,说明网卡未成功获取 IP。 - 验证 本地协议栈完整性。输入
ping -c 4 127.0.0.1并观察输出。连续返回 4 个带时间的回复表明内核网络模块与回环接口运行正常。若出现Network is unreachable提示,需 执行sudo systemctl restart NetworkManager重启基础网络服务。 - 检查 路由出口配置。运行
ip route | grep default。输出结果中default via后的 IP 即为默认网关。若命令无返回,表示系统不知道如何转发非局域网流量,必须手动添加默认路由或启用 DHCP 客户端。
二、配置静态网络参数
现代 Linux 发行版普遍使用 NetworkManager(即 Linux 默认的网络控制服务)作为网络守护进程。以下指令通过其命令行工具直接修改底层配置。
- 列出 所有活跃连接。执行
nmcli connection show --active,从NAME列中确认需要修改的配置名称,避免误改其他网卡。 - 写入 静态 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.0,manual表示禁用 DHCP 自动获取,强制使用手动设定值。) - 激活 修改后的配置。输入
sudo nmcli connection up "连接名称"。系统会瞬间断开并重新握手,期间 SSH 连接可能短暂卡顿,请勿重复发送控制指令。 - 核对 DNS 解析服务。查看
/etc/resolv.conf文件内容,确认nameserver指向已配置的正确地址。若文件被其他服务反复覆盖,编辑/etc/NetworkManager/NetworkManager.conf,在[main]区块下方 添加dns=none参数,防止外部插件干扰解析配置。
三、部署与管理系统防火墙
防火墙通过规则链拦截或放行特定端口的流量。不同发行版采用不同的底层管理框架,请严格依据实际系统类型执行对应指令。
- 识别 当前活跃的防护软件。依次尝试
sudo systemctl status firewalld与sudo systemctl status ufw,观察Active:状态行。仅有一个服务处于running状态时才对其进行操作,双工具共存会导致规则互相覆盖。 - 添加
firewalld永久放行规则(适用于 RHEL 系)。输入sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent写入磁盘配置。 - 重载
firewalld内存规则库。输入sudo firewall-cmd --reload。此步骤将磁盘配置同步至内存,不重载则规则仅在当前会话生效。 - 开启
ufw拦截引擎(适用于 Ubuntu 系)。输入sudo ufw enable启动防护。 - 设定
ufw默认策略。执行sudo ufw default deny incoming,拒绝所有未明确允许的入站流量。 - 插入
ufw放行条目。运行sudo ufw allow 443/tcp开放 HTTPS 访问权限。 - 排查 云平台虚拟防火墙。若系统规则已放行但外部无法访问,登录 云控制台,定位 安全组设置,添加 对应端口的入方向允许策略。云平台的虚拟网关通常位于系统防火墙之前。
不同发行版的防火墙核心指令对比如下。操作前请确认当前使用的工具类型。
| 工具名称 | 状态检查指令 | 开放指定端口 | 删除指定规则 |
|---|---|---|---|
firewalld |
firewall-cmd --state |
--add-port=端口/协议 --permanent |
--remove-port=端口/协议 --permanent |
ufw |
ufw status verbose |
allow 端口/协议 |
deny 端口/协议 或按编号删除 delete 编号 |
掌握上述指令后,可快速调整策略以适配 Web 服务器、数据库或自定义业务应用的访问需求。
四、验证连通性与深度排错
配置完成后,必须通过多维度测试确认链路稳定。遇到异常时,按顺序执行以下排查动作。
- 探测 外部主机可达性。执行
curl -I http://目标IP:端口或telnet 目标IP 端口。若返回Connection refused,表示端口未开启或防火墙拦截;若返回Connection timed out,通常表示路由不通或上游设备丢弃数据包。 - 审查 服务监听地址。输入
sudo ss -tulnp。观察LISTEN状态对应的Local Address:Port。若显示为127.0.0.1:端口,代表服务仅监听本机。需 打开 对应软件的配置文件,将绑定 IP 修改为0.0.0.0以接受外部请求,随后 重启 该业务进程。 - 追踪 数据包中断节点。运行
mtr <目标IP>。该命令结合持续ping与路径追踪功能,实时刷新每一跳的延迟与丢包率。若发现某跳延迟骤升或丢包率超过 30%,记录 该 IP 并联系对应网络段的管理员,或调整本机的 MTU(数据包最大传输单元)数值避免分片丢包。 - 分析 内核丢弃日志。执行
sudo dmesg | grep -i "drop"或sudo journalctl -k --grep="REJECT\|DROP"。系统内核会记录被防火墙规则拦截的数据包来源 IP 与目标端口。根据日志中的SRC(源地址)与DPT(目标端口)字段,调整 对应的防火墙放行策略或白名单。 - 清理 残留连接状态。网络故障恢复后,旧的空闲 TCP 连接可能占用系统句柄导致新请求失败。输入
sudo ss -K dst <故障IP>强制关闭指向该目标的陈旧连接,随后 发起 新的业务请求验证恢复效果。

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