欢迎来到天天文库
浏览记录
ID:22376358
大小:56.50 KB
页数:5页
时间:2018-10-28
《linux下的nat服务器架设实战(上)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Linux下的NAT服务器架设实战(上) NAT英文全称是Netasquerade),FreeBSD中的NATD或Windoangle不经常使用还在开发当中。我们下面主要介绍Nat表来实现NAT功能。 (1)用户使用iptables命令在用户空间设置NAT规则,通过使用用户空间iptables命令,可以构建用户自己的定制NAT规则。所有规则存储在内核空间的nat表中。根据规则所处理的信息包类型,将规则分组在链中。要做SNAT的信息包被添加到POSTROUTING链中。要做DNAT的信息包被添加到PREROUTI
2、NG链中。直接从本地出站的信息包的规则被添加到OUTPUT链中。 (2)内核空间接管NAT工作 图3是数据包穿越nat表的流程图 图3数据包穿越nat表的流程图 做过NAT操作的数据包的地址就被改变了,当然这种改变是根据我们的规则进行的。属于一个流的包只会经过这12下一页....,。个表一次。如果第一个包被允许做NAT或Masqueraded,那么余下的包都会自动地被做相同的操作。也就是说,余下的包不会再通过这个表,一个一个的被NAT,而是自动地完成。这就是我们为什么不应该在这个表中做任何过滤的主要原因。P
3、REROUTING链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链改变本地产生的包的目的地址。图4是数据包穿越整个filter/iptables的流程图。 图4数据包穿越整个filter/iptables的流程图 图5是filter钩子函数在NAT模式(module)下的使用情况示意图。 图5filter钩子函数在NAT模式(module)下的使用情况示意图 (3)NAT工作步骤: DNAT:若包是被送往PREROUTING链的,并且匹配了规则,则
4、执行DNAT或REDIRECT目标。为了使数据包得到正确路由,必须在路由之前进行DNAT。 路由:内核检查信息包的头信息,尤其是信息包的目的地。 处理本地进程产生的包:对nat表OUTPUT链中的规则实施规则检查,对匹配的包执行目标动作。 SNAT:若包是被送往POSTROUTING链的,并且匹配了规则,则执行SNAT或MASQUERADE目标。系统在决定了数据包的路由之后才执行该链中的规则。 3.与NAT相关的iptables命令格式 (1)命令格式: ip
5、tables[-tnat]CMD[chain][rule-matcher][-jtarget] -tnat:表示操作nat表 CMD:为操作命令 chain:为链名 rule-matcher:为规则匹配器 target:为目标动作 说明:iptables的语法非常复杂,要查看该工具的完整语法,应该查看其手册页。iptables中的指令,均需严格区分大小写。 (2)指定操作命令: -A:在所选链的链尾加入一条规则; -D:从所选链中删除一条匹配的规则; -R:在所选链中替换一条匹配的规则; -I:在
6、链内某个位置插入一条新规则; -L:列出指定链的所有规则。 (3)规则匹配器 指定规则匹配器 匹配源地址 使用--source或--src或-s参数 匹配目的地址 使用--destination或--dst或-s参数 匹配网络接口 对于PREROUTING链,只能用-i参数匹配进来的网络接口 对于POSTROUTING链和OUTPUT链,只能用-o参数匹配出去的网络接口 匹配协议及端口 使用-p选项来匹配协议 对于udp和tcp协议,还可以用--sport和--dport选项来分别匹配源端口和
7、目的端口。 (4)动作目标 指定与NAT有关的目标动作: 用于设置IP伪装: -jMASQUERADE 用于设置端口转发: -jREDIRECT--to-portport-number Linux网络地址转换(NAT)也可以使用iptables进行配置。从根本上来说,NAT是一种使用连接将来自本地子网地址的封装报文在发送(在OUTPUT链上)之前作为外部WAN地址进行跟踪的方法。执行NAT的网关/路由器需要记住哪台本地机器连接到了哪台远程机器上,当报文从远程机器上返回时,它需要对这种地址转换反向进行解析。
8、 尽管从过滤器的角度来看,我们可以简单地认为NAT并不存在。我们指定的规则应该使用真正的本地地址,而不必关心NAT如何封装它之后将其呈现给外部世界。 总结:本文介绍了NAT原理以及NAT在Linux应用环境下的实现,下篇文章笔者将结合具体应用情况构建Linux下的NAT服务器,敬请关注!上一页12....,。
此文档下载收益归作者所有