【运维】Linux 服务器实战(5):网络、ufw 防火墙与端口排查
Linux 服务器实战 · 第 5 篇
端口被谁占了?防火墙怎么只开需要的洞?网络问题 5 分钟初筛。
1. 端口与进程
# 推荐 ss(替代 netstat)
sudo ss -tunlp
# 看 80 端口
sudo ss -tlnp | grep ':80'
# 按端口找 PID
sudo lsof -i :8000 -sTCP:LISTEN
**优先** 用 systemctl 停服务,再考虑 kill:
```bash
sudo fuser -k 8000/tcp # 慎用
---
## 2. UFW 防火墙
```bash
sudo ufw status verbose
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp
sudo ufw enable
sudo ufw disable # 紧急全关(调试完记得开回)
sudo ufw delete allow 80/tcp
---
## 3. 网络连通性
```bash
ip -br a
ip route
ping -c 3 1.1.1.1
ping -c 3 baidu.com
dig +short pc530.com
curl -vI <https://pc530.com> --max-time 10
traceroute -n 8.8.8.8
DNS 问题:
```bash
resolvectl status
cat /etc/resolv.conf
---
## 4. 静态 IP(Netplan,22.04+ 常见)
`/etc/netplan/00-installer-config.yaml` 示例(**改前备份**):
```yaml
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses: [192.168.1.10/24]
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [223.5.5.5, 8.8.8.8]
应用:
```bash
sudo netplan try # 120s 内可回滚,SSH 建议开两路
sudo netplan apply
旧版仍可能用 `/etc/network/interfaces`,以 `ls /etc/netplan/` 为准。
---
## 5. 网卡流量实时看
```bash
sudo apt install -y iftop nethogs
sudo iftop -i eth0 # 连接维度
sudo nethogs eth0 # 进程维度
| 工具 | 适合 |
|------|------|
| iftop | 哪 IP 在占带宽 |
| nethogs | 哪个进程在占带宽 |
---
## 6. BBR 拥塞控制(可选)
内核自带 BBR 时(需 `sysctl` 支持):
```bash
sysctl net.ipv4.tcp_congestion_control
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.d/99-bbr.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.d/99-bbr.conf
sudo sysctl --system
> 谨慎使用来历不明的「一键 BBR 脚本」;优先官方内核参数。
---
## 本篇速查
```bash
sudo ss -tunlp
sudo ufw allow OpenSSH && sudo ufw enable
curl -vI <https://example.com> --max-time 10
```
系列导航
| 篇 | 主题 |
|---|---|
| 1–4 | 初始化 / SSH / 磁盘 / 日志 |
| 5 | 网络与防火墙(本文) |
| 6–8 | 监控 / 诊断 / Cron |