Ubuntu 系统系列 | 第 10 天:网络配置与管理——netplan、ip、ss、ufw 防火墙配置

第 10/30 天

网络是 Linux 系统的命脉。无论是桌面办公、开发测试,还是生产服务器,网络配置的正确性与稳定性直接决定了系统的可用性。Ubuntu 作为最流行的 Linux 发行版之一,其网络管理工具链经历了从 ifconfig/routeip/ss、从 /etc/network/interfacesnetplan 的重大演进。

今天,我们将系统学习 Ubuntu 网络配置的核心工具:netplan(网络配置管理)、ip(网络接口与路由)、ss(网络连接诊断)和 ufw(防火墙管理)。掌握这些工具,你就掌握了 Ubuntu 网络的”方向盘”。

二、实战步骤

2.1 查看当前网络状态

首先,我们用 ip 命令全面了解系统网络状态:

# 查看所有网络接口(相当于 ifconfig -a)
ip addr show

# 或简写
ip a

输出示例:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:ab:cd:ef brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feab:cdef/64 scope link
       valid_lft forever preferred_lft forever

关键信息解读:
lo:回环接口,IP 127.0.0.1
ens33:物理网卡,IP 192.168.1.100/24
UP:接口已启用
state UP:运行状态正常

查看路由表:

ip route show
# 或简写
ip r

输出示例:

default via 192.168.1.1 dev ens33 proto static
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.100
  • default:默认网关 192.168.1.1
  • 192.168.1.0/24:本地子网路由

2.2 使用 ss 诊断网络连接

ss(socket statistics)是诊断网络连接的首选工具,比 netstat 快数倍:

# 查看所有 TCP 连接
ss -t

# 查看所有监听端口(最常用)
ss -tuln

# 查看详细的 TCP 连接信息(含进程)
ss -tup

# 按状态过滤连接
ss -t state established

输出示例:

$ ss -tuln
Netid    State     Recv-Q    Send-Q       Local Address:Port       Peer Address:Port
tcp      LISTEN    0         128                0.0.0.0:22            0.0.0.0:*
tcp      LISTEN    0         128                127.0.0.1:53            0.0.0.0:*
tcp      LISTEN    0         128                   [::]:22               [::]:*
udp      LISTEN    0         256                127.0.0.1:53            0.0.0.0:*

参数说明:
-t:TCP 连接
-u:UDP 连接
-l:仅显示监听状态的 socket
-n:不解析服务名,直接显示端口号
-p:显示进程名和 PID

2.3 netplan 配置静态 IP

netplan 的配置文件位于 /etc/netplan/,通常名为 01-netcfg.yaml00-installer-config.yaml

查看当前配置

cat /etc/netplan/00-installer-config.yaml

配置静态 IP 示例

# /etc/netplan/00-installer-config.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: false
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 114.114.114.114

应用配置

# 验证配置语法
sudo netplan try

# 直接应用(不等待确认)
sudo netplan apply

# 生成后端配置文件(调试用)
sudo netplan generate

⚠️ 重要:在生产环境中,务必先使用 netplan try 验证,它会等待 120 秒确认。如果 SSH 连接断开,配置会自动回滚,避免”把自己锁在外面”的惨剧。

2.4 ufw 防火墙配置

UFW(Uncomplicated Firewall)是 Ubuntu 默认的防火墙管理工具,基于 iptables 但极大简化了规则配置。

基础操作

# 查看防火墙状态
sudo ufw status

# 启用详细输出
sudo ufw status verbose

# 启用防火墙
sudo ufw enable

# 禁用防火墙
sudo ufw disable

常用规则配置

# 允许 SSH(默认端口 22)
sudo ufw allow ssh
# 或指定端口
sudo ufw allow 22/tcp

# 允许 HTTP 和 HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 允许特定 IP 访问
sudo ufw allow from 192.168.1.50 to any port 22

# 拒绝某 IP
sudo ufw deny from 10.0.0.100

# 删除规则(按编号)
sudo ufw status numbered
sudo ufw delete 3

完整配置示例

# 从头配置一个 Web 服务器的防火墙
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow from 10.0.0.0/8 to any port 3306
sudo ufw enable
sudo ufw status verbose

输出示例:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere
3306                       ALLOW IN    10.0.0.0/8
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp (v6)                ALLOW IN    Anywhere (v6)
443/tcp (v6)               ALLOW IN    Anywhere (v6)

2.5 临时网络调试命令

除了上述工具,以下命令在日常排障中不可或缺:

# 测试网络连通性
ping -c 4 8.8.8.8

# DNS 解析测试
nslookup google.com
dig google.com

# 追踪路由路径
traceroute 8.8.8.8

# 查看 ARP 表
ip neigh

三、常见问题

Q1:应用 netplan 后 SSH 断开怎么办?

现象:配置静态 IP 时写错了网关,导致 SSH 连接中断。

解决方案:如果使用 netplan try,配置会在 120 秒后自动回滚,只需等待即可。如果直接用了 netplan apply,需要通过服务器管理面板(如 IPMI、iDRAC、VNC)进入系统,手动修正配置文件,或直接插入 Ubuntu Live CD 挂载磁盘修复。

Q2:ufw 启用后 SSH 连接断开?

原因:在 ufw 启用前没有添加 SSH 允许规则。

解决:通过服务器管理面板控制台连接,执行:

sudo ufw allow ssh

Q3:ss 和 netstat 有什么区别?

ss 直接从内核的 /proc/net/tcp 等文件读取 socket 信息,而 netstat 需要遍历 /proc 下的每个进程。在连接数较多(如 1000+)的服务器上,ss 的速度优势极为明显,建议全面改用 ss

Q4:如何查看网卡速率和双工模式?

# 查看 ethtool 信息
sudo ethtool ens33

输出包含 Speed、Duplex、Link detected 等关键信息,可用于诊断物理链路问题。


四、总结

今天我们学习了 Ubuntu 网络配置的四大核心工具:

工具 用途 关键命令
netplan 网络配置管理 netplan apply, netplan try
ip 接口与路由管理 ip addr, ip route, ip link
ss 网络连接诊断 ss -tuln, ss -tup
ufw 防火墙管理 ufw enable, ufw allow, ufw status

网络管理是 Ubuntu 运维的基础技能,也是排查大部分系统问题的第一道关卡。建议你动手实践所有命令,特别是 netplan try 的安全机制——它曾经救过无数运维工程师的”命”。


下期预告

第 11 天:进程管理与系统监控——ps、top、htop、systemd 资源控制

进程是 Linux 系统中一切活动的载体。明天,我们将深入进程管理,学习如何用 pstop 监控系统运行状态,用 htop 交互式管理进程,并通过 systemd 的 cgroup 机制精确控制资源分配。你将掌握系统性能的第一道防线。


Ubuntu 系统系列目录

天数 主题 链接
第 1 天 Ubuntu 简介与版本选择 阅读
第 2 天 手把手安装 Ubuntu 阅读
第 3 天 Ubuntu 桌面环境初探 阅读
第 4 天 Ubuntu 终端基础 阅读
第 5 天 用户与权限管理 阅读
第 6 天 软件包管理 阅读
第 7 天 文件与文本操作 阅读
第 8 天 系统服务管理 阅读
第 9 天 磁盘与文件系统管理 阅读
第 10 天 网络配置与管理 ← 今日发布
第 11 天 进程管理与系统监控 敬请期待
第 12 天 日志管理与审计 敬请期待
第 13 天 计划任务与自动化 敬请期待
第 14 天 Shell 脚本编程基础 敬请期待
第 15 天 系统备份与恢复 敬请期待
第 16 天 远程访问与 SSH 配置 敬请期待
第 17 天 Web 服务器搭建(Nginx/Apache) 敬请期待
第 18 天 数据库安装与配置(MySQL/PostgreSQL) 敬请期待
第 19 天 DNS 与域名解析 敬请期待
第 20 天 安全加固与入侵检测 敬请期待
第 21 天 性能监控与调优 敬请期待
第 22 天 容器技术入门(Docker) 敬请期待
第 23 天 容器编排入门(Docker Compose) 敬请期待
第 24 天 虚拟化技术(KVM/QEMU) 敬请期待
第 25 天 存储管理进阶(NFS/iSCSI) 敬请期待
第 26 天 高可用与负载均衡 敬请期待
第 27 天 自动化运维(Ansible 入门) 敬请期待
第 28 天 系统升级与迁移 敬请期待
第 29 天 故障排查实战 敬请期待
第 30 天 Ubuntu 专家之路 敬请期待
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容