【5】iptables理解 - mangle表

mangle表:可以对数据包进行修改,此表中的链与其它表中的关系如下:

数据包从网卡接口进来后,最先经过的就是mangle表中的prerouting链。此表中有五条链:

iptables -t mangle -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destinatio

通常不要在此表做过滤。若是在此表中做过滤,也是可以生效的,效率应比别的链快。

比如禁止访问本机的22端口,可以在mangle的input链做规则。

例:禁止访问iptables主机的30001端口

[[email protected] ~]# telnet 10.1.1.1 30001

Trying 10.1.1.1...

Connected to 10.1.1.1.

Escape character is ‘^]‘.

现在是可以正常telnet

在mangle的input链添加一条禁止访问30001的规则

iptables -t mangle -A INPUT -p tcp --dport30001 -j DROP

[[email protected] /]# iptables -t mangle -L -n

Chain PREROUTING (policy ACCEPT)

target    prot opt source              destination

Chain INPUT (policy ACCEPT)

target    prot opt source              destination

DROP      tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:30001

Chain FORWARD (policy ACCEPT)

target    prot opt source              destination

Chain OUTPUT (policy ACCEPT)

target    prot opt source              destination

Chain POSTROUTING (policy ACCEPT)

target    prot opt source              destination

应用之后,无法连接此端口,mangle表做规则是生效的。

[[email protected] ~]# telnet 10.1.1.1 30001

Trying 10.1.1.1...

telnet: connect to address 10.1.1.1:Connection timed out

[[email protected] ~]#

设置TTL:

TTL的初值通常是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减一,TTL通常表示包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。

如win7的TTL值默认是:64 (若想知道系统的默认TTL值是多少,在本机ping一下本机,可以看到TTL=数值 ,这个数据就是此系统的默认ttl)

例: LinuxB - iptables -LinuxA (第一节的环境)正常情况下,LinuxB ping LinuxA,在LinuxA机上抓包,可以看到10.1.1.2来的数据包,里面的ttl = 63。因为经过了iptables这个开了路由功能的主机,所以会把原来值减1(64-1=63)

[[email protected] ~]# tcpdump -i eth1 icmp -vv

tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes

11:13:45.125190 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto ICMP (1), length 84)

10.1.1.2 > puppet.onepc.com: ICMP echo request, id 13833, seq 1, length 64

11:13:45.125253 IP (tos 0x0, ttl 64, id 63336, offset 0, flags [none], proto ICMP (1), length 84)

puppet.onepc.com > 10.1.1.2: ICMP echo reply, id 13833, seq 1, length 64

11:13:46.126795 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto ICMP (1), length 84)

10.1.1.2 > puppet.onepc.com: ICMP echo request, id 13833, seq 2, length 64

11:13:46.126826 IP (tos 0x0, ttl 64, id 63337, offset 0, flags [none], proto ICMP (1), length 84)

puppet.onepc.com > 10.1.1.2: ICMP echo reply, id 13833, seq 2, length 64

从LinuxB的ttl值可以看出,LinuxB只经过一个路由器。若是想不让其他人知道我的机器穿过多少个路由,可以在mangle表中设置TTL值。

[[email protected] ~]# iptables -j 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>

简单设置,隐藏iptables减去1的值,保持原来的ttl值,从eth2接口进来的数据包的ttl值加1,离去后会再减去1:

iptables -t mangle -A PREROUTING -i eth2 -j TTL --ttl-inc 1

linuxb再pinglinuxa,在linxa抓包发现,ttl值变成64,达到隐藏网络位置的效果:

11:30:35.269945 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)

10.1.1.2 > puppet.onepc.com: ICMP echo request, id 47122, seq 1, length 64

11:30:35.270327 IP (tos 0x0, ttl 64, id 63338, offset 0, flags [none], proto ICMP (1), length 84)

puppet.onepc.com > 10.1.1.2: ICMP echo reply, id 47122, seq 1, length 64

11:30:36.261973 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)

10.1.1.2 > puppet.onepc.com: ICMP echo request, id 47122, seq 2, length 64

11:30:36.262045 IP (tos 0x0, ttl 64, id 63339, offset 0, flags [none], proto ICMP (1), length 84)

puppet.onepc.com > 10.1.1.2: ICMP echo reply, id 47122, seq 2, length 64

还可以做策略路由等,这些暂时不去学习了。

【5】iptables理解 - mangle表,布布扣,bubuko.com

时间: 2024-10-27 06:48:25

【5】iptables理解 - mangle表的相关文章

iptables防火墙四表五链介绍

iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables.真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构. iptables包含4个表,5个链.其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度.      4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表).表的处理优先级:raw>mangle>nat>f

关于iptables的四表五链

iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables.真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构. iptables包含4个表,5个链.其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度. 4个表:filter,nat,mangle,raw  默认表是filter(没有指定表的时候就是filter表).表的处理优先级:raw>mangle>nat>filte

iptables 知识-filter表

iptables 免费的 基于包过滤的 类似交换机acl iptables 表和链 个分类 4个表 filter   和主机有关 负责防火墙功能 过滤本机流入流出的数据包 是iptables默认的表 INPUT FORWORD OUTPUT INPUT 过滤所有目标是本机的数据包 过滤进入主机的数据包 FORWORD 转发流经主机但不进入主机的数据包 转发 OUTPUT 处理源地址是本机的数据包 处理从主机发出去的数据包 nat 和主机无关 是网络地址转换 OUTPUT PREROUTING P

iptables中4表5链

iptables防火墙iptables规则firewalld---->iptables----->内核(netfilter)安装iptables服务systemctl stop firewalld.servicesystemctl disable firewalld.serviceyum list |grep iptablesyum -y install iptables-servicessystemctl start iptables.servicesystemctl enable ipta

深入理解Oracle表(3):三大表连接方式详解之Nested loop join和 Sort merge join

深入理解Oracle表(3):三大表连接方式详解之Nested loop join和 Sort merge join 分类: Oracle 基础管理 Oracle SQL 开发2013-01-28 00:33 2536人阅读 评论(1) 收藏 举报 关系数据库技术的精髓就是通过关系表进行规范化的数据存储       并通过各种表连接技术和各种类型的索引技术来进行信息的检索和处理       这里Think愿意和大家一起来学习分享Oracle的三大表连接技术              在早期版本,

iptables里filter表前面几个数字的意思

一般的linux系统iptables配置文件filter表前面都带下面三行,但是具体是什么意思呢! *filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0] INPUT:是链名 ACCEPT:是这个链的默认动作 第一个0:匹配默认动作的包的个数 第二个0:匹配默认动作的包的总字节数 [0:0]像这样,中括号内都是0,表示没有限制包的个数和总字节数,匹配的动作可以无限制的流入流出.

sas宏(3)宏,调试宏,创建带参数的宏,理解符号表(全局宏与局部宏解析),宏条件运算符,在宏中进行运算

宏类似于c中的函数,传入指定参数后执行,并且宏内部可以包含data步程序和条件运算符号. 宏变量只是小小的变量....(by the way作用也很大) 1:宏的基本语法 如何创建一个简单的宏并使用? %macro prtlast; proc print data=&syslast (obs=5); title "Listing of &syslast data set"; run; %mend; %prtlast /*不要加分号,加了有可能出错*/ 宏创建过程中做了什

MySQL实验1: 新建一个名为 library 的数据库,包含 book、reader 两张表,根据自己的理解安排表的内容并插入数据。

数据表(table)简称表,它是数据库最重要的组成部分之一.数据库只是一个框架,表才是实质内容. 实验: 新建一个名为 library的数据库,包含 book.reader两张表,根据自己的理解安排表的内容并插入数据. 参考答案: 总结:经过本次实验,我们已经有了一个名为 library的数据库,其中有 book和reader两张表,我们已经向其中插入了一些数据. 原文地址:https://www.cnblogs.com/HongjianChen/p/10692764.html

iptables学习02-nat表应用

nat表应用实验 第一步 准备工作 A机器两块网卡ens33(192.168.2.106).再添加一块自定义网卡ens37(192.168.100.1),添加到LAN内网区段(自定义名字,写什么无所谓),ens33可以上外网,ens37仅仅是内部网络. B机器是虚拟机里克隆A机器的,把ens33禁掉,只有ens37(192.168.100.100),和A机器ens37可以通信互联. 1234567891011121314151617181920 先在虚拟机里面设置一下,添加一块网卡 Aifcon