Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2519219
  • 博文数量: 867
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 9800
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 14:44
文章分类

全部博文(867)

文章存档

2007年(6)

2006年(861)

我的朋友

分类: LINUX

2006-07-30 22:33:34

---- 在即将推出的Linux 2.4内核中,实现IP包过滤(IP filter)/网络地址翻译(NAT)功能的ipchains被Netfilter所取代。Netfilter产生的动机是源于ipchains代码结构的不合理性。如Netfilter的作者所说“当我开发IPChains时,……在那一瞬间,我意识到包过滤代码并没有处在一个合适的位置……简而言之,出于负责到底的原则, 我还是完成了IPChains的开发。”事实上,这种结构的不合理性是从2.0系列内核的ipfwadm继承下来的。为此,Netfilter采用了全新的机制。与ipchains相比,Netfilter并不是具体实现包过滤的程序,而是一套框架结构。各种包过滤、NAT功能模块都可建立在这套框架结构之上,从而提供了更好的灵活性和可扩展性。

一、Netfilter基础

---- Netfilter提供了一系列的“表”(tables),表由若干“链”(chains)组成,链相当于以前的ipchains,系统缺省的表为“filter”,表中包含了INPUT、FORWARD和OUTPUT 3个链,图1所示是数据包在filter表中的流程。各个链的含义见表1。

表1

链名 功能

INPUT 处理所有发向本机的数据包

OUTPUT 处理所有从本机发出的数据包

FORWARD 处理所有经本机路由的数据包

---- 链由一系列规则组成,每一条规则中可以设置决定数据包走向的“目标”(targets),常用的目标是ACCEPT、DROP、REJECT等,含义如表2。下面举几个例子来说明这些概念。

表2

目标 含义

ACCEPT 接受数据包,将其传递至表中的下一个链

DROP 丢弃数据包,不返回任何信息

REJECT 丢弃数据包,并返回一个目标地址不可达信息

---- #iptables -A INPUT -s 192.168.1.1 -j ACCEPT

---- 这条命令的含义是在INPUT链中增加(-A)一条规则,即对所有来自(-s)192.168.1.1的数据包全部接受(-j ACCEPT,-j是跳转的意思),并转到表中的下一条链继续执行。而以下这条命令则表示丢弃(-j DROP)所有来自192.168.0.0 16位掩码子网的数据包。

---- #iptables -A INPUT -s 192.168.0.0/16 -j DROP

---- 用这个缺省的filter表就可以实现包过滤。表3 列出了几种使用iptables防止各种攻击的命令,其中,“-p tcp”和“-p icmp”是指定数据包的类型,紧随其后的选项指定数据包的具体类型。“-m limit”表示“若匹配,则限制为”,“-limit”是具体的限制条件,例如“1/s”表示每秒钟只允许通过一个数据包,这个选项可以有效防止各种DoS(DDoS)攻击。

二、了解NAT

---- NAT是通过一个特殊的表来实现的。即nat表,表中有3条链,分别是PREROUTING、ROUTING和POSTROUTING。数据包的流向如图2所示。PREROUTING链用于DNAT;POSTROUTING链用于SNAT; Routing是路由链。

三、使用Netfilter共享Internet拨号连接

---- 1. 典型环境

---- 一个小型局域网络,由2台客户机(1台台式机和1台便携机)、1台文件/打印服务器和1台拨号服务器(安装Linux)组成。使用Modem拨号方式连接Internet。以上每台机器装有一块网卡连到Hub,所有的网卡使用保留IP(192.168.1.x),拨号服务器通过串口连接外置Modem,IP地址为拨号时动态分配。网络结构如图3所示。

---- 2.编译内核

---- 以下所有命令均以root身份执行。首先需要在拨号服务器上编译内核进行有关的设定,内核版本要求在2.3.x以上,本文以最新的2.4.0-test11为例,使用make menuconfig方式编译。与Netfilter相关的选项都在“Networking Options”部分,在其中做如下选择。

---- ...

---- [*] Kernel/User netlink socket

---- [ ] Routing messages

---- < * > Netlink device emulation

---- [*] Network packet filtering (replaces ipchains)

---- [ ] Network packet filtering debugging

---- [ ] Socket Filtering

---- ...

---- 在其中的“IP: Netfilter Configuration”子项中做如下选择。

---- ...

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

---- < M > FTP protocol support (NEW)

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

----

阅读(832) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~