在 linux 系统中,查看路由表和 ip 地址占用情况是网络管理的基础任务。以下是专业的分析和清理方法:
路由表分析
1. 查看完整路由表
ip route show # 或 route -n
2. 分析路由表结构
# 显示路由表详细信息 ip -d route show # 按协议过滤路由 ip route show proto kernel # 内核路由 ip route show proto static # 静态路由
3. 路由表关键字段解读
| 字段 | 含义 | 示例 |
|---|---|---|
default via | 默认网关 | default via 192.168.1.1 dev eth0 |
src | 源地址 | src 192.168.1.100 |
metric | 路由优先级 | metric 100 |
scope | 作用域 | scope link (本地链路) |
proto | 路由来源 | kernel (内核), static (静态) |
ip 地址占用分析
1. 查看所有接口 ip
ip addr show # 或 ifconfig
2. 分析 ip 使用情况
# 查看 arp 表(ip-mac 映射) ip neigh show arp -n # 查看网络连接 ss -tunap netstat -tunap
3. 识别占用 ip 的设备
# 扫描本地网络 nmap -sn 192.168.1.0/24 # 使用 arp-scan sudo arp-scan -l --interface=eth0
路由与 ip 清理方法
1. 清理无效路由
# 删除特定路由 sudo ip route del 10.0.0.0/24 via 192.168.1.1 # 删除所有非永久路由 sudo ip route flush cache
2. 清理 arp 缓存
# 清除整个 arp 表 sudo ip neigh flush all # 清除特定 ip 的 arp 记录 sudo ip neigh del 192.168.1.50 dev eth0
3. 释放 dhcp 租约
# 释放 ip sudo dhclient -r eth0 # 重新获取 ip sudo dhclient eth0
4. 清理网络命名空间
# 列出所有网络命名空间 ip netns list # 清理无效命名空间 sudo ip netns delete old_namespace
高级分析工具
1. 路由跟踪
# 基本路由跟踪 traceroute google.com # 高级路由诊断 mtr google.com
2. 网络连接分析
# 查看所有 tcp 连接 ss -t -a # 查看 udp 连接 ss -u -a # 按状态过滤 ss -t state established
3. 路由表监控
# 实时监控路由变化 watch -n 1 "ip route show"
路由问题诊断流程
graph td
a[无法访问目标] --> b{检查默认网关}
b -->|正常| c[检查目标路由]
b -->|异常| d[修复网关配置]
c -->|存在| e[检查arp缓存]
c -->|不存在| f[添加静态路由]
e -->|完整| g[检查防火墙]
e -->|缺失| h[刷新arp缓存]
g -->|允许| i[检查目标服务]
g -->|拒绝| j[调整防火墙]
持久化配置管理
1. 网络配置文件位置
| 系统 | 配置文件 |
|---|---|
| debian/ubuntu | /etc/network/interfaces |
| rhel/centos | /etc/sysconfig/network-scripts/ifcfg-* |
| 通用 | /etc/netplan/*.yaml |
2. 静态路由配置示例
# ubuntu (netplan)
network:
version: 2
ethernets:
eth0:
routes:
- to: 10.0.0.0/24
via: 192.168.1.1
metric: 100
# centos
echo "10.0.0.0/24 via 192.168.1.1 dev eth0" | sudo tee -a /etc/sysconfig/network-scripts/route-eth0
3. 防止路由泄漏
# 关闭源路由 sudo sysctl -w net.ipv4.conf.all.accept_source_route=0 sudo sysctl -w net.ipv4.conf.default.accept_source_route=0 # 永久生效 echo "net.ipv4.conf.all.accept_source_route=0" | sudo tee -a /etc/sysctl.conf echo "net.ipv4.conf.default.accept_source_route=0" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
安全最佳实践
1. 路由安全加固
# 禁用icmp重定向 sudo sysctl -w net.ipv4.conf.all.accept_redirects=0 sudo sysctl -w net.ipv4.conf.default.accept_redirects=0 # 关闭ip转发(非路由器) sudo sysctl -w net.ipv4.ip_forward=0
2. arp 保护
# 启用arp验证 sudo sysctl -w net.ipv4.conf.all.arp_ignore=1 sudo sysctl -w net.ipv4.conf.all.arp_announce=2
3. 定期清理脚本
#!/bin/bash
# 网络清理脚本
# 刷新arp缓存
ip neigh flush all
# 清除路由缓存
ip route flush cache
# 释放所有接口ip
for intf in $(ip link show | grep '^[0-9]' | awk -f: '{print $2}'); do
dhclient -r $intf
dhclient $intf
done
# 重启网络服务
systemctl restart networking
监控与日志分析
1. 路由变更日志
# 记录路由变更 sudo apt install auditd sudo auditctl -w /etc/network/interfaces -p wa -k network_config
2. 实时网络监控
# 使用 iftop 监控流量 sudo iftop -i eth0 # 使用 nload 监控带宽 nload eth0
3. 日志分析命令
# 查看网络相关日志 journalctl -u networkmanager journalctl -u systemd-networkd # 分析连接日志 grep "kernel:" /var/log/syslog | grep "net"
常见问题解决
问题:路由表混乱
解决方案:
# 重置路由表 sudo ip route flush all sudo systemctl restart networking # 重新添加默认路由 sudo ip route add default via 192.168.1.1
问题:ip 地址冲突
解决方案:
# 检测冲突 arping -i eth0 -c 3 192.168.1.100 # 释放并更新ip sudo dhclient -r eth0 sudo dhclient eth0
问题:路由不可达
诊断步骤:
# 检查网关可达性 ping 192.168.1.1 # 检查目标路由 ip route get 8.8.8.8 # 检查mtu ip link show eth0 | grep mtu
总结
路由与 ip 管理命令速查
| 任务 | 命令 |
|---|---|
| 查看路由 | ip route show, route -n |
| 添加路由 | sudo ip route add 10.0.0.0/24 via 192.168.1.1 |
| 删除路由 | sudo ip route del 10.0.0.0/24 |
| 查看ip | ip addr show, ifconfig |
| 刷新arp | sudo ip neigh flush all |
| 路由跟踪 | traceroute, mtr |
最佳实践
- 定期清理:每月执行路由和 arp 缓存清理
- 监控变更:使用审计工具跟踪网络配置变化
- 文档记录:维护网络拓扑和 ip 分配文档
- 自动化:创建脚本定期检查网络健康状态
- 安全加固:禁用不必要的路由功能和服务
通过以上方法,您可以有效管理和维护 linux 系统的路由和 ip 地址资源,确保网络的高效稳定运行。
以上就是linux查看路由与ip地址占用情况的写操作指南的详细内容,更多关于linux路由与ip地址占用情况的资料请关注代码网其它相关文章!
发表评论