文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>用iptales实现包过虑型防火墙

用iptales实现包过虑型防火墙

时间:2007-01-23  来源:vincentzpf

一、 概述

 

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

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

 

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

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

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

 

二、 原理

netfilter是Linux

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

 

 

系统缺省的表为"filter",该表中包含了INPUT、FORWARD和OUTPUT

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

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

 

 

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

 

1.

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

2.

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

3.

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

 

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

 

 

三、 准备工作

 

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 ---->”选中:

 

<M> Connection tracking (required for masq/NAT)

<M> FTP protocol support

<M> IP tables support (required for filtering/masq/NAT)

<M > limit match support

<M> MAC address match support

<M> Netfilter MARK match support

<M> Multiple port match support

<M> TOS match support

<M> Connection state match support

<M> Packet filtering

<M> REJECT target support

<M> Full NAT

<M> MASQUERADE target support

<M> REDIRECT target support

<M> Packet mangling

<M> TOS target support

<M> MARK target support

<M> LOG target support

<M> ipchains (2.2-style) support

<M> ipfwadm (2.0-style) support

 

其中最后两个项目可以不选,但是如果你比较怀念ipchains或者ipfwadm,你也可以将其选中,以便在2.4内核中使用ipchians或ipfwadm。但是需要注意的是,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的工作原理。

 

二、 原理

netfilter是Linux

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

 

 

系统缺省的表为"filter",该表中包含了INPUT、FORWARD和OUTPUT

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

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

 

 

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

 

1.

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

2.

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

3.

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

 

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

 

 

三、 准备工作

 

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 ---->”选中:

 

<M> Connection tracking (required for masq/NAT)

<M> FTP protocol support

<M> IP tables support (required for filtering/masq/NAT)

<M > limit match support

<M> MAC address match support

<M> Netfilter MARK match support

<M> Multiple port match support

<M> TOS match support

<M> Connection state match support

<M> Packet filtering

<M> REJECT target support

<M> Full NAT

<M> MASQUERADE target support

<M> REDIRECT target support

<M> Packet mangling

<M> TOS target support

<M> MARK target support

<M> LOG target support

<M> ipchains (2.2-style) support

<M> ipfwadm (2.0-style) support

 

其中最后两个项目可以不选,但是如果你比较怀念ipchains或者ipfwadm,你也可以将其选中,以便在2.4内核中使用ipchians或ipfwadm。但是需要注意的是,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的工作原理。

 

二、 原理

netfilter是Linux

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

 

 

系统缺省的表为"filter",该表中包含了INPUT、FORWARD和OUTPUT

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

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

 

 

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

 

1.

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

2.

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

3.

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

 

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

 

 

三、 准备工作

 

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 ---->”选中:

 

<M> Connection tracking (required for masq/NAT)

<M> FTP protocol support

<M> IP tables support (required for filtering/masq/NAT)

<M > limit match support

<M> MAC address match support

<M> Netfilter MARK match support

<M> Multiple port match support

<M> TOS match support

<M> Connection state match support

<M> Packet filtering

<M> REJECT target support

<M> Full NAT

<M> MASQUERADE target support

<M> REDIRECT target support

<M> Packet mangling

<M> TOS target support

<M> MARK target support

<M> LOG target support

<M> ipchains (2.2-style) support

<M> ipfwadm (2.0-style) support

 

其中最后两个项目可以不选,但是如果你比较怀念ipchains或者ipfwadm,你也可以将其选中,以便在2.4内核中使用ipchians或ipfwadm。但是需要注意的是,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模块会在运行时自动载入。

相关阅读 更多 +
排行榜 更多 +
味子夫

味子夫

购物比价 下载
恩猫

恩猫

购物比价 下载
街头纷争

街头纷争

动作格斗 下载