快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

同乐城娱乐注册送38:Linux环境下基于策略的路由



择要

本文以大年夜量实例为根基先容了基于Linux2.2的强大年夜路由功能,它供给的路由功能是很多路由器产品都是难以匹敌的,假如斟酌到它的免费性,它的机能价格比更是没有任何产品可以比拟。

今朝在谋略机收集中应用的传统路由算法都是根据IP包目的地址进行路由选择.然而在现实利用中常常有这样的需求:进行路由选择时不仅仅根据数据报的目的地址,而且根据数据报的其他一些特点如:源地址、IP协议、传输层端口,以致是数据包的负载部分内容,这种类型的路由选择被称作基于策略的路由。

在Linux中,从2.1版本的内核开始就实现了对基于策略的路由的支持,它是经由过程应用路由策略数据库(RPDB,routing policy database)替代传统的、基于目的地址的路由表来实现的。RPDB经由过程包孕的一些规则来选定相宜的IP路由。这些规则可能会包孕很多各类不合类型的健值(key),是以这些规则没有默认的特定序次,规则查找序次或规则优先级都是由收集或系统治理员设定的。

Linux的RPDB是一个由数字优先级值进行排序的线性规则列表。RPDB能匹配数据报源地址、目的地址、TOS、进入接和fwmark值等。每个路由策略规则由一个选择器和一个动作唆使组成。RPDB按照优先级递增的顺序被扫描,RPDB包孕的每条规则的选择器被利用于数据报的源地址、目的地址、进入接口、TOS和fwmark值。若数据报匹配该规则对应于该规则的动作被履行。若动作成功返回,则规则输出将是一个有效的路由或是路由查找掉败唆使;否则查找RPDB的下一条规则。

被选择器和一个数据报匹配成功,会履行哪些动作呢?路由软件的标准动作一样平常是选择下一跳地址和输出接口,可以称这种动作为“匹配&设置”类型动作。然而Linux采取了加倍机动的措施,在Linux中有多种动作可供选择。默认的动作是查询特定的基于目的地址的路由表。

是以“匹配&设置”动作就成为Linux路由选择的最简单环境。Linux支持多个路由表,每个路由表都包孕多条路由信息。也便是Linux的每个路由表都相称于其他操作系统的系统路由表。Linux支持多达255个路由表。(Linux 2.2.12 支持255个路由表,255个汇聚域和232个策略规则优先级。

对付Linux2.1/2.2,启动时内核将包孕一个由三条策略规则组成的默认的RPDB,不雅察这些默认规则的一个措施是应用敕令来列出系统的所有规则:

root@netmonster ip rule list

0:   from all lookup local

32766: from all lookup main

32767: from all lookup default

下面的默认规则在对付理解启动繁杂路由系统是异常紧张的。

首先是最高档其余优先级规则,规则策略0:

规则0: 优先级 0 选择器 = 匹配任何数据报

动作=不雅察本地路由表(routing table local),ID为255。

local表是保留路由表,包孕了到本地和广播地址的路由。规则0是特殊的规则,弗成被删除或改动。

规则 32766: 优先级 32766 选择器 = 匹配所稀有据报

动作 = 不雅察主路由表(ro同乐城娱乐注册送38uting table main), ID为254。

main路由表是默认的标准路由表,其包孕所有非策略路由,main表是寄放旧的路由敕令(route敕令)创建的路由。而且任何由ip route敕令创建的没有明确指定路由表的路由都被加入到该路由表中。该规则不能被删除和被其他规则覆盖。

规则 32767: 优先级 32767 选择器 = 匹配所稀有据报

动作 = 不雅察默认路由表(routing table default),ID为253。

default路由表是空的,为着末处置惩罚(post-processing)所预留,若前面的默认规则没有选择该数据报时保留用作着末的处置惩罚。该规则可以被删除。

该敕令将添加IP地址192.168.2.2/24到eth0网卡上.

下面看看ip route敕令:

root@netmonster# ip route help

Usage: ip route { list | flush } SELECTOR

ip route get ADDRESS [ from ADDRESS iif STRING ]

[ oif STRING ] [ tos TOS ]

ip route { add | del | replace | change | append | replace |

monitor} ROUTE

SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ]

[ table TABLE_ID ] [ proto RTPROTO ]

[ type TYPE ] [ scope SCOPE ]

ROUTE := NODE_SPEC [ INFO_SPEC ]

NODE_同乐城娱乐注册送38SPEC := [ TYPE ] PREFIX [ tos TOS ]

[ table TABLE_ID ] [ proto RTPROTO ]

[ scope SCOPE ] [ metric METRIC ]

INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...

NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS

OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]

[ rtt NUMBER ] [ rttvar NUMBER ]

[ window NUMBER] [ cwnd NUMBER ] [ ssthresh REALM ]

[ realms REALM ]

TYPE := [ unica同乐城娱乐注册送38st | local | broadcast | multicast | throw |

unreachable | prohibit | blackhole | nat ]

TABLE_ID := [ local | main | default | all | NUMBER ]

SCOPE := [ host | link | global | NUMBER ]

FLAGS := [ equalize ]

NHFLAGS := [ onlink | pervasive ]

RTPROTO := [ kernel | boot | static | NUMBER ]

Example - ip route add 192.168.2.0/24 via 192.168.1.254

应该留意的是,在运行任何这些敕令都必要发送“ip route flush cache"敕令来刷新路由缓冲,否则敕令在一段光阴今后才会生效,这段光阴的是非依附于路由表布局的大年夜小和负载。

将上面的例子必要的敕令放在一路就如下所示:

ip rule del priority 5000

ip rule add from 192.168.2.0/24 priority 5000 prohibit

ip route flush cache

这个敕令流畅过首先删除5000号规则来确保当前系统没有该规则然后再添加新的5000号规则。假如系统原先不存在5000号的规则则会返回一个差错信息。然后添加5000号规则并经由过程清空运行时的路由缓存来重置RPDB,则新规则将顿时孕育发生感化。

多路由表和IP地址

为了完全理解基于策略路由的应用,就必要学会应用Linux多路由表和IP地址,这包括多个方面的常识,下面经由过程示例来加以阐明。

当得到ip对象,你可能会留意到在宣布中有一个名为etc的子目录,此中有一个名为iproute2的子目录。应该拷贝该子目录到/etc目录下或在/etc目录下创建iproute2子目录。该目录包孕用来命名路同乐城娱乐注册送38由表及策略路由布局的其他方面的文件。在该目录中创建rt_tables文件,此中示例文件一样平常已经包孕了某些内容,并为路由表1供给了示例名。

下面首先编辑该文件来创建多少鄙人面的示例中应用的表:

# reserved values

#

255   local

254   main

253   default

0    unspec

#

# local

#

1    goodnet1

2    goodnet2

3    badnet1

4    badnet2

5    internet

可以看到经由过程为路由表命名,就可以应用表数字ID或表名来引用路由表。例如下面两个敕令将对同一个路由表进行操作:

为接口设置如下地址:

192.168.1.1

192.168.1.128

192.168.3.1

在添加192.168.1.0/24的两个地址时必要关闭自动路由添加,而容许对192.168.3.0/24时容许自动路由添加功能。

ip addr add 192.168.1.1/32 dev eth0

ip addr add 192.168.1.128/32 dev eth0

ip addr add 192.168.3.1/24 dev eth0

这时刻假如不雅察主路由表则会发明内核只为收集192.168.3.0/24添加了路由表,而没有为收集192.168.1.0/24添加路由。

经由过程ip addr敕令可以不雅察系统的所有IP地址信息:

root@netmonster# ip addr

1: lo:mtu 3924 qdisc noqueue

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 brd 127.255.255.255 scope host lo

2: eth0:

mtu 1500 qdisc pfifo_fast qlen 100

link/ether 00:00:49:61:32:bc brd ff:ff:ff:ff:ff:ff

inet 192.168.1.1/32 scope global eth0

inet 192.168.1.128/32 scope global eth0

inet 192.168.3.1/24 scope global eth0

下面我们将评论争论几个加倍繁杂的例子。

例 4:多路由表和IP地址

Linux内核路由代码最强大年夜的特色便是基于策略的路由和应用多地址、多路由表的结合应用。下面的示例评论争论的是一个充当路由器的连接三个不合的收集的系统。

参考文章开首的图片,可以看到核心系统的外部接口连接了三个外部收集。每个收集都有自己的路由器和自己的IP地址空间。然则此中的两个地址空间是重叠的,是以增添了环境的繁杂性。这里我们设置如下规则的路由表来实现互联:

假如有三个路由表,则必要添加一条规则来不雅察数据报目的。而反省数据报目的地址是标准路由的功能。为什么要对每种源、目的的组合都必要一个规则呢?经由过程应用路由表,可以实现定义只管即便少的规则来达到目的。当然 系统的机动性容许经由过程多条措施来实现这样的路由。可以根据在自己的喜爱来抉择那种规划最得当:

ip rule add from 192.168.1.32/27 to 172.18.0.0/16 pref 15000 table goodnet1

ip rule add from 192.168.2.64/28 to 10.10.0.0/16 pref 15001 table goodnet2

ip rule add from 192.168.1.0/24 pref 15002 table goodnet1

ip rule add from 192.168.2.0/24 pref 15003 table goodnet2

上面的例子中应用了优先级参数设定来定义数据报匹配规则的顺序。现在来看看当一个数据报从内部收集颠末路由系统时会发生什么环境。首先,它会经由过程优先级为0的规则反省;随后会碰到优先级为15000的规则,若匹配则会被goodnet1这个路由表进行操作,否则将会分手颠末15001、15002、15003的规则。它肯定会被15000-15003几个规则中的一个所匹配。

下面为了阐明定义路由布局的机动性,我们将从别的一个角度来办同乐城娱乐注册送38理这个问题。Linux路由器的具体环境如下:

eth0 - DMZ ethernet - addresses: 10.254.254.2/30, 172.17.1.128/24

eth1 - Internal A - addresses: 192.168.1.254/24

eth2 - Internal B - addresses: 192.168.2.254/24

首先假设从新开始,将从新定义路由和规则,首先编辑/etc/iproute2/rt_tables:

# reserved values

#

255   local

254   main

253   default

0    unspec

#

# Local Tables

#

1    int1

2    int2

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: