手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

Iptables 指南 1.1.19(中文版)(二)

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

tcp      6 57 SYN_RECV src=192.168.1.5 dst=192.168.1.35 sport=1031      dport=23 src=192.168.1.35 dst=192.168.1.5 sport=23 dport=1031      use=1

   

现在我们已收到了相应的SYN/ACK包,状态也变为SYN_RECV,这说明最初发出的SYN包已正确传输,并且SYN/ACK包也到达了防火墙。 这就意味着在连接的两方都有数据传输,因此能够认为两个方向都有相应的回应。当然,这是假设的。

tcp      6 431999 ESTABLISHED src=192.168.1.5 dst=192.168.1.35      sport=1031 dport=23 src=192.168.1.35 dst=192.168.1.5      sport=23 dport=1031 use=1

   

现在我们发出了三步握手的最后一个包,即ACK包,连接也就进入ESTABLISHED状态了。再传输几个数据包,连接就是[ASSURED]的了。

下面介绍TCP连接在关闭过程中的状态。

如上图,在发出最后一个ACK包之前,连接(指两个方向)是不会关闭的。注意,这只是针对一般的情况。连接也能够通过发送关闭,这用在拒绝一个连接的时候。在RST包发送之后,要经过预先设定的一段时间,连接才能断掉。

连接关闭后,进入TIME_WAIT状态,缺省时间是2分钟。之所以留这个时间,是为了让数据包能完全通过各种规则的检查,也是为了数据包能通过拥挤的路由器,从而到达目的地。

假如连接是被RST包重置的,就直接变为CLOSE了。这意味着在关闭之前只有10秒的默认时间。RST包是无需确认的,他会直接关闭连接。针对TCP连接,更有其他一些状态我们没有谈到。下面给出一个完整的状态列表和超时值。

Table 4-2. 内部状态

StateTimeout value
NONE30 minutes
ESTABLISHED5 days
SYN_SENT2 minutes
SYN_RECV60 seconds
FIN_WAIT2 minutes
TIME_WAIT2 minutes
CLOSE10 seconds
CLOSE_WAIT12 hours
LAST_ACK30 seconds
LISTEN>2 minutes

这些值不是绝对的,能够随着内核的修订而变化,也能够通过/proc/sys/net/ipv4/netfilter/ip_ct_tcp_*的变量更改。这些默认值都是经过实践检验的。他们的单位是jiffies(百分之一秒),所以3000就代表30秒。

Note

注意状态机制在用户空间里的部分不会查看TCP包的标志位(也就是说TCP标志对他而言是透明的)。假如我们想让NEW状态的包通过防火墙,就要指定NEW状态,我们理解的NEW状态的意思就是指SYN包,可是iptables又不查看这些标志位。这就是问题所在。有些没有配置SYN或ACK的包,也会被看作NEW状态的。这样的包可能会被冗余防火墙用到,但对只有一个防火墙的网络是很不利的(可能会被攻击哦)。那我们怎样才能不受这样的包的影响呢?您能够使用未配置SYN的NEW状态包 里的命令。更有一个办法,就是安装patch-o-matic里的tcp-window-tracking扩展功能,他能够使防火墙能根据TCP的一些标志位来进行状态跟踪。


4.5. UDP连接

UDP连接是无状态的,因为他没有任何的连接建立和关闭过程,而且大部分是无序列号的。以某个顺序收到的两个数据包是无法确定他们的发出顺序的。但内核仍然能够对UDP连接配置状态。我们来看看是如何跟踪UDP连接的,连同conntrack的相关记录。

从上图能够看出,以用户的角度考虑,UDP连接的建立几乎和TCP的相同。虽然conntrack信息看起来有点儿不同,但本质上是相同的。下面我们先来看看第一个UDP包发出后的conntrack记录。

udp      17 20 src=192.168.1.2 dst=192.168.1.5 sport=137 dport=1025      [UNREPLIED] src=192.168.1.5 dst=192.168.1.2 sport=1025      dport=137 use=1

   

从前两个值可知,这是个UDP包。第一个是协议名称,第二个是协议号,第三个是此状态的生存时间,默认是30秒。接下来是包的源、目地址和端口,更有期待之中回应包的源、目地址和端口。[UNREPLIED]标记说明还未收到回应。

udp      17 170 src=192.168.1.2 dst=192.168.1.5 sport=137      dport=1025 src=192.168.1.5 dst=192.168.1.2 sport=1025      dport=137 use=1

   

一旦收到第一个包的回应,[UNREPLIED]标记就会被删除,连接就被认为是ESTABLISHED的,但在记录里并不显示ESTABLISHED标记。相应地,状态的超时时间也变为180秒了。在本例中,只剩170秒了,10秒后,就会减少为160秒。有个东西是不可少的,虽然他可能会有些变化,就是前面提过的[ASSURED]。要想变为 [ASSURED]状态,连接上必须要再有些流量。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!