【转帖LINUX】netfilter中的conntrack内核阅读笔记(1)
2008-07-07 22:04状 态检测(stateful inspection)是由CheckPoint公司最先提出的,可算是防火墙技术的一项突破性变革,把包过滤的快速性和代理的安全性很好地结合在一起, 目前已经是防火墙最流行的检测方式。状态检测的根本思想是对所有网络数据建立“连接”的概念,此“连接”是面向“连接”的协议之“连接”的扩展,对非连接 协议数据也可以建立虚拟连接。既然是连接,必然是有一定的顺序的,通信两边的连接状态也是有一定顺序进行变化的。防火墙的状态检测就是事先确定好连接的合 法过程模式,如果数据过程符合这个模式,则说明数据是合法正确的,否则就是非法数据,应该被丢弃。
2.6内核的Linux中的防火墙代码netfilter中实现了状态检测 (stateful inspection)检测技术:Linux为每一个经过网络堆栈的数据包,生成一个新的连接记录项(Connection entry)。此后,所有属于此连接的数据包都被唯一地分配给这个连接,并标识连接的状态。linux在netfilter的hook点上为 contrack定义了如下几个挂接点,用来处理流经的ip包:
NF_IP_PRE_ROUTING : ip_conntrack_defrag -> ip_conntrack_in
NF_IP_LOCAL_IN : ip_conntrack_help -> ip_confirm
NF_IP_LOCAL_OUT : ip_conntrack_defrag -> ip_conntrack_local
NF_IP_POST_ROUTING :ip_conntrack_help -> ip_confirm
其中ip_contrack_defrag用来处理报文分 片;ip_conntrack_in和ip_conntrack_local(内部调用ip_conntrack_in)用于conntrack为每个连 接建立模式记录,ip_conntrack,并判断报文是否符合合法的模式,不符合则丢弃;ip_conntrack_help是针对使用动态协议和端口 的连接设计的数据结构,如一个ftp连接针对数据流和控制流分别用到了两个端口,;ip_confirm判断报文所属的模式ip_conntrack是否 已经存在系统哈希中,否则加入到系统的hash中。
Netfilter使用一张全局hash表来定义报文的连接状态,它定义在ip_conntrack_core.c中,用指针struct list_head *ip_conntrack_hash来描述该表。这个hash表的大小是有限制的,在模块装载的时候确定,可以由用户指定,由ip_con
相关文档:
linux—select详解
select系统调用时用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。
关于文件句柄,其实就是一个整数,通过socket函数的声明就明白了:
int socket(int domain, int type, int protocol);
我们最熟悉的句柄是0、1、2 ......
今天在Gentoo下安装了VirtualBox虚拟了一个XP,这样需要迅雷等一些只有For Windows下的软件时候不用必须重新启动切换到Windows下了。
显然两个OS之前的文件交换也很关键,解决方案也非常的简单。
1)在Gentoo下安装openssh
emerge openssh
2)在windows客户机上安装FileZilla
......
建立ARM+Linux应用程序调试环境
Gdb+gdbserver+insight环境的搭建
1. 下载gdb源代码 http://ftp.gnu.org/gnu/gdb/
2. 配置安装gdb+gdbser
$ tar jxvf gdb-6.6.tar.bz2
$ cd x/gdb
$ ./configure --target=arm-linux --prefix=/usr/lo ......
6. Devices
A device driver hides the hardware device’s communication
protocols from the operating system and allows the system to interact with the
device through a standardized interface.
Processes can communicate with a device driver via
file-like objects.
6.1 Device Types
A c ......
apache的源码安装
将压缩包解压之后进入相应的目录
./configure \ #--------------------预编译命令
"--prefix=/usr/local/apache" \ #--------------------安装路径为“/usr/local/apache”
"--with-included-apr" \
"--enable-so" \ #--------------------开启相应的扩展模块 ......