【 tulaoshi.com - Linux 】
Linux策略路由
Linux策略路由策略性路由 策略性是指对于IP包的路由是以网络管理员根据需要定下的一些策略为主要依据进行路由的。例如我们可以有这样的策略:“所有来直自网A的包,选择X路径;其他选择Y路径”,或者是“所有TOS为A的包选择路径F;其他选者路径K”。 Cisco 的网络操作系统 (Cisco IOS) 从11.0开始就采用新的策略性路由机制。而Linux是在内核2.1开始采用策略性路由机制的。策略性路由机制与传统的路由算法相比主要是引入了多路由表以及规则的概念。 多路由表(multiple Routing Tables) 传统的路由算法是仅使用一张路由表的。但是在有些情形底下,我们是需要使用多路由表的。例如一个子网通过一个路由器与外界相连,路由器与外界有两条线路相连,其中一条的速度比较快,一条的速度比较慢。对于子网内的大多数用户来说对速度并没有特殊的要求,所以可以让他们用比较慢的路由;但是子网内有一些特殊的用户却是对速度的要求比较苛刻,所以他们需要使用速度比较快的路由。如果使用一张路由表上述要求是无法实现的,而如果根据源地址或其它参数,对不同的用户使用不同的路由表,这样就可以大大提高路由器的性能。 规则(rule) 规则是策略性的关键性的新的概念。我们可以用自然语言这样描述规则,例如我门可以指定这样的规则: 规则一:“所有来自192.16.152.24的IP包,使用路由表10, 本规则的优先级别是1500” 规则二:“所有的包,使用路由表253,本规则的优先级别是32767” 我们可以看到,规则包含3个要素: 什么样的包,将应用本规则(所谓的SELECTOR,可能是filter更能反映其作用); 符合本规则的包将对其采取什么动作(ACTION),例如用那个表; 本规则的优先级别。优先级别越高的规则越先匹配(数值越小优先级别越高)。 策略性路由的配置方法 传统的linux下配置路由的工具是route,而实现策略性路由配置的工具是iproute2工具包。这个软件包是由Alexey Kuznetsov开发的,软件包所在的主要网址为ftp://ftp.inr.ac.ru/ip-routing/。这里简单介绍策略性路由的配置方法,以便能更好理解第二部分的内容。详细的使用方法请参考Alexey Kuznetsov写的 ip-cfref文档。策略性路由的配置主要包括接口地址的配置、路由的配置、规则的配置。 接口地址的配置IP Addr 对于接口的配置可以用下面的命令进行:Usage: ip addr [ add | del ] IFADDR dev STRING 例如:router># ip addr add 192.168.0.1/24 broadcast 192.168.0.255 label eth0 dev eth0 上面表示,给接口eth0赋予地址192.168.0.1 掩码是255.255.255.0(24代表掩码中1的个数),广播地址是192.168.0.255 路由的配置IP Route Linux最多可以支持255张路由表,其中有3张表是内置的: 表255 本地路由表(Local table) 本地接口地址,广播地址,已及NAT地址都放在这个表。该路由表由系统自动维护,管理员不能直接修改。 表254 主路由表(Main table) 如果没有指明路由所属的表,所有的路由都默认都放在这个表里,一般来说,旧的路由工具(如route)所添加的路由都会加到这个表。一般是普通的路由。 表253 默认路由表 (Default table) 一般来说默认的路由都放在这张表,但是如果特别指明放的也可以是所有的网关路由。 表 0 保留 路由配置命令的格式如下:Usage: ip route list SELECTORip route { change | del | add | append | replace | monitor } ROUTE 如果想查看路由表的内容,可以通过命令: ip route list table table_number 对于路由的操作包括change、del、add 、append 、replace 、 monitor这些。例如添加路由可以用:router># ip route add 0/0 via 192.168.0.4 table mainrouter># ip route add 192.168.3.0/24 via 192.168.0.3 table 1 第一条命令是向主路由表(main table)即表254添加一条路由,路由的内容是设置192.168.0.4成为网关。 第二条命令代表向路由表1添加一条路由,子网192.168.3.0(子网掩码是255.255.255.0)的网关是192.168.0.3。 在多路由表的路由体系里,所有的路由的操作,例如网路由表添加路由,或者在路由表里寻找特定的路由,需要指明要操作的路由表,所有没有指明路由表,默认是对主路由表(表254)进行操作。而在单表体系里,路由的操作是不用指明路由表的。 规则的配置IP Rule 在Linux里,总共可以定义 个优先级的规则,一个优先级别只能有一条规则,即理论上总共可以有 条规则。其中有3个规则是默认的。命令用法如下:Usage: ip rule [ list | add | del ] SELECTOR ACTIONSELECTOR := [ from PREFIX ] [ to PREFIX ] [ tos TOS ][ dev STRING ] [ pref NUMBER ]ACTION := [ table TABLE_ID ] [ nat ADDRESS ][ prohibit | reject | unreachable ][ flowid CLASSID ]TABLE_ID := [ local | main | default | new | NUMBER 首先我们可以看看路由表默认的所有规则:root@netmonster# ip rule list0: from all lookup local32766: from all lookup main32767: from all lookup de