曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3075|回复: 0
打印 上一主题 下一主题

--fragment 选项

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2015-6-12 00:00:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
--fragment,中文是碎片之意。在一些网络接口上,经常会用到 MTU 这个参数对数据包的大小进行限制,该参数定义了可以通过的数据包的最大尺寸。如果一个数据包的尺寸大于这个参数时,系统会将这个数据包分成更小的数据包(IP 碎片)来传输,在接收方一边,会对这些 IP 碎片进行重组以还原整个数据包。这样会带来一个问题:当系统将大数据包划分成 IP 碎片传输时,第一个碎片中含有完整的包头信息(IP + TCP, UDP 和 ICMP),但后续的碎片只有包头的部分信息(如源地址,目的地址)。因此,检查后面的 IP 碎片的头部是不可能的。

假如有这样的一条规则:
  1. iptables -I FORWARD -p tcp -s 192.168.1.0/24 -d 192.168.2.100 --destination-port 80 -j ACCEPT
复制代码


假设这个 FORWARD 的策略为 DROP 时,系统会让第一个 IP 碎片通过,而余下的碎片因为包头信息不完整而无法通过。这个问题就可以通过 --fragment / -f 选项来解决,比如:
  1. iptables -A FORWARD -f -s 192.168.1.0/24 -d 192.168.2.100 -j ACCEPT
复制代码


iptables 的 man 手册中对 --fragment 是这样写的:
使用该选项,意味着规则仅适用于数据包中的第二个及后面的的碎片。

如果对该选项使用 ! 参数,那么就该规则就只匹配第一个碎片, 或是没有碎片的数据包。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-3 13:55 , Processed in 0.063245 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表