首页 > 系统相关 >iptables五表五链及对应实例

iptables五表五链及对应实例

时间:2024-03-09 17:22:47浏览次数:27  
标签:iptables 五表五链 -- 实例 PREROUTING INPUT OUTPUT 数据包

iptables是Linux系统上用于配置网络包过滤规则的工具,它使用表(tables)和链(chains)来组织规则。以下是iptables中的五表五链及其对应的实例说明:

五表

  1. filter表:默认表,用于过滤数据包,允许或拒绝数据包通过。它包含INPUT、OUTPUT和FORWARD三个链。
  2. nat表:用于网络地址转换(NAT),例如端口转发和地址转换。它包含PREROUTING、POSTROUTING和OUTPUT三个链。注意,虽然OUTPUT链在nat表中存在,但实际上在iptables中,OUTPUT链通常只用于filter表和mangle表。在nat表中,OUTPUT链很少使用,因为对于从本机发出的数据包,其源地址转换通常在路由选择之前就已经确定了。
  3. mangle表:用于修改数据包的各种属性,例如TTL(Time To Live)或TOS(Type of Service)字段。它也包含PREROUTING、POSTROUTING、INPUT、OUTPUT和FORWARD五个链。
  4. raw表:用于处理数据包的连接追踪,通常与mangle表结合使用来实现一些特殊功能。它包含PREROUTING和OUTPUT两个链。
  5. security表:用于强制访问控制(MAC)的网络安全策略(注:这实际上是IPsec功能的一部分,但在许多iptables实现中并不常用或并不直接支持)。security表并不常用,而且其具体的链和用法可能因不同的系统或iptables版本而有所不同。

五链

  1. INPUT链:处理进入本机的数据包。
  2. OUTPUT链:处理从本机发出的数据包。
  3. FORWARD链:处理需要本机转发的数据包(即本机作为路由器时)。
  4. PREROUTING链:在进行路由选择之前修改数据包,如DNAT(Destination NAT,目的网络地址转换)。
  5. POSTROUTING链:在进行路由选择之后修改数据包,如SNAT(Source NAT,源网络地址转换)。

实例

filter表实例

# 允许来自任何地方的SSH连接  
iptables -A INPUT -p tcp --dport 22 -j ACCEPT  
  
# 拒绝来自192.168.1.0/24网络的所有输入流量  
iptables -A INPUT -s 192.168.1.0/24 -j DROP  
  
# 允许本地回环地址的流量  
iptables -A INPUT -i lo -j ACCEPT  
  
# 设置默认策略为拒绝所有输入流量  
iptables -P INPUT DROP

nat表实例

# 将到达本机的80端口的流量转发到内部服务器192.168.1.100的8080端口  
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080  
  
# 修改从本机发出的流量的源地址为1.2.3.4(需要内核支持及路由设置)  
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 1.2.3.4

mangle表实例

# 修改TTL值为64  
iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN SYN -j TCPMSS --clamp-mss-to-pmtu  
iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN SYN -j TCPMSS --set-mss 1460  
  
# 这是一个较为复杂的例子,实际中TCPMSS的用法可能会有所不同

raw表实例

# 关闭NAT表上的连接追踪功能,加速某些特定类型的数据包(例如ICMP)  
iptables -t raw -A PREROUTING -p icmp -j NOTRACK

请注意,以上命令应在具有相应权限(通常是root)的情况下运行,并且需要根据具体的网络环境和需求进行调整。

关于security表,由于其实际在iptables中的使用较少,且主要与IPsec和网络安全策略配置相关,这里不提供具体的实例。如果需要对这部分进行深入了解,建议查阅专门的IPsec和网络安全文档。

另外,这些规则默认不会永久保存,系统重启后会丢失。若需永久保存iptables规则,可以使用iptables-saveiptables-restore命令,或者在某些发行版中使用特定的服务或脚本来处理规则的保存和加载。

标签:iptables,五表五链,--,实例,PREROUTING,INPUT,OUTPUT,数据包
From: https://www.cnblogs.com/ydswin/p/18062999

相关文章

  • MATLAB----遗传算法及Simulink延时模块实例
    clctic%%参数初始化maxgen=100;%进化代数,即迭代次数,初始预定值选为100sizepop=200;%种群规模,初始预定值选为100pcross=0.9;%交叉概率选择,0和1之间,一般取0.9pmutation=0.01;%变异概率选择,0和1之间,一般取0.01individuals=struct('fitness',zeros(1,sizepop),'chrom',[]);%种群......
  • 当未指定且存在多个构造器,实例化对象时Spring如何选择?
    前言在前面的讲解中,我们了解了如何获取构造器。当只有一个符合条件的构造器时,自然会选择它作为初始化的构造器。然而,在上一节中,我们遇到了一种特殊情况:当有多个符合条件的构造器时,返回的是一个数组。在这种情况下,Spring又是如何从多个构造器中选择最合适的呢?今天,我们将讨论的主题......
  • POSTGRESQL (PG) 6种索引类型介绍以及使用实例
    Postgresql中主要支持6种类型的索引:BTREE、HASH、GiST、SP-GiSP、GIN、BRIN。可以根据实际的应用场景选择合适的索引,BTREE、HASH是比较常用的索引。1.BTREE索引:CREATEINDEX默认使用BTREE索引,适合按照顺序存储的数据进行比较查询和范围查询,查询优化器会优先考虑使用BTREE索引,如......
  • Elasticsearch 集群网络配置实例
    网络配置在elasticsearch中,客户端通过http与es进行通信;es集群节点间主要通过transport进行通信。在不同的网络环境下,需要进行相应的网络配置调整。简单网络环境单网卡假设只有一个网络接口A,IP地址为176.33.2.101、http通信端口9200、transport通信端口9300。#监听的IPnetw......
  • [转]Golang atomic.CompareAndSwapInt64()实例讲解
     原文: http://www.manongjc.com/detail/30-anadyrrwgsoebxp.html-------------- 在Go语言中,原子包提供lower-level原子内存,这对实现同步算法很有帮助。Go语言中的CompareAndSwapInt64()函数用于对int64值执行比较和交换操作。此函数在原子包下定义。在这里,您需要导入“syn......
  • Flink AggregatingState 实例
    FlinkAggregatingState实例AggregatingState介绍AggregatingState需要和AggregateFunction配合使用add()方法添加一个元素,触发AggregateFunction计算get()获取State的值需求:计算每个设备10秒内的平均温度importorg.apache.flink.api.common.eventtime.SerializableTimesta......
  • 实例详解如何构建动态SQL语句
    本文分享自华为云社区《GaussDB数据库SQL系列-动态语句》,作者:Gauss松鼠会小助手2。一、前言在数据库中构建动态SQL语句是指根据不同的条件或参数创建不同的SQL语句。这通常是为了适应不同的业务需求,提高SQL的灵活性和效率。GaussDB数据库是一款具备高性能、高可用性和高扩展性的......
  • 解密Spring中的Bean实例化:推断构造方法(上)
    在Spring中,一个bean需要通过实例化来获取一个对象,而实例化的过程涉及到构造方法的调用。本文将主要探讨简单的构造推断和实例化过程,让我们首先深入了解实例化的步骤。实例化源码protectedBeanWrappercreateBeanInstance(StringbeanName,RootBeanDefinitionmbd,@NullableO......
  • 使用SSH客户端登录Linux实例提示“ssh_exchange_identification: read: Connection re
    产品推荐:1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>;2、高防物理服务器20核/16G/50M/200G防御仅350元,点击抢购>>>3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>>使用SSH客户端登录Linux实例提示“ssh_exchange_identifi......
  • Java 辨析之实例化和初始化
    在面向对象编程中,实例化和初始化是两个相关但不同的概念:实例化(Instantiation):实例化是指创建一个类的新的具体对象的过程。当程序运行时,通过new关键字调用类的构造函数来创建该类的一个实例。例如,在Java中:MyClassmyObject=newMyClass();在这行代码中,newMyClass()就是......