default eth0 lo [blueflux@work1 neigh]$
任何的命令和程式名都用粗体。
任何的系统部件,如硬件、内核部件、loopback使用斜体。
电脑文本输出用 这种字体。
文档名和路径名象这样 /usr/local/bin/iptables 。
default eth0 lo [blueflux@work1 neigh]$
任何的命令和程式名都用粗体。
任何的系统部件,如硬件、内核部件、loopback使用斜体。
电脑文本输出用 这种字体。
文档名和路径名象这样 /usr/local/bin/iptables 。
我发现现在任何的HOWTO都缺乏Linux 2.4.x 内核中的Iptables和Netfilter 函数的信息,于是我试图回答一些问题,比如状态匹配。我会用插图和例子 rc.firewall.txt 加以说明,此处的例子能够在您的/etc/rc.d/使用。最初这篇文章是以HOWTO文档的形式书写的,因为许多人只接受HOWTO文档。
更有一个小脚本rc.flush-iptables.txt,我写他只是为使您在配置他的时候能象我相同有成功的感觉。
我请教了Marc Boucher 及netfilter团队的其他核心成员。对他们的工作连同对我在为boingworld.com 书写这个指南时的帮助表示极大的谢意,现在这个指南在我自己的站点frozentux.net上进行维护。这个文档将一步一步教您setup过程,让您对iptables包有更多的了解。这大部分的东西都基于例子rc.firewall 文档,因为我发现这是学习iptables的一个好方法。我决定自顶向下地跟随rc.firewall 文档来学习 iptables。虽然这样会困难一些,但更有逻辑。当您碰到不懂的东西时再来查看这个文档。
文中包含了一些术语,您应该有所了解。这里有一些解释,并说明了本文中如何使用他们。
DNAT - Destination Network Address Translation 目的网络地址转换。 DNAT是一种改变数据包目的 ip地址的技术,经常和SNAT联用,以使多台服务器能共享一个ip地址连入Internet,并且继续服务。通过对同一个ip地址分配不同的端口,来决定数据的流向。
Stream - 流 是指发送和接收的数据包和通信的双方都有关系的一种连接(译者注:本文中,作者把连接看作是单向的,流表示双向的连接)。一般的,这个词用于描述在两个方向上发送两个或三个数据包的连接。对于TCP,流意味着连接,他发送了一个SYN,然后又回复SYN/ACK。但也可能是指这样的连接,发送一个SYN,回复ICMP主机不可达信息。换句话说,我使用这个词很随意。
SNAT - Source Network Address Translation源网络地址转换。这是一种改变数据包源ip地址的技术,经常用来使多台电脑分享一个Internet地址。这只在IPv4中使用,因为IPv4的地址已快用完了,IPv6将解决这个问题。
State - 状态 指明数据包处于什么状态。状态在RFC 793 - Transmission Control Protocol中定义,或由用户在Netfilter/iptables中自定义。需要注意的是Netfilter设定了一些关于连接和数据包的状态,但没有完全使用使用RFC 793的定义。
User space - 用户空间,指在内核外部或发生在内核外部的任何东西。例如,调用 iptables -h 发生在内核外部,但iptables -A FORWARD -p tcp -j ACCEPT (部分地)发生在内核内部,因为一条新的规则加入了规则集。
Kernel space - 内核空间 ,和用户空间相对,指那些发生在内核内部。
Userland - 参见用户空间
target - 这个词在后文中有大量的应用,他表示对匹配的数据包所做的操作。
这一章是学习iptables的开始,他将帮助您理解Netfilter和iptables在Linux中扮演的角色。他会告诉您如何配置、安装防火墙,您的经验也会随之增长。当然,要想达到您的目标,是要花费时间,还要有毅力。( 译者注:听起来很吓人的:) )
iptables 能够从www.netfilter.org 下载,网站中的FAQs也是很好的教程。iptables 也使用一些内核空间,能够在用make configure配置内核的过程中配置,下面会介绍必要的步骤。
为了运行iptables,需要在内核配置期间,选择以下一些选项,不管您用make config或其他命令。
CONFIG_PACKET - 允许程式直接访问网络设备(译者注:最常用的就是网卡了),象tcpdump 和 snort就要使用这个功能。
![]() | 严格地说,iptables并无需CONFIG_PACKET,但是他有很多用处(译者注:其他程式需要),所以就选上了。当然,您不想要,不选就是了。(译者注:建议还是选的为好) |
CONFIG_NETFILTER - 允许电脑作为网关或防火墙。这个是必需的,因为整篇文章都要用到这个功能。我想您也需要这个,谁叫您学iptables呢:)
当然,您要给网络设备安装正确的驱动程式,比如,Ethernet 网卡, PPP 更有 SLIP 。 上面的选项,只是在内核中建立了一个框架, iptables确实已能够运行,但不能做任何实质性的工作。我们需要更多的选项。以下给出内核2.4.9的选项和简单的说明:
CONFIG_IP_NF_CONNTRACK
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!