Chinaunix首页 | 论坛 | 博客
  • 博客访问: 420290
  • 博文数量: 117
  • 博客积分: 3003
  • 博客等级: 中校
  • 技术积分: 1221
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-16 14:11
文章分类

全部博文(117)

文章存档

2011年(7)

2010年(110)

我的朋友

分类: LINUX

2010-08-19 10:40:25

TMPFS
tmpfs:可以动态的调节大小:mount -o remount ...。ramfs是创建tmpfs的模板,但是tmpfs可以利用swap空间和做限制检查。tmpfs和ramdisk(/dev/ram*)相似, 但是ramdisk不能swap并且不能动态改变大小。
用途:
1. 内核内部通常会挂载一个tmpfs用来共享匿名映射和SYSV共享内存。挂载不依赖于CONFIG_TMPFS,如果没有配置CONFIG_TMPFS,tmpfs的用户可见部分不会编译,但是内部机制总是存在的。
2. glibc 2.0默认tmpfs挂载在/dev/shm,方便posix共享内存,所以在fstab中加入
tmpfs    /dev/shm    tmpfs    defaults    0 0
3. tmpfs有三个优选参数,size: 缺省值是内存的一半;nr_blocks:和size相同,但是以块(PAGE_CACHE_SIZE)为单位,nr_inodes:最大inode数 目,缺省值是物理页面数目的一般,如果有highmem时为lowmem页面数目。参数后缀 k, m or g for kilo, mega and giga。size可用%后缀来限制tmpfs的百分比,缺省50%。
4. numa支持,可以选择分配策略;

IPTABLES

1. 处理流程
数据包接收
Step(步骤) Table(表) Chain(链) Comment(注释)
1

在线路上传输(比如,Internet)
2

进入接口 (比如, eth0)
3 mangle PREROUTING 这个链用来mangle数据包,比如改变TOS等
4 nat PREROUTING 这个链主要用来做DNAT。不要在这个链做过虑操作,因为某 些情况下包会溜过去。
5

路由判断,比如,包是发往本地的,还是要转发的。
6 mangle INPUT 在路由之后,被送往本地程序之前,mangle数据包。
7 filter INPUT 所有以本地为目的的包都要经过这个链,不管它们从哪儿 来,对这些包的过滤条件就设在这里。
8

到达本地程序了(比如,服务程序或客户程序)

注意,相比以前(译者注:就是指ipchain)现在数据包是由INPUT链过,而不是FORWARD链。这样更符合 逻辑。刚看上去可能不太好理解,但仔细想想就会恍然大悟的。

Table 3-2. 以本地为源的包
Step Table Chain Comment
1

本地程序(比如,服务程序或客户程序)
2

路由判断,要使用源地址,外出接口,还有其他一些信息。
3 mangle OUTPUT 在这儿可以mangle包。建议不要在这儿做过滤,可能有副作 用哦。
4 nat OUTPUT 这个链对从防火墙本身发出的包进行DNAT操作。
5 filter OUTPUT 对本地发出的包过滤。
6 mangle POSTROUTING 这条链主要在包DNAT之后(译者注: 作者把这一次DNAT称作 实际的路由,虽然在前面有一次路由。对于本地的包,一旦它被生成,就必须经过路由代码的处理,但这个 包具体到哪儿去,要由NAT代码处理之后才能确定。所以把这称作实际的路由。),离开本地之前,对包 mangle。有两种包会经过这里,防火墙所在机子本身产生的包,还有被转发的包。
7 nat POSTROUTING 在这里做SNAT。但不要在这里做过滤,因为有副作用,而且 有些包是会溜过去的,即使你用了DROP策略。
8

离开接口(比如: eth0)
9

在线路上传输(比如,Internet)

在这个例子中,我们假设一个包的目的是另一个网络中的一台机子。让我们来看看这个包的旅程:

Table 3-3. 被转发的包

Step Table Chain Comment
1

在线路上传输(比如,Internet)
2

进入接口(比如, eth0)
3 mangle PREROUTING mangle数据包,,比如改变TOS等。
4 nat PREROUTING 这个链主要用来做DNAT。不要在这个链做过虑操作,因为某 些情况下包会溜过去。稍后会做SNAT。
5

路由判断,比如,包是发往本地的,还是要转发的。
6 mangle FORWARD 包继续被发送至mangle表的 FORWARD链,这是非常特殊的情 况才会用到的。在这里,包被mangle(还记得mangle的意思吗)。这次mangle发生在最初的路由判断之后, 在最后一次更改包的目的之前(译者注:就是下面的FORWARD链所做的,因其过滤功能,可能会改变一些包 的目的地,如丢弃包)。
7 filter FORWARD 包继续被发送至这条FORWARD链。只有需要转发的包才会走 到这里,并且针对这些包的所有过滤也在这里进行。注意,所有要转发的包都要经过这里,不管是外网到内 网的还是内网到外网的。在你自己书写规则时,要考虑到这一点。
8 mangle POSTROUTING 这个链也是针对一些特殊类型的包(译者注:参考第6步, 我们可以发现,在转发包时,mangle表的两个链都用在特殊的应用上)。这一步mangle是在所有更改包的目 的地址的操作完成之后做的,但这时包还在本地上。
9 nat POSTROUTING 这个链就是用来做SNAT的,当然也包括Masquerade(伪 装)。但不要在这儿做过滤,因为某些包即使不满足条件也会通过。
10

离开接口(比如: eth0)
11

又在线路上传输了(比如,LAN)

就如你所见的,包要经历很多步骤,而且它们可以被阻拦在任何一条链上,或者是任何有问题的地方。 我们的主要兴趣是iptables的概貌。注意,对不同的接口,是没有什么特殊的链和表的。所有要经防火墙/ 路由器转发的包都要经过FORWARD链。

mangle表

TOS:不要设置发往Internet的包,除非你打算依靠TOS来路由,比如用iproute2。

TTL:操作用来改变数据包的生存时间域,我们可以让所有数据包只有一个特殊的TTL。它的存在有 一个很好的理由,那就是我们可以欺骗一些ISP。为什么要欺骗他们呢?因为他们不愿意让我们共享 一个连接。那些ISP会查找一台单独的计算机是否使用不同的TTL,并且以此作为判断连接是否被共享 的标志。

MARK:用来给包设置特殊的标记。iproute2能识别这些标记,并根据不同的标记(或没有标记) 决定不同的路由。用这些标记我们可以做带宽限制和基于请求的分类。MARK没有改变包数据,而是在内核打了个标识。

filter表

filter 表用来过滤数据包,我们可以在任何时候匹配包并过滤它们。 我们就是在这里根据包的内容对包做DROP或ACCEPT的。当然,我们也可以预先在其他地方做些过滤,但是这 个表才是设计用来过滤的。几乎所有的target都可以在这儿使用。大量具体的介绍在后面,现在你只要知道 过滤工作主要是在这儿完成的就行了。

状态机制

在iptables里,包是和被跟踪连接的四种不同状态有关的。它们是NEWESTABLISHEDRELATEDINVALID。 后面我们会深入地讨论每一个状态。使用--state匹配操作,我们能很容易地控制 “谁或什么能发起新的会话”。

iptables和Netfilter,因为没有包的重组,连接跟踪就不能正常工作。现在重组已经整合入 conntrack,并且在conntrack启动时自动启动。不要关闭重组功能,除非你要关闭连接跟踪。

除了本地产生的包由OUTPUT链处理外,所有连接跟踪都是在PREROUTING链里进行处理的,意思就是, iptables会在PREROUTING链里从新计算所有的状态。如果我们发送一个流的初始化包,状态就会在OUTPUT链 里被设置为NEW,当我们收到回应的包时,状态就会在PREROUTING链里被设置为ESTABLISHED。如果第一个包不是本地产生的,那就会在PREROUTING链里被设置为NEW状 态。综上,所有状态的改变和计算都是在nat表中的PREROUTING链和OUTPUT链里完成的。

连接跟踪表能容纳多少记录是被一个变量控制的,它可由内核中的ip- sysctl函数设置。默认值取决于你的内存大小,128MB可以包含8192条目录,256MB是16376条。你也可以在 /proc/sys/net/ipv4/ip_conntrack_max里查看、设置。


IPTABLE规则的保存和恢复
iptables-save和iptables-restore.
阅读(839) | 评论(0) | 转发(0) |
0

上一篇:YAFFS2概述

下一篇:busybox网络配置

给主人留下些什么吧!~~