基于Netfilter框架的策略路由的设计与实现

2021-01-10 18:37徐明月
科学与生活 2021年28期

徐明月

摘要:静态路由是在网络管理员手工配置的路由信息,在存在多条有效线路的情况下,无法根据线路上实际的流量压力分摊到其他线路上,会导致某一条线路流量过大或拥塞,而其他线路空闲的现象。针对上述问题,文章基于Netfilter框架提出一种策略路由的模型,在该方法中允许用户预先设置策略并应用到路由器接口。实验结果表明,用户通过配置策略路由能够指导报文正确转发,并有效提高了网络的稳定性与可靠性。

关键词:Netfilter框架;转发信息库;策略路由

1引言

在网络通信过程中,路由器充当了重要的角色,工作在OSI参考模型中的网络层。在数据包传输过程中,路由器将通过的非本机报文通过路由算法选择最佳的路径将数据包转发出去。路由器将通过路由图决定如何对需要路由的数据包进行处理,路由图决定了一个数据包的下一跳转发路由器[1]。

2Netfilter框架

Netfilter是Linux系统网络层的基础处理框架,它提供了一个抽象、通用化的框架,作为中间件,为每种网络协议(IPv4、IPv6等)定义一套钩子函数。Ipv4定义了5个钩子函数,这些钩子函数在数据报流过协议栈的5个关键点被调用,也就是说,IPv4协议栈上定义了5个“允许垂钓点”。在每一个“垂钓点”,都可以让Netfilter放置一个“鱼钩”,把经过的网络包(Packet)钓上来,与相应的规则链进行比较,并根据审查的结果,决定包的下一步命运,即是被原封不动地放回IPv4协议栈,继续向上层递交;还是经过一些修改,再放回网络;或者干脆丢弃掉[2,3]。

3策略路由处理机制

3.1 策略路由的网络模型

策略路由通过识别网络数据包IP头部的目的地址、源地址、目的端口、源端口等信息,进行匹配用户预先配置的策略来实现指导IP报文转发的技术。结合因特网协议栈五层划分方式,从图2策略路由位置图可知,策略路由路由处于网络层,即报文经链路层处理结束后,在网络层中进行开始策略路由的业务。

3.2 策略路由的处理框架

在NF_IP_LOCAL_IN、NF_IP_LOCAL_OUT阶段中均已通过目的地址和端口索引获取到了FIB信息,故在策略路由设计时,考虑在不改变原有Netfilter框架的基础上进行策略路由业务处理,将该处理流程嵌套在原有转发流程中。在Netfilter框架中,通过返回路由信息的基础上影响报文的转发路径。[4,5]

3.3 策略路由业务处理

(1) 策略路由规则

在策略路由配置中,可区分为匹配规则和应用规则二类。访问控制列表(Access Control Lists,ACL)是应用到路由器接口的指令列表,用来控制端口进出的数据包。通过报文信息与访问控制列表的匹配与否可以实现过滤数据包的目的,进而实现对路由器和网络的安全控制[8]。

(2) 策略路由结构体设计

结合fib_config结构体的分析,可以设计策略路由配置结构体global_cfg,需包含访问控制列表、用户指定的出端口和指定下一跳应用规则。

(3) 策略路由处理流程

4策略路由配置及验证

测试网络组网如图3所示,路由器以太网口ETH1/1 网络地址为192.168.1.1/24连接到内部局域网,以太网口ETH1/2 网络地址为122.102.72.123/24,与外部网络中服务器122.102.72.116相连。

1)路由上的相关配置

在 路由器上配置路由策略aaa,并配置下一跳地址为140.1.1.2。

[Router]route-policy aaa permit node 1

[Router-route-policy]apply ip-address next-hop 140.1.1.2

[interface Ethernet1/1] ip policy aaa

2)PC端的三台机器上分别添加如下静态路由配置。

route ADD 122.102.72.116 mask 255.255.255.0 192.168.1.1

3)在服务器添加静态路由配置

route ADD 192.168.1.0 mask 255.255.255.0 122.102.72.123

4)验证

在配置策略路由和未配置策略路由的二种情况下,通过ping操作验证。由于路由器上不存在PC端到服务器的路由,故要实现从PC访问服务器必须通过路由策略。

执行ping 122.102.72.116显示结果:

Pinging 122.102.72.116 with 32 bytes of data:

Reply from 122.102.72.116: bytes=32 time<1ms TTL=128

Reply from 122.102.72.116: bytes=32 time<1ms TTL=128Request time out.

Reply from 122.102.72.116: bytes=32 time<1ms TTL=128

Ping statistics for 122.102.72.116:

Packets: Sent = 8, Received = 8, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:Minimum = 0ms, Maximum = 0ms, Average = 0ms

5結束语

策略路由业务处理时基于Netfilter框架进行的,用户在使用该业务时,需要根据实际情况预先设置策略规则,并将创建好的策略应到设备接口上,这样才能达到影响报文转发路径的目的。当设备使用策略路由业务后,由于策略路由处理会涉及IP报文信息提取,IP报文重新校验和重算等处理,势必影响报文转发的效率,后续工作可从转发效率提升角度继续研究。

参考文献

[1] 肖捷. 静态路由选择配置方案的设计[J]. 计算机工程, 2000.

[2] 张国防, 陈雪丽. Linux防火墙脚本化管理研究[J]. 网络安全技术与应用, 2019(4):2..

[3] 王宇, 温占考, 王卫东,等. 校园网络IPv4/IPv6威胁监测与处置体系的规划与实践[J]. 深圳大学学报:理工版, 2020, 37(S01):5.

[4] 何林、况鹏、王士诚、刘莹、李星、彭书萍. 基于"IPv6+"的应用感知网络(APN6)[J]. 电信科学, 2020, v.36(08):40-46.

[5]姚晓宇, 赵晨. Linux内核防火墙Netfilter实现与应用研究[J]. 计算机工程, 2003, 29(8):3.