Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92797
  • 博文数量: 20
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-21 15:56
文章分类

全部博文(20)

文章存档

2013年(1)

2010年(1)

2007年(14)

2006年(4)

我的朋友
最近访客

分类: LINUX

2007-01-23 08:15:08

一、 概述

 

1.1内核开始,linux就已经具有包过虑功能了,在2.0的内核中我们采用ipfwadm来操作内核包过虑规则。之后在2.2内核中,采用了大家并不陌生的ipchains来控制内核包过虑规则。现在最新linux内核版本是2.4.1,在2.4内核中我们不再使用ipchains,而是采用一个全新的内核包过虑管理工具--iptables

这个全新的内核包过虑工具将使用户更易于理解其工作原理,更容易被使用,当然也将具有更为强大的功能。

 

我们说过iptables只是一个管理内核包过虑的工具,iptables

可以加入、插入或删除核心包过滤表格()中的规则。实际上真正来执行这些过虑规则的是netfilter(Linux

核心中一个通用架构)及其相关模块(iptables模块和nat模块),下面我们一起来看看netfilter的工作原理。

 

二、 原理

netfilterLinux

核心中一个通用架构,它提供了一系列的""(tables),每个表由若干""(chains)组成,而每条链中可以有一条或数条规则(rule)组成。我们可以这样来理解,netfilter是表的容器,表是链的容器,而链又是规则的容器(如图一所示)

 

 

系统缺省的表为"filter",该表中包含了INPUTFORWARDOUTPUT

3个链。每一条链中可以有一条或数条规则,每一条规则都是这样定义的“如果数据包头符合这样的条件,就这样处理这个数据包”。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件:

如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。最后,如果该数据包不符合该链中任一条规则的话,系统就会根据该链预先定义的策略(policy)来处理该数据包。

 

 

数据包在filter表中的流程如图二所示。有数据包进入系统时,系统首先根据路由表决定将数据包发给哪一条链,则可能有三种情况:

 

1.

如果数据包的目的地址是本机,则系统将数据包送往INPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;

2.

如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往FORWARD链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;

3.

如果数据包是由本地系统进程产生的,则系统将其送往OUTPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉。

 

从以上我们可以看出,netfilter比起以前的ipfwadmipchains思路上清晰了好多,也好理解了好多,这对于原先对ipfwadmipchains总是感到一头雾水的用户来说无疑是一个福音。

 

 

三、 准备工作

 

1. 系统需求

netfilter要求内核版本不低于2.3.5,在编译新内核时,要求选择和netfilter相关的项目。这些项目通常都是位于“Networking

options”子项下。以2.4.0内核为例,我们应该选中的项目有:

 

 

Kernel/User netlink socket

[ ] Routing messages

<*> Netlink device emulation

 

Network packet filtering (replaces ipchains)

.......

 

然后,在“IP: Netfilter Configuration ---->”选中:

 

Connection tracking (required for masq/NAT)

FTP protocol support

IP tables support (required for filtering/masq/NAT)

limit match support

MAC address match support

Netfilter MARK match support

Multiple port match support

TOS match support

Connection state match support

Packet filtering

REJECT target support

Full NAT

MASQUERADE target support

REDIRECT target support

Packet mangling

TOS target support

MARK target support

LOG target support

ipchains (2.2-style) support

ipfwadm (2.0-style) support

 

其中最后两个项目可以不选,但是如果你比较怀念ipchains或者ipfwadm,你也可以将其选中,以便在2.4内核中使用ipchiansipfwadm。但是需要注意的是,iptables是和ipchians/ipfwadm相对立的,在使用iptables的同时就不能同时使用ipchains/ipfwadm。编译成功后,这些模块文件都位于以下目录中

/lib/modules/2.4.0/kernel/net/ipv4/netfilter

 

编译2.4.0的新内核时还应该注意要在“Processor type and

features”中选择和你的CPU相对应的正确的CPU选项,否则新内核可能无法正常工作。

 

2. 载入模块

 

要使用iptables,还必须载入相关模块。可以使用以下命令载入相关模块:

#modprobe iptable_tables

modprobe命令会自动载入指定模块及其相关模块。iptables_filter模块会在运行时自动载入。

iptales实现包过虑型防火墙()分类:iptables

一、 概述

 

1.1内核开始,linux就已经具有包过虑功能了,在2.0的内核中我们采用ipfwadm来操作内核包过虑规则。之后在2.2内核中,采用了大家并不陌生的ipchains来控制内核包过虑规则。现在最新linux内核版本是2.4.1,在2.4内核中我们不再使用ipchains,而是采用一个全新的内核包过虑管理工具--iptables

这个全新的内核包过虑工具将使用户更易于理解其工作原理,更容易被使用,当然也将具有更为强大的功能。

 

我们说过iptables只是一个管理内核包过虑的工具,iptables

可以加入、插入或删除核心包过滤表格()中的规则。实际上真正来执行这些过虑规则的是netfilter(Linux

核心中一个通用架构)及其相关模块(iptables模块和nat模块),下面我们一起来看看netfilter的工作原理。

 

二、 原理

netfilterLinux

核心中一个通用架构,它提供了一系列的""(tables),每个表由若干""(chains)组成,而每条链中可以有一条或数条规则(rule)组成。我们可以这样来理解,netfilter是表的容器,表是链的容器,而链又是规则的容器(如图一所示)

 

 

系统缺省的表为"filter",该表中包含了INPUTFORWARDOUTPUT

3个链。每一条链中可以有一条或数条规则,每一条规则都是这样定义的“如果数据包头符合这样的条件,就这样处理这个数据包”。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件:

如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。最后,如果该数据包不符合该链中任一条规则的话,系统就会根据该链预先定义的策略(policy)来处理该数据包。

 

 

数据包在filter表中的流程如图二所示。有数据包进入系统时,系统首先根据路由表决定将数据包发给哪一条链,则可能有三种情况:

 

1.

如果数据包的目的地址是本机,则系统将数据包送往INPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;

2.

如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往FORWARD链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;

3.

如果数据包是由本地系统进程产生的,则系统将其送往OUTPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉。

 

从以上我们可以看出,netfilter比起以前的ipfwadmipchains思路上清晰了好多,也好理解了好多,这对于原先对ipfwadmipchains总是感到一头雾水的用户来说无疑是一个福音。

 

 

三、 准备工作

 

1. 系统需求

netfilter要求内核版本不低于2.3.5,在编译新内核时,要求选择和netfilter相关的项目。这些项目通常都是位于“Networking

options”子项下。以2.4.0内核为例,我们应该选中的项目有:

 

 

Kernel/User netlink socket

[ ] Routing messages

<*> Netlink device emulation

 

Network packet filtering (replaces ipchains)

.......

 

然后,在“IP: Netfilter Configuration ---->”选中:

 

Connection tracking (required for masq/NAT)

FTP protocol support

IP tables support (required for filtering/masq/NAT)

limit match support

MAC address match support

Netfilter MARK match support

Multiple port match support

TOS match support

Connection state match support

Packet filtering

REJECT target support

Full NAT

MASQUERADE target support

REDIRECT target support

Packet mangling

TOS target support

MARK target support

LOG target support

ipchains (2.2-style) support

ipfwadm (2.0-style) support

 

其中最后两个项目可以不选,但是如果你比较怀念ipchains或者ipfwadm,你也可以将其选中,以便在2.4内核中使用ipchiansipfwadm。但是需要注意的是,iptables是和ipchians/ipfwadm相对立的,在使用iptables的同时就不能同时使用ipchains/ipfwadm。编译成功后,这些模块文件都位于以下目录中

/lib/modules/2.4.0/kernel/net/ipv4/netfilter

 

编译2.4.0的新内核时还应该注意要在“Processor type and

features”中选择和你的CPU相对应的正确的CPU选项,否则新内核可能无法正常工作。

 

2. 载入模块

 

要使用iptables,还必须载入相关模块。可以使用以下命令载入相关模块:

#modprobe iptable_tables

modprobe命令会自动载入指定模块及其相关模块。iptables_filter模块会在运行时自动载入。

iptales实现包过虑型防火墙()分类:iptables

一、 概述

 

1.1内核开始,linux就已经具有包过虑功能了,在2.0的内核中我们采用ipfwadm来操作内核包过虑规则。之后在2.2内核中,采用了大家并不陌生的ipchains来控制内核包过虑规则。现在最新linux内核版本是2.4.1,在2.4内核中我们不再使用ipchains,而是采用一个全新的内核包过虑管理工具--iptables

这个全新的内核包过虑工具将使用户更易于理解其工作原理,更容易被使用,当然也将具有更为强大的功能。

 

我们说过iptables只是一个管理内核包过虑的工具,iptables

可以加入、插入或删除核心包过滤表格()中的规则。实际上真正来执行这些过虑规则的是netfilter(Linux

核心中一个通用架构)及其相关模块(iptables模块和nat模块),下面我们一起来看看netfilter的工作原理。

 

二、 原理

netfilterLinux

核心中一个通用架构,它提供了一系列的""(tables),每个表由若干""(chains)组成,而每条链中可以有一条或数条规则(rule)组成。我们可以这样来理解,netfilter是表的容器,表是链的容器,而链又是规则的容器(如图一所示)

 

 

系统缺省的表为"filter",该表中包含了INPUTFORWARDOUTPUT

3个链。每一条链中可以有一条或数条规则,每一条规则都是这样定义的“如果数据包头符合这样的条件,就这样处理这个数据包”。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件:

如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。最后,如果该数据包不符合该链中任一条规则的话,系统就会根据该链预先定义的策略(policy)来处理该数据包。

 

 

数据包在filter表中的流程如图二所示。有数据包进入系统时,系统首先根据路由表决定将数据包发给哪一条链,则可能有三种情况:

 

1.

如果数据包的目的地址是本机,则系统将数据包送往INPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;

2.

如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往FORWARD链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;

3.

如果数据包是由本地系统进程产生的,则系统将其送往OUTPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉。

 

从以上我们可以看出,netfilter比起以前的ipfwadmipchains思路上清晰了好多,也好理解了好多,这对于原先对ipfwadmipchains总是感到一头雾水的用户来说无疑是一个福音。

 

 

三、 准备工作

 

1. 系统需求

netfilter要求内核版本不低于2.3.5,在编译新内核时,要求选择和netfilter相关的项目。这些项目通常都是位于“Networking

options”子项下。以2.4.0内核为例,我们应该选中的项目有:

 

 

Kernel/User netlink socket

[ ] Routing messages

<*> Netlink device emulation

 

Network packet filtering (replaces ipchains)

.......

 

然后,在“IP: Netfilter Configuration ---->”选中:

 

Connection tracking (required for masq/NAT)

FTP protocol support

IP tables support (required for filtering/masq/NAT)

limit match support

MAC address match support

Netfilter MARK match support

Multiple port match support

TOS match support

Connection state match support

Packet filtering

REJECT target support

Full NAT

MASQUERADE target support

REDIRECT target support

Packet mangling

TOS target support

MARK target support

LOG target support

ipchains (2.2-style) support

ipfwadm (2.0-style) support

 

其中最后两个项目可以不选,但是如果你比较怀念ipchains或者ipfwadm,你也可以将其选中,以便在2.4内核中使用ipchiansipfwadm。但是需要注意的是,iptables是和ipchians/ipfwadm相对立的,在使用iptables的同时就不能同时使用ipchains/ipfwadm。编译成功后,这些模块文件都位于以下目录中

/lib/modules/2.4.0/kernel/net/ipv4/netfilter

 

编译2.4.0的新内核时还应该注意要在“Processor type and

features”中选择和你的CPU相对应的正确的CPU选项,否则新内核可能无法正常工作。

 

2. 载入模块

 

要使用iptables,还必须载入相关模块。可以使用以下命令载入相关模块:

#modprobe iptable_tables

modprobe命令会自动载入指定模块及其相关模块。iptables_filter模块会在运行时自动载入。

阅读(1121) | 评论(0) | 转发(0) |
0

上一篇:iptables用法详解

下一篇:iptables使用实例

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