TTL目标帮助信息如下,可对报文的ttl进行设置、减少或者增加。

# iptables --jump TTL -h
TTL target options--ttl-set value               Set TTL to <value 0-255>--ttl-dec value               Decrement TTL by <value 1-255>--ttl-inc value               Increment TTL by <value 1-255>

如下在主机192.168.1.112上配置策略,丢弃IP头部ttl值小于3的报文。在另外的主机上执行ping操作,指定ttl为1,此时由于ttl小于3,ping不通。

# iptables -t filter -A INPUT -m ttl --ttl-lt 3 -j DROP

在主机192.168.1.112上配置策略,将IP头部ttl值增加3。此时在执行ping操作,由于ttl在增加之后为4,未匹配以上丢弃策略,ping通。

# iptables -t mangle -A PREROUTING -j TTL --ttl-inc 3
#
# iptables -L -t mangle -n -v
Chain PREROUTING (policy ACCEPT 147 packets, 19766 bytes)pkts bytes target     prot opt in     out     source               destination         147 19766 TTL        all  --  *      *       0.0.0.0/0            0.0.0.0/0            TTL increment by 3

TTL目标

函数xt_register_targets注册TTL目标结构hl_tg_reg。

static struct xt_target hl_tg_reg[] __read_mostly = {{.name       = "TTL",.revision   = 0,.family     = NFPROTO_IPV4,.target     = ttl_tg,.targetsize = sizeof(struct ipt_TTL_info),.table      = "mangle",.checkentry = ttl_tg_check,.me         = THIS_MODULE,},
};
static int __init hl_tg_init(void)
{return xt_register_targets(hl_tg_reg, ARRAY_SIZE(hl_tg_reg));

参数检查函数如下,目前仅支持ttl设置,增加和减少三种模式,其它模式则非法。如果模式为增加或者减少ttl值,那么ttl的增加或减少量值不能为0。

static int ttl_tg_check(const struct xt_tgchk_param *par)
{const struct ipt_TTL_info *info = par->targinfo;if (info->mode > IPT_TTL_MAXMODE)return -EINVAL;if (info->mode != IPT_TTL_SET && info->ttl == 0)return -EINVAL;return 0;

根据不同的模式,计算新的ttl值。对于增加模式,如果新的ttl值大于255,限定在255。对于减少模式,如果新的ttl值小于0,设置为0。

static unsigned int
ttl_tg(struct sk_buff *skb, const struct xt_action_param *par)
{struct iphdr *iph;const struct ipt_TTL_info *info = par->targinfo;if (skb_ensure_writable(skb, sizeof(*iph)))return NF_DROP;iph = ip_hdr(skb);switch (info->mode) {case IPT_TTL_SET:new_ttl = info->ttl;break;case IPT_TTL_INC:new_ttl = iph->ttl + info->ttl;if (new_ttl > 255)new_ttl = 255;break;case IPT_TTL_DEC:new_ttl = iph->ttl - info->ttl;if (new_ttl < 0)new_ttl = 0;break;default:new_ttl = iph->ttl;break;}

新的ttl值与报文IP头部中的ttl值不相等,更新IP头部的检验和,使用新的ttl值填充IP头部的ttl字段。

    if (new_ttl != iph->ttl) {csum_replace2(&iph->check, htons(iph->ttl << 8), htons(new_ttl << 8));iph->ttl = new_ttl;}return XT_CONTINUE;

内核版本 5.10

iptables目标TTL相关推荐

  1. iptables匹配ttl

    TTL匹配帮助信息如下,可判断相等,大于和小于三种关系. # iptables --match ttl -h ttl match options: [!] --ttl-eq value Match t ...

  2. iptables目标TEE

    TEE目标帮助信息如下. # iptables -j TEE -hTEE target options:--gateway IPADDR Route packet via the gateway gi ...

  3. iptables目标CHECKSUM

    CHECKSUM目标帮助信息如下. # iptables -j CHECKSUM -hCHECKSUM target options--checksum-fill Fill in packet che ...

  4. docker(iptables)目标地址转换,运行中的容器映射端口

    注意:议映射端口尝试-p 8080:8081 的形式,如若不行再尝试该方法,在宿主机执行下面该防火墙规则指令 # iptables -t nat -A PREROUTING -d 宿主机IP -p t ...

  5. 学习使用iptables

    原文:https://linuxgeeks.github.io/2017/03/10/094107-%E5%AD%A6%E4%B9%A0%E4%BD%BF%E7%94%A8iptables/ 基础知识 ...

  6. 【5】iptables理解 - mangle表

    mangle表:可以对数据包进行修改,此表中的链与其它表中的关系如下: 数据包从网卡接口进来后,最先经过的就是mangle表中的prerouting链.此表中有五条链: iptables -t man ...

  7. 一个奇葩的网络问题,把技术砖家搞蒙了

    大家好,最近遇到一个奇葩的网络问题,分享给大家,看完一定会觉得很奇葩. 问题现象 客户反馈有一个server端S, 两个client端C1, C2, S的iptables规则对C1, C2都是放通的, ...

  8. AppNode受控端命令 - AppNode帮助中心

    受控端命令 核心命令 在命令行中输入 appnode agent,可查看所有核心命令: # appnode agent NAME:appnode-agent - appnode agent comma ...

  9. 一个奇葩的网络问题,把技术砖家“搞蒙了”

    大家好,最近遇到一个奇葩的网络问题,分享给大家,看完一定会觉得很奇葩. 问题现象 客户反馈有一个服务器端S,两个客户端端C1,C2,S的iptables规则对C1,C2都是放通的,但是C2无法连接上S ...

最新文章

  1. Docker了解(官方解读)
  2. 在vue-cli项目中使用echarts
  3. 一次 Druid 连接池泄露引发的血案!
  4. cinder配置多ceph储存池[Ceph and Cinder multi-backend]
  5. iphone定时关机_成都苹果维修点教你iPhone手机死机、关不了机怎么处理?
  6. 异步和同步区别是什么_一次相亲经历,我彻底搞懂了什么叫阻塞非阻塞,同步异步...
  7. wxWidgets:wxFileType类用法
  8. 【js与jquery】三级联动菜单的制作
  9. 使用Sencha Touch加载本地Json数据
  10. 英伟达显卡不同架构_英伟达GeForce RTX 3070 Ti与RTX 3070显卡规格曝光
  11. USACO milk
  12. iOS开发 -------- Block技术中的weak - strong
  13. Three.js星空粒子特效
  14. 浅谈AlphaGo背后所涉及的深度学习技术
  15. 记一次菜鸟网络电话面试
  16. Android 仿微信实现语音聊天功能
  17. 单片机 数码管0~F显示
  18. 互联网+人社峰会召开腾讯开放三大能力建“人社”生态
  19. red and black trees(红黑二叉树)
  20. “%,/,//”的用法

热门文章

  1. Altium designer别再傻傻的一个个给元件添加封装了
  2. 如何使用CorelDRAW 2019绘制谷歌浏览器Logo
  3. 马士兵 java se_马士兵javase(170804)
  4. Linux漏洞:showmount -e信息泄露(CEE-1999-0554)
  5. 【老鸟进阶】deepfacelab合成参数详解
  6. ibm服务器修改uefi和legacy,uefi和legacy的区别详细分析(附带uefi改legacy教程)
  7. 人过青年,我们的黄金时代过去了吗?
  8. linux查询awk命令用法
  9. 深入理解机器学习——概率图模型(Probabilistic Graphical Model):马尔可夫随机场(Markov Random Field,MRF)
  10. CTF show 萌新区解题报告 (二)