ARP 与路由
ARP 与路由:地址解析与邻居表、静态路由与策略路由、二层与三层排障命令。
arp 命令
基本写法:查看 ARP 缓存
arp -a
# 查看所有 ARP 缓存条目
arp -a
基本写法:查看指定主机 ARP
arp <主机>
# 查看指定 IP 的 ARP 条目
arp 192.168.1.1
基本写法:数字格式查看
arp -an
# 不解析主机名查看 ARP
arp -an
基本写法:添加静态 ARP
arp -s <IP> <MAC>
# 添加静态 ARP 绑定
arp -s 192.168.1.1 00:11:22:33:44:55
基本写法:删除 ARP 条目
arp -d <IP>
# 删除指定 IP 的 ARP 条目
arp -d 192.168.1.1
基本写法:指定接口操作
arp -i <接口> -a
# 查看 eth0 接口的 ARP
arp -i eth0 -a
ip neigh 邻居管理
基本写法:查看邻居表
ip neigh
# 查看 ARP 邻居表
ip neigh
基本写法:简写形式
ip n
# 简写查看邻居表
ip n
基本写法:查看指定接口邻居
ip neigh show dev <接口>
# 查看 eth0 接口的邻居
ip neigh show dev eth0
基本写法:添加邻居条目
ip neigh add <IP> lladdr <MAC> dev <接口>
# 添加邻居条目
ip neigh add 192.168.1.100 lladdr 00:11:22:33:44:55 dev eth0
基本写法:删除邻居条目
ip neigh del <IP> dev <接口>
# 删除邻居条目
ip neigh del 192.168.1.100 dev eth0
基本写法:刷新邻居缓存
ip neigh flush dev <接口>
# 刷新 eth0 接口的邻居缓存
ip neigh flush dev eth0
route 路由管理
基本写法:查看路由表
route -n
# 数字格式查看路由表
route -n
基本写法:添加默认网关
route add default gw <网关>
# 添加默认网关
route add default gw 192.168.1.1
基本写法:删除默认网关
route del default gw <网关>
# 删除默认网关
route del default gw 192.168.1.1
基本写法:添加主机路由
route add -host <IP> gw <网关>
# 添加到指定主机的路由
route add -host 10.0.0.1 gw 192.168.1.254
基本写法:添加网络路由
route add -net <网络>/<前缀> gw <网关>
# 添加到指定网络的路由
route add -net 10.0.0.0/24 gw 192.168.1.254
基本写法:拒绝路由
route add -net <网络> reject
# 拒绝到指定网络的路由
route add -net 10.0.0.0/24 reject
ip route 路由管理
基本写法:查看路由表
ip route
# 查看完整路由表
ip route
基本写法:简写形式
ip r
# 简写查看路由表
ip r
基本写法:添加默认路由
ip route add default via <网关>
# 添加默认路由
ip route add default via 192.168.1.1
基本写法:添加静态路由
ip route add <网络>/<前缀> via <网关>
# 添加到 10.0.0.0/24 的路由
ip route add 10.0.0.0/24 via 192.168.1.254
基本写法:通过接口添加路由
ip route add <网络>/<前缀> dev <接口>
# 通过 eth1 添加路由
ip route add 172.16.0.0/16 dev eth1
基本写法:设置路由度量值
ip route add <网络>/<前缀> via <网关> metric <值>
# 添加带度量值的路由
ip route add 10.0.0.0/24 via 192.168.1.254 metric 100
基本写法:删除路由
ip route del <网络>/<前缀>
# 删除指定路由
ip route del 10.0.0.0/24
基本写法:修改路由
ip route change <网络>/<前缀> via <网关>
# 修改现有路由
ip route change 10.0.0.0/24 via 192.168.1.253
基本写法:替换路由
ip route replace <网络>/<前缀> via <网关>
# 替换或添加路由
ip route replace 10.0.0.0/24 via 192.168.1.254
路由查询
基本写法:查询到目标的路由
ip route get <目标IP>
# 查询到 8.8.8.8 的路由
ip route get 8.8.8.8
基本写法:从指定源查询路由
ip route get <目标IP> from <源IP>
# 从指定源 IP 查询路由
ip route get 8.8.8.8 from 192.168.1.100
基本写法:指定 TOS 查询路由
ip route get <目标IP> tos <TOS>
# 指定 TOS 查询路由
ip route get 8.8.8.8 tos 0x10
策略路由
基本写法:查看路由策略
ip rule
# 查看策略路由规则
ip rule
基本写法:基于源 IP 的策略路由
ip rule add from <源IP> table <表号>
# 来自 192.168.1.100 的流量走表 100
ip rule add from 192.168.1.100 table 100
基本写法:基于目标 IP 的策略路由
ip rule add to <目标IP> table <表号>
# 到 10.0.0.1 的流量走表 200
ip rule add to 10.0.0.1 table 200
基本写法:基于端口的策略路由
ip rule add sport <端口> table <表号>
# 来自 80 端口的流量走表 100
ip rule add sport 80 table 100
基本写法:设置规则优先级
ip rule add from <IP> table <表号> priority <优先级>
# 设置规则优先级为 100
ip rule add from 192.168.1.100 table 100 priority 100
基本写法:删除策略路由规则
ip rule del from <源IP> table <表号>
# 删除策略路由规则
ip rule del from 192.168.1.100 table 100
路由表管理
基本写法:查看指定路由表
ip route show table <表号>
# 查看表 100 的路由
ip route show table 100
基本写法:添加路由到指定表
ip route add <网络>/<前缀> via <网关> table <表号>
# 添加路由到表 100
ip route add default via 192.168.1.1 table 100
基本写法:清空路由表
ip route flush table <表号>
# 清空表 100 的所有路由
ip route flush table 100
多路径路由
基本写法:添加多路径路由
ip route add <网络>/<前缀> nexthop via <网关1> nexthop via <网关2>
# 添加多路径负载均衡路由
ip route add 10.0.0.0/24 nexthop via 192.168.1.1 weight 1 nexthop via 192.168.1.2 weight 1
基本写法:指定多路径接口
ip route add <网络>/<前缀> nexthop dev <接口1> nexthop dev <接口2>
# 通过多个接口负载均衡
ip route add default nexthop dev eth0 nexthop dev eth1
路由持久化
基本写法:Ubuntu 持久化路由
# /etc/netplan/01-routes.yaml
# Netplan 持久化路由配置
network:
version: 2
ethernets:
eth0:
routes:
- to: 10.0.0.0/24
via: 192.168.1.254
- to: 172.16.0.0/16
via: 192.168.1.253
基本写法:CentOS 持久化路由
# /etc/sysconfig/network-scripts/route-<接口>
# 持久化路由配置
echo "10.0.0.0/24 via 192.168.1.254 dev eth0" > /etc/sysconfig/network-scripts/route-eth0
基本写法:RHEL 8+ 持久化路由
nmcli connection modify <连接> +ipv4.routes "<网络>/<前缀> <网关>"
# 通过 nmcli 添加持久路由
nmcli connection modify eth0 +ipv4.routes "10.0.0.0/24 192.168.1.254"
nmcli connection up eth0
ARP 排查
基本写法:检查 ARP 冲突
arping -D <IP>
# 检测 IP 地址冲突
arping -D 192.168.1.100
基本写法:清除 ARP 缓存
ip neigh flush all
# 清除所有 ARP 缓存
ip neigh flush all
基本写法:查看 ARP 请求
tcpdump -i eth0 arp
# 抓取 ARP 协议流量
tcpdump -i eth0 arp
基本写法:统计 ARP 表
ip neigh | wc -l
# 统计 ARP 表条目数
ip neigh | wc -l