iproute2_examples

本文介绍如何使用IPRoute2进行网络负载均衡配置。包括通过优先级队列实现不同速率的流量分配,以及如何根据数据包源地址进行流量整形等高级配置。还介绍了如何通过路由表来区分不同客户群的数据流向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iproute2_examples


Load balancing

For example you have 2 links to ISP, one is 64Kbit and another is metered (you pay for traffic) much higher speed.

Latency of links must be very similar, otherwise in this example, packets from one session can come in different order to final destination!

tc qdisc del dev eth0.5 root
tc qdisc add dev eth0.5 handle 1: root prio
tc filter add dev eth0.5 parent 1: protocol ip prio 10 u32 \
  match ip src 195.69.208.252/32 flowid 1:16 \
  action police rate 64kbit burst 64k conform-exceed pipe/continue \
  action mirred egress redirect dev eth0.6

This example will send 64kbit/s only over eth0.5, and remaining over eth0.6


Shaping by realm

In given example, you have 3 links to upstream ISP, they are all located in one ethernet segment, and on one network card. It will become kind of difficult to shape them conventional way. Let's say you have multiple incoming interfaces also, eth0 (customers1) and eth1 (customers2). Also you have connection to 3 ISP, ISP1 - you use only to peer with kernel.org (let's say 204.152.191.0/24), ISP2 must be used as highly reliable, for customers who is paying a lot, and coming over eth0. ISP3 used for cheap customers, who is coming from eth1.

Shaper:

tc qdisc del dev eth2 root
tc qdisc add dev eth2 root handle 1: htb default 2000

tc class add dev eth2 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit quantum 1600

tc class add dev eth2 parent 1:1 classid 1:100 htb rate 4000Kbit ceil 4000Kbit quantum 1600 # ISP N1, kernel org peering
tc qdisc add dev eth2 parent 1:100 handle 100: bfifo limit 100000 #Buffering 512Kb, or 1 second of data
tc filter add dev eth2 parent 1:0 protocol ip prio 100 route to 10 classid 1:100 #Realm 10

tc class add dev eth2 parent 1:1 classid 1:200 htb rate 4000Kbit ceil 4000Kbit quantum 1600 # ISP N2
tc qdisc add dev eth2 parent 1:200 handle 200: bfifo limit 512000 #Buffering 512Kb, or 1 second of data
tc filter add dev eth2 parent 1:0 protocol ip prio 100 route to 11 classid 1:200

tc class add dev eth2 parent 1:1 classid 1:300 htb rate 3000Kbit ceil 3000Kbit quantum 1600 # ISP N3
tc qdisc add dev eth2 parent 1:300 handle 300: bfifo limit 384000 #Also 1 second of data
tc filter add dev eth2 parent 1:0 protocol ip prio 100 route to 12 classid 1:300

Routing

#Reset old tables
ip rule del dev eth0 table 200
ip rule del dev eth1 table 201
ip rule add dev eth0 table 200
ip rule add dev eth1 table 201
#Table 200 - customers1
ip route add table 200 204.152.191.0/24 via 10.95.95.1 realm 10 #Local Peering to kernel.org
ip route add table 200 0.0.0.0/0 via 10.95.95.2 realm 11 #Default, for customers1, ISP N2
#Table 201 - customers2
ip route add table 201 204.152.191.0/24 via 10.95.95.1 realm 10 #Local Peering to kernel.org
ip route add table 201 0.0.0.0/0 via 10.95.95.3 realm 12 #Default, for customers2, ISP N3
Groups:
<think>首先,用户的问题是:“请问route 命令使用方法及示例”,这翻译成英文是“How to use the route command and examples”。用户意图是了解或使用操作系统中的路由命令,可能用于网络配置或故障排查。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 参考站内引用: - 引用[1]: Linux常用命令之route命令详解。route 是一个不可或缺的命令行工具,帮助管理员有效地管理和优化网络连接。掌握它的基本用法以及一些高级特性,可以大大提高网络管理和故障排查的工作效率。如果想要了解更多关于 route 命令的信息,可以通过查阅手册页 (man route) 获取详细的文档和支持的参数列表。[^1] - 引用[2]: route / ip route 命令。route命令是Linux系统中用于显示和操作IP路由表的命令。它的主要作用是创建一个静态路由,让指定的主机或网络通过一个网络接口进行通信。下面是route命令的详细解释和使用示例: 命令格式 route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface] 命令功能 [^2] - 引用[3]: linux中route命令的用法,linux 中route命令使用方法。route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mod] [reinstate] [[dev] If][^3] - 引用[4]: Vivado Design Suite中route_design命令脚本示例。本文详细介绍了四个route_design命令的示例脚本,这些脚本需要添加到工程的约束文件.xdc中,结果保存在工程文件中的runs\impl_1中的runme.log文件。 一、示例脚本1 route_design write_checkpoint -force $outputDir/post_route report_timing_summary -file $outputDir/post_route_timing_summary.rpt [^4] - 引用[5]: route 命令介绍和使用案例。route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface] 常用选项 选项描述-f清除所有网关入口的路由表。-p与 add 命令一起使用时,使路由具有永久性。-n不解析名称,直接使用 IP 地址。-v显示详细的处理信息。-C显示路由缓存。 命令功能 查看路由表:不带参数执行 route 命令将显示当前的路由表。添加路由:使用 add 参数可以添加新的路由。删除路由:使用 del 参数可以删除现有的路由。 [^5] 用户意图是了解route命令的使用方法和示例。引用[4]是关于Vivado Design Suite的route_design命令,这可能与用户问题无关,因为用户提到了操作系统中的路由命令。所以,我应该聚焦于Linux或类似系统中的route命令。 关键引用: - 引用[2]和[3]提供了命令格式和用法。 - 引用[5]详细介绍了选项和功能。 回答结构: - 结构清晰,逐步解决问题。 - 先介绍route命令的基本概念。 - 然后解释命令格式。 - 接着列出常用选项。 - 最后给出使用示例。 - 结束时生成相关问题。 使用中文回答。 引用标识:在回答中引用的段落末尾自然地添加引用标识,例如[^1]。由于这些引用是站内提供的,我需要将它们融入回答中。 生成相关问题:在回答结束后,添加一个“相关问题”部分,列出几个相关问题。 大纲回答: 1. **介绍route命令**:简要解释route命令的作用,基于引用[1]和[2]。 - 例如:route命令是Linux系统中用于显示和操作IP路由表的工具,帮助管理员管理网络连接[^1][^2]。 2. **命令格式**:基于引用[2]和[5],描述基本格式。 - 格式:route [-选项] [命令] [目标] [mask 子网掩码] [网关] [metric 度量] [if 接口] 3. **常用选项**:列出选项,基于引用[5]。 - -f: 清除所有网关入口的路由表。 - -p: 与add命令一起使用,使路由永久性(在Windows中)。 - -n: 不解析名称,直接使用IP地址。 - -v: 显示详细的处理信息。 - -C: 显示路由缓存。 4. **命令功能**:基于引用[5],解释主要功能。 - 查看路由表:不带参数执行route。 - 添加路由:使用add参数。 - 删除路由:使用del参数。 5. **使用示例**:提供几个常见示例。 - 示例1: 查看当前路由表。 - 示例2: 添加一个静态路由。 - 示例3: 删除一个路由。 - 示例4: 使用选项如-n。 6. **注意事项**:提醒用户查阅手册页获取更多信息,基于引用[1]。 7. **相关问题**:生成3-5个相关问题。 确保回答真实可靠:基于提供的引用,route命令主要在Linux系统中,但用户可能泛指操作系统。引用[5]提到了Windows中的-p选项,所以我可以提到跨平台差异。 最终输出格式: - 使用Markdown。 - 代码块用于命令示例。 - 引用标识在相关句子末尾。 - 结束时添加“相关问题”部分。</think>### route 命令使用方法及示例 route 命令是 Linux 和类 Unix 系统中用于管理 IP 路由表的命令行工具,它允许管理员查看、添加或删除静态路由,从而优化网络连接和故障排查。掌握其基本用法可以显著提高网络管理效率[^1]。下面我将逐步介绍命令格式、常用选项、功能及实用示例,确保内容清晰可靠。注意:route 命令在不同系统(如 Linux 和 Windows)中语法略有差异,但核心功能相似;本文以 Linux 环境为主,建议通过 `man route` 命令查阅手册页获取详细文档[^1]。 #### 1. **命令基本格式** route 命令的标准格式基于引用[2]和[5]: ```bash route [-选项] [命令] [目标] [mask 子网掩码] [网关] [metric 度量] [if 接口] ``` - **参数说明**: - `命令`:指定操作类型,如 `add`(添加路由)、`del`(删除路由)或默认查看路由表。 - `目标`:可以是 IP 地址(如 `192.168.1.0`)或主机名。 - `mask 子网掩码`:定义网络范围(如 `255.255.255.0`)。 - `网关`:指定数据包转发的下一跳地址(如 `192.168.1.1`)。 - `metric 度量`:设置路由优先级(数值越小优先级越高)。 - `if 接口`:指定网络接口(如 `eth0`)。 #### 2. **常用选项** 基于引用[5],route 命令支持多个选项来增强功能: - `-f`:清除所有网关入口的路由表(谨慎使用,可能中断网络连接)。 - `-p`:与 `add` 命令一起使用,使路由永久性(在 Windows 中有效;Linux 需通过配置文件实现)。 - `-n`:不解析主机名,直接显示 IP 地址(加快输出速度)。 - `-v`:显示详细的处理信息(用于调试)。 - `-C`:显示路由缓存内容。 这些选项帮助管理员根据需求定制操作,提高命令灵活性[^5]。 #### 3. **主要功能** route 命令的核心功能包括: - **查看路由表**:直接执行 `route` 或 `route -n` 显示当前路由信息,包括目标网络、网关和接口[^5]。 - **添加路由**:使用 `add` 命令创建新路由,适用于静态配置。 - **删除路由**:使用 `del` 命令移除现有路由,优化网络路径。 这些功能使 route 成为网络配置和故障排查的必备工具,尤其在企业或服务器环境中[^2]。 #### 4. **实用示例** 以下是常见场景下的命令示例,基于引用[3]和[5]。所有示例在 Linux 终端中执行,需 root 权限(使用 `sudo`)。 - **示例 1:查看当前路由表** ```bash route -n # 使用 -n 选项避免名称解析,提高效率 ``` **输出示例**: ``` Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 ``` 此命令显示默认网关和本地网络路由,帮助快速诊断连接问题[^5]。 - **示例 2:添加静态路由** 假设需要将目标网络 `10.0.0.0/24` 通过网关 `192.168.1.2` 路由: ```bash route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.2 dev eth0 ``` **说明**:`-net` 指定网络目标,`gw` 定义网关,`dev eth0` 绑定接口。添加后,使用 `route -n` 验证新路由是否生效。 - **示例 3:删除路由** 删除上述添加的路由: ```bash route del -net 10.0.0.0 netmask 255.255.255.0 ``` **注意**:确保目标网络和子网掩码匹配,避免误删关键路由。 - **示例 4:添加主机路由并设置度量值** 为特定主机(如 `203.0.113.5`)添加路由,并设置优先级(metric=50): ```bash route add -host 203.0.113.5 gw 192.168.1.3 metric 50 ``` 使用 `-v` 选项查看详细过程:`route -v add ...`。 #### 5. **注意事项** - **权限要求**:route 命令通常需要 root 权限(在终端中使用 `sudo`)。 - **持久性**:在 Linux 中,添加的路由默认临时生效(重启后消失)。如需永久保存,需编辑配置文件如 `/etc/network/interfaces` 或使用 `ip route` 命令的持久化选项[^2]。 - **跨平台差异**:Windows 中使用 `route` 时,`-p` 选项可使路由永久性;在 Linux 中,推荐使用 `ip route` 命令作为现代替代(如 `ip route add`)[^5]。 - **故障排查**:如果命令报错(如 "SIOCADDRT: Network is unreachable"),检查网关可达性或接口状态。使用 `ping` 测试连通性[^1]。 route 命令是网络管理的基础工具,通过以上示例,您可以快速上手。更多高级特性(如路由策略或 IPv6 支持)可参考手册页 `man route`[^1][^3]。 ### 相关问题 1. 如何使 Linux 中的 route 添加的路由永久生效? 2. route 命令和 ip route 命令有什么区别? 3. 在网络故障排查中,如何结合 route 命令和 ping/traceroute? 4. 在 Windows 系统中如何使用 route 命令? 5. 如何监控路由表的变化以检测网络攻击? [^1]: Linux常用命令之route命令详解。route 是一个不可或缺的命令行工具,帮助管理员有效地管理和优化网络连接。掌握它的基本用法以及一些高级特性,可以大大提高网络管理和故障排查的工作效率。如果想要了解更多关于 route 命令的信息,可以通过查阅手册页 (man route) 获取详细的文档和支持的参数列表。 [^2]: route / ip route 命令。route命令是Linux系统中用于显示和操作IP路由表的命令。它的主要作用是创建一个静态路由,让指定的主机或网络通过一个网络接口进行通信。 [^3]: linux中route命令的用法,linux 中route命令使用方法。route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mod] [reinstate] [[dev] If]。 [^5]: route 命令介绍和使用案例。route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface] 常用选项 选项描述-f清除所有网关入口的路由表。-p与 add 命令一起使用时,使路由具有永久性。-n不解析名称,直接使用 IP 地址。-v显示详细的处理信息。-C显示路由缓存。 命令功能 查看路由表:不带参数执行 route 命令将显示当前的路由表。添加路由:使用 add 参数可以添加新的路由。删除路由:使用 del 参数可以删除现有的路由。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值