首页 » Iptables » 正文

Netflter之TCP

关于TCP的三次握手

在建立连接之前,客户端先发送一个带有syn标示的数据包给服务器,这个数据包就是连接请求包,服务器应答一个带有syn及ack的包给客户端,表示服务器已经做好了准备,接着客户端再发送一个ack表标记的数据包给服务器端,完成以上流程后,TCP正式连接

这就是传说中的3次握手

上边说了建立链接的时候,那么终止链接的时候呢?

当客户端完成数据传书之后,客户端会对服务器送出一个“链接终止”的信息,这个信号就是一个带有fin标记的数据包,当服务器收到这个数据包之后,就会告诉客户端我收到你的结束信号了,返回一个ack标记的数据包,然后又送出一个带又fin的数据包给客户端,客户收到这个这个fin的数据包后,会返回给服务器一个ack标记的数据包,这个时候,4个数据包完成结束的过程

iptables -A INPUT -p tcp –syn –dport 22 -m state –state NEW -j ACCEPT

如果客户端发送的第一个数据包就带有fin标记(这是不合理的,因为tcp链接还没有建立),我们要drop掉,反过来说,也就是第一个包必须是包含syn标记

iptables -A INPUT -p tcp –tcp-flags ALL SYN,FIN -j DROP

检查所有的TCP-FLAG,只有syn, fin 同时为1的时候会DROP掉

UDP的高级匹配

想对于TCP, UDP的请求就简单了

–sport: 匹配数据包的来源的端口
–dport: 匹配数据包的目的端口

iptables -A FORWARD -i eth0 -p udp –dport 53 -j ACCEPT

允许局域网中的主机通过防火墙使用互联网上的DNS解析服务

发表评论