6人参与 • 2025-10-27 • Linux
在 linux 系统中,查看路由表和 ip 地址占用情况是网络管理的基础任务。以下是专业的分析和清理方法:
ip route show # 或 route -n
# 显示路由表详细信息 ip -d route show # 按协议过滤路由 ip route show proto kernel # 内核路由 ip route show proto static # 静态路由
| 字段 | 含义 | 示例 |
|---|---|---|
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 addr show # 或 ifconfig
# 查看 arp 表(ip-mac 映射) ip neigh show arp -n # 查看网络连接 ss -tunap netstat -tunap
# 扫描本地网络 nmap -sn 192.168.1.0/24 # 使用 arp-scan sudo arp-scan -l --interface=eth0
# 删除特定路由 sudo ip route del 10.0.0.0/24 via 192.168.1.1 # 删除所有非永久路由 sudo ip route flush cache
# 清除整个 arp 表 sudo ip neigh flush all # 清除特定 ip 的 arp 记录 sudo ip neigh del 192.168.1.50 dev eth0
# 释放 ip sudo dhclient -r eth0 # 重新获取 ip sudo dhclient eth0
# 列出所有网络命名空间 ip netns list # 清理无效命名空间 sudo ip netns delete old_namespace
# 基本路由跟踪 traceroute google.com # 高级路由诊断 mtr google.com
# 查看所有 tcp 连接 ss -t -a # 查看 udp 连接 ss -u -a # 按状态过滤 ss -t state established
# 实时监控路由变化 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[调整防火墙]
| 系统 | 配置文件 |
|---|---|
| debian/ubuntu | /etc/network/interfaces |
| rhel/centos | /etc/sysconfig/network-scripts/ifcfg-* |
| 通用 | /etc/netplan/*.yaml |
# 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
# 关闭源路由 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
# 禁用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
# 启用arp验证 sudo sysctl -w net.ipv4.conf.all.arp_ignore=1 sudo sysctl -w net.ipv4.conf.all.arp_announce=2
#!/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
# 记录路由变更 sudo apt install auditd sudo auditctl -w /etc/network/interfaces -p wa -k network_config
# 使用 iftop 监控流量 sudo iftop -i eth0 # 使用 nload 监控带宽 nload eth0
# 查看网络相关日志 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
解决方案:
# 检测冲突 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 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 |
通过以上方法,您可以有效管理和维护 linux 系统的路由和 ip 地址资源,确保网络的高效稳定运行。
以上就是linux查看路由与ip地址占用情况的写操作指南的详细内容,更多关于linux路由与ip地址占用情况的资料请关注代码网其它相关文章!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论