1 / 22
文档名称:

NAT机制分析.docx

格式:docx   大小:236KB   页数:22页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

NAT机制分析.docx

上传人:cjc201601 2021/6/1 文件大小:236 KB

下载得到文件列表

NAT机制分析.docx

文档介绍

文档介绍:NAT技术的分析与测试
NAT概述
NAT,英文全称为Network Address Translation,即网络地址转换。通过该技 术手段,可使得局域网内部网络中使用内部地址,并利用在网关处的特定设置, 将内部地址替换成公用地址,从而保证内网主机可以正常的上网。 NAT可以使
多台计算机共享Internet连接,这一功能很好地解决了 IPv4地址枯竭的问题。
PREROUTING » FORWARD POSTROUTING
CONNTRACK . — SNAT …一一. CONNTRACK
图1 NAT工作原理
NAT服务需要依赖于iptables来进行网络包的转发,其中iptables是一个类 似于防火墙的软件,能进行网络报的过滤和转发。若内网某机器需要使用 NAT
服务发送网络包的时,网络包通过 “Prerouting” - >" Forward^” Postrouting
将网络包转发出网卡。其中,Prerouting过程无操作,Forward过程进行包的转 发,Postrouting过程更改网络包的源地址为 NAT服务主机的ip地址。
Netfilter/iptables 技术分析
Net巾lter/iptables是实现NAT的基础。它可以为内核防火墙模块提供有状态 或无状态的包过滤服务,从而实现 NAT、IP伪装等,也可以因高级路由或连接 状态管理的需要而修改IP头信息。故首先介绍Netfilter/iptableso
说明:本文与内核相关的全部代码都是基于 ,iptables相关的源代
。本文的流程图中有两种类型的箭头, ►表示
函数调用关系,1 表示执行流程。
Netfilter/iptables 简介
Netfilter/iptables的I P信息包过滤系统由两个组件 Netfilter和iptables组成。 Netfilter是内核中的一组提供网络协议栈控制的程序框架,它通过在钩子 hook
注册回调函数,使得每个经过该 hook的数据包都会调用这些函数,完成一定的 控制功能。,是用户空间中用于管理包过 滤及NAT等的工具。它设置防火墙的过滤规则,并将规则添加到内核空间的特 定信息包过滤表内的链中,通过 Nefilter框架hook点的回调函数完成对数据报 进行过滤、地址转换、处理等操作。而 NAT正是通过在用户态设置的iptables 过滤规则,使得从内网流出的包在通过 hook点时被捕获,修改其包头信息,以
转发到外网。
Netfilter/iptables-IPv4 体系结构
Netfilter 的 HOOK 机制:
Netfilter通用框架不依赖具体的协议,不同的网络协议在 IP协议栈建立了 5
个HOOK点,在每个HOOK点对数据包进行有选择的处理。
内核任何模块可对一个或多个钩子函数进行注册,实现挂接,这样当某个数 据包传递给Netfilter时,内核检测是否有模块对该协议和钩子函数进行注册。若 注册了,则调用内核模块注册时的回调函数,模块便有机会检查并且在数据报经 过这些钩子函数时被调用,从而模块可以修改、丢弃这些数据报及指示 Netfilter
图1 IPV4中的处理点
表1 Netfilter框架中各个 hook作用
内容 作用
将该数据报传入用户空间,并向Ne情lter返回相应的值,以确定是否正常传输数 据包,还是丢弃数据包。
hook序号
- ZU NUT CDU 当进入系统的数据包在进行路由选择
H00K1 NF_INET_PRE_ROUTING 之前进行的防火墙检测处理
经由路由选择后的数据包,在传给本地
HOOK2 NF_ INET _LOCAL_IN 进程处理之前所进行的防火墙检测处

HOOK3 NF_ INET _FORWARD 在经由路由转发后的数据包处理
本地进程产生的数据包在进行路由选~
HOOK4 NF INET LOCAL OUT 七又一力、什<-,降 而bk,
- - 一 择N刖进行的防火墙检测处理
该处理点对应于进入防火墙的数据包
「 CC/二Z匚R匚T DCCT 口CIEZC和由防火墙本地进程产生的数据包,这
HOOK5 NF_INET_POST_ROUTING些数据包在出防火墙时进行的控制处 理
第一个ROUTE针对收到的包做路由检查并判断这个包是需要转发还是发往
上层的包,第二个ROUTE是针对发出包进行的路由。NF_ INET_PRE_ROUTING 点对所有传入IP层的数据包进行检查,在这之前,有关数血包的血本、飞度、
校验和等正确性检查已经