iptables配置conntrack的NOTRACK和TRACK

iptables本身没有TRACK target,以至于你不能指定需要被conntrack模块处理的数据包白名单,比如我想实现:除了来源IP是192.168.10.0/16网段的需要被track之外,其它的都不要track。
       当然,你可以通过下面的配置实现我的需求:
iptables -t raw -A PREROUTING ! -s 192.168.10.0/16 -j NOTRACK
...反向NOTRACK类似,-s换-d
如果更复杂一点呢?比如除了来源IP限制之外,还有协议,端口等。

熟悉访问控制列表设计的都知道,ACL的“与”操作可以在单条规则中实现,而“或”操作则由多条规则实现,因此应用于上述随便复杂的需求,都是可以完成
的,甚至抛开“单条与/多条或”原则,仅仅是扩充ipset也可以很好配置出来任意复杂的规则满足任意复杂的需求。
       但是有没有一个更简单的办法?当然有,实现一个和NOTRACK对立的target,即TRACK target即可。它的实现就是清除已经附着在skb上的untracked conn。这样当我需要添加track白名单时,我可以这么做:
iptables -t raw -A PREROUTING -j NOTRACK
iptables -t raw -A PREROUTING $mt1 $mt2 ... -j TRACK # 单条的matches AND操作
...# 多条的 matches OR操作
iptables -t raw -A PREROUTING $mt‘‘1 $mt‘‘2 ... -j TRACK
OK,就这样,很简单。

不过iptables没有内置OR操作是完全符合ACL理念的,该理念中,如果想实现或,就配置多条规则,事实上大多数的鉴权系统都是如此的理念。看看C
语言的逻辑判断会发现同样的理念,如果是AND操作,逐条语句便和顺序无关,因为最终必须将每个语句全部计算一遍,如果是OR操作,计算效率就和顺序有关
了,只要到达“真”值,计算就可以结束了,当然内部细节还是和实现相关的。所以,对于AND操作,由于它是闭合的,一条语句就可以囊括进去,但是OR却是
不闭合的,你不知道计算将在哪里结束。

时间: 2024-10-05 18:41:43

iptables配置conntrack的NOTRACK和TRACK的相关文章

一个可以直接使用的可用iptables配置的stateless NAT实现

使用iptables配置stateless NAT?我没有搞错.可能你根本不知道这么多NAT的实现细节,或者说根本不在乎,那么本文就当是一个"如何编写iptables模块"的练习了.实际上,我已经实现了一个可以配置stateless NAT的内核模块了,但是它的接口是基于procfs的,并不是说这个接口不好用,而是我觉得如果能集成到iptables就更加perfect了,难道不应该这样吗?有谁能忍受通过iptables和echo的方式配置两种NAT呢?难道不应该在一个iptables

linux下IPTABLES配置详解

iptables 配置 如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [[email protected] ~]# iptables -L -nChain INPUT (policy ACCEPT)target       prot opt source                 destination Chain FORWARD (policy ACCEPT)target     

CentOS下配置iptables防火墙 linux NAT(iptables)配置

CentOS下配置防火墙 配置nat转发服务CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/sysconfig/network   这里可以更改主机名称. NETWORKING=yesNETWORKING_IPV6=noHOSTNAME=BGI-TJ.localdomain GATEWAY=192.168.11.1(超算网关) 2.vim /etc/sysconfig/network-scripts/

LInux下iptables配置

linux下IPTABLES配置详解 如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [[email protected] ~]# iptables -L -nChain INPUT (policy ACCEPT)target       prot opt source                 destination Chain FORWARD (policy ACCEPT)targ

常用iptables配置实例

常用iptables配置实例 iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙.NAT.咋一看iptables的配置很复杂,掌握规律后,其实用iptables完成指定任务并不难,下面我们通过具体实例,学习iptables的详细用法. 1.删除已有规则 在新设定iptables规则时,我们一般先确保旧规则被清除,用以下命令清除旧规则: iptables -F (or iptables --flush) 2.设置chain策略 对于filter table,默认的chain策略

Ubuntu使用iptables配置防火墙提示:unrecognized service(Ubuntu配置iptables防火墙)

Ubuntu默认安装是没有开启任何防火墙的. 当使用service iptables status时发现提示iptables:unrecoginzed service.意思是无法识别的服务. 以下方法来自http://blog.csdn.net/lywzgzl/article/details/39938689,但是测试发现,此方法已经无法在Ubuntu中使用 #在ubuntu中由于不存在/etc/init.d/iptales文件,所以无法使用service等命令来启动iptables,需要用mo

linux 下iptables配置详解

转自http://www.cnblogs.com/JemBai/archive/2009/03/19/1416364.html 如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [[email protected] ~]# iptables -L -nChain INPUT (policy ACCEPT)target       prot opt source                

[转载] iptables配置实践

原文: http://wsgzao.github.io/post/iptables/ iptables配置实践 By wsgzao 发表于 2015-07-24 文章目录 1. 前言 2. 更新历史 3. 基础知识 3.1. 关闭iptables 3.2. 基础语法 4. 配置iptables白名单机制 5. 设置crontab脚本 前言 在大企业中防火墙角色主要交给硬件来支持,效果自然没话说只是需要增加一点点成本,但对于大多数个人或者互联网公司来说选择系统自带的iptables或者第三方云防火

linux下IPTABLES配置详解 (防火墙命令)

linux下IPTABLES配置详解 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 24000 -j ACCEPT-A RH-Firewall-1-INPUT -s 121.10.120.24 -p tcp -m tcp --dport 18612 -j ACCEPT 如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的