09 网络
网络基础(TCP/IP)
基础概念:
- IP:主机地址。
- TCP/UDP:传输层协议。
- 端口:进程通信端点。
- 路由:数据包转发路径。
- DNS:域名到 IP 的解析系统。
常用查看命令:
ip addr # 查看网卡和 IP 地址
ip route # 查看路由表
ping -c 4 8.8.8.8 # 测试网络连通性
hostname -I # 查看本机 IP
arp -n # 查看 ARP 缓存
判断思路:
ping不通时,先区分是本机网络、网关、DNS 还是目标主机问题。- 先确认本机 IP 和路由,再测试目标连通性。
curl / wget
curl -I https://example.com # 只查看响应头
curl -sS https://example.com/health # 静默请求,但出错时仍显示错误
curl -o file.tar.gz https://example.com/file.tar.gz # 下载并保存为指定文件名
wget https://example.com/file.tar.gz # 直接下载文件
curl -v https://example.com # 打印详细请求过程
curl -w "\ncode=%{http_code} time=%{time_total}\n" -o /dev/null -s https://example.com # 输出状态码和耗时
排障建议:
curl -I适合快速确认状态码、重定向、响应头。curl -v适合看 TLS 握手、代理、重定向和连接细节。- 下载失败时先确认 DNS、证书、代理和防火墙。
端口与连接(netstat/ss)
ss 是新系统推荐工具:
ss -lntp # 查看监听中的 TCP 端口
ss -antp # 查看全部 TCP 连接
ss -s # 查看 socket 汇总统计
ss -lunp # 查看监听中的 UDP 端口
sudo lsof -i :8080 # 查看某端口被哪个进程占用
旧工具:
netstat -lntp # 老系统常见的监听端口查看方式
排查思路:
- 服务启动失败先看端口是否被占用。
- 端口开放但请求失败时,再查防火墙、绑定地址和应用日志。
DNS
dig example.com +short # 查询域名解析结果
dig @8.8.8.8 example.com # 指定 DNS 服务器查询
nslookup example.com # 传统 DNS 查询工具
cat /etc/resolv.conf # 查看系统 DNS 配置
resolvectl status # systemd-resolved 环境查看 DNS 状态
常见问题:
- DNS 解析慢导致应用超时。
- 本地缓存与权威记录不一致。
/etc/resolv.conf被 DHCP 或 NetworkManager 覆盖。
排查顺序:
- 先查本机 DNS 配置。
- 再对比不同 DNS 服务器的解析结果。
- 最后判断是本地网络、递归 DNS 还是权威解析问题。
连通性测试(nc/traceroute/tcpdump)
nc -zv 10.0.0.8 443 # 测试目标主机端口是否可达
traceroute example.com # 查看路由路径
sudo tcpdump -i any port 53 # 抓取 DNS 流量
sudo tcpdump -i any host 10.0.0.8 # 抓取与指定主机相关的流量
适用场景:
nc适合确认某个端口是不是能打通。traceroute适合定位链路中断的大致位置。tcpdump适合确认数据包到底有没有发出、有没有回来。
防火墙(iptables/ufw)
Ubuntu 常用 ufw:
sudo ufw status verbose # 查看规则和默认策略
sudo ufw allow 22/tcp # 放行 SSH
sudo ufw allow 80,443/tcp # 放行 Web 端口
sudo ufw delete allow 80/tcp # 删除规则
sudo ufw enable # 启用防火墙
iptables 基础查看:
sudo iptables -L -n -v # 查看过滤表规则
sudo iptables -t nat -L -n -v # 查看 NAT 表规则
安全原则:
- 默认拒绝入站,按需开放端口。
- 变更规则前先确认回滚路径,避免把自己锁在机器外。
- 远程操作时优先保留 SSH 通道并验证新规则后再退出。