ansile(2)模块之iptable

ansible iptables 模块说明

Iptables用于设置,维护和检查Linux内核中的IP包过滤规则的表。此模块不处理保存和/或加载规则,而是仅处理存在于内存中的当前规则。这与该模块在内部使用的“iptables”和“ip6tables”命令的行为相同。

以列表参数均来自官网,如果有出入,请参考官方文档

参数 是否必需 默认 选项 说明
action no append
append

insert

规则是应附加在底部还是插入在顶部。如果规则已经存在,则不会修改链。
chain no
链操作。此选项可以是用户定义链的名

称或任何内置链:‘INPUT‘,‘FORWARD‘,

‘OUTPUT‘,‘PREROUTING‘,‘POSTROUTING‘,

‘SECMARK‘,‘CONNSECMARK。

comment no 这指定将添加到规则的注释
ctstate no
ctstate是conntrack模块中要匹配的连接状态的列表。

可能的状态是:‘INVALID‘,‘NEW‘,

‘ESTABLISHED‘,‘RELATED‘,‘UNTRACKED‘,‘SNAT‘,‘DNAT‘

destination no 目标规范。地址可以是网络名称,主机名,网络IP地址(带有/ mask)或纯IP地址。只有在将规则提交给内核之前,主机名才会被解析一次。请注意,指定要使用远程查询(如DNS)解析的任何名称是一个很糟糕的主意。掩码可以是网络掩码或纯数字,指定网络掩码左侧的1的数目。因此,24的掩码等于255.255.255.0。一个 ”!”地址指定之前的参数反转地址的感觉。
destination_port no 目标端口或端口范围规范。这可以是服务名称或端口号。也可以使用格式first:last指定包含范围。如果省略第一个端口,则假设为“0”;如果省略最后一个,则假定为“65535”。如果第一个端口大于第二个端口,它们将被交换。
flush no 刷新所有规则的指定表和链。如果未指定链,则清除整个表。忽略所有其他参数。
fragment no 这意味着规则仅指分段分组的第二和另外的片段。由于没有办法告诉源或目的地端口这种分组(或ICMP类型),这样的分组将不匹配任何规定它们的规则。当。。。的时候 ”!”参数优先于fragment参数,则规则将仅匹配头碎片或未分段的数据包。
goto no 这指定处理应在用户指定的链中继续。与跳转参数不同,返回将不会在这个链中继续处理,而是在通过跳转调用我们的链中
icmp_type no
这允许指定ICMP类型,其可以是数字ICMP类型,类型/代码对,或命令“iptables -p icmp -h”所示的ICMP类型名称之一

in_interface no 接收数据包的接口名称(仅适用于进入INPUT,FORWARD和PREROUTING链的数据包)。当。。。的时候 ”!”参数在接口名称之前使用,感觉被反转。如果接口名称以“+”结尾,则以此名称开头的任何接口将匹配。如果省略此选项,则任何接口名称将匹配。
ip_version no ipv4
ipv4

ipv6

该规则应适用于哪个版本的IP协议。
jump no 这指定规则的目标;即如果分组匹配它要做什么。目标可以是用户定义的链(除了此规则所在的链之外),其中一个特殊内置目标立即决定数据包的命运或扩展(见下面的EXTENSIONS)。如果在规则中省略此选项(并且不使用goto参数),则匹配规则将对数据包的命运没有影响,但是规则上的计数器将增加。
limit no 指定每秒允许的最大匹配平均数。该数字可以使用`/ second‘,`/ minute‘,`/ hour‘或`/ day‘或其中的一部分来显式地指定单位(因此`5 / second‘与`5 / s‘相同)。
limit_burst no 指定在上述限制开始之前的最大突发数。
match no 指定要使用的匹配,即测试特定属性的扩展模块。匹配集合构成调用目标的条件。如果指定为数组并且以短路方式工作,则匹配被首先评估为最后,即如果一个扩展产生假,则评估将停止。
out_interface no 将要发送数据包的接口的名称(对于进入FORWARD,OUTPUT和POSTROUTING链的数据包)。当。。。的时候 ”!”参数在接口名称之前使用,感觉被反转。如果接口名称以“+”结尾,则以此名称开头的任何接口将匹配。如果省略此选项,则任何接口名称将匹配。
policy no 将链的策略设置为给定目标。有效的目标是ACCEPT,DROP,QUEUE,RETURN。只有建立在链中可以有政策。此参数需要chain参数。忽略所有其他参数。
protocol no 要检查的规则或数据包的协议。指定的协议可以是tcp,udp,udplite,icmp,esp,ah,sctp或特殊关键字“all”中的一个,或者它可以是表示这些协议之一或不同协议的数值。还允许来自/ etc / protocols的协议名称。一个 ”!”参数在协议反转测试之前。数字零等于所有。 “all”将与所有协议匹配,并在省略此选项时作为默认值。
reject_with no 指定拒绝时返回的错误包类型。
set_counters 这使管理员能够初始化规则的数据包和字节计数器(在INSERT,APPEND,REPLACE操作期间)。
set_dscp_mark no 这允许指定要添加到数据包的DSCP标记。它采用整数或十六进制值。相互排斥
set_dscp_mark_class no 这允许指定将被转换为相应的DSCP标记的预定义DiffServ类。相互排斥
source no 源规范。地址可以是网络名称,主机名,网络IP地址(带有/ mask)或纯IP地址。只有在将规则提交给内核之前,主机名才会被解析一次。请注意,指定要使用远程查询(如DNS)解析的任何名称是一个很糟糕的主意。掩码可以是网络掩码或纯数字,指定网络掩码左侧的1的数目。因此,24的掩码等于255.255.255.0。一个 ”!”地址指定之前的参数反转地址的感觉。
source_port no 源端口或端口范围规范。这可以是服务名称或端口号。也可以使用格式first:last指定包含范围。如果省略第一个端口,则假设为“0”;如果省略最后一个,则假定为“65535”。如果第一个端口大于第二个端口,它们将被交换。
state no present
present

absent

规则是否缺失或存在。
table no filter
filter

nat

mangle

raw

security

此选项指定命令应操作的数据包匹配表。如果内核配置了自动模块加载,则将尝试加载该表的相应模块(如果尚未存在)。
to_destination no 这指定了与DNAT一起使用的目标地址:没有这个,目标地址从不改变。
to_ports no
这指定要使用的目标端口或端口范围:没有此,目标端口从不更改。仅当规则还指定以下协议之一时,此选项才有效:tcp,udp,dccp或sctp。
to_source no 这指定了与SNAT一起使用的源地址:没有这个,源地址从不改变。
uid_owner no 指定在所有者规则匹配时使用的UID或用户名。
如有出入,参考官网

1.添加一条规则,来自10.1.1.2的请求都DROP掉

# ansible dbserver -m iptables -a "chain=INPUT source=10.1.1.2 jump=DROP"
172.16.110.49 | SUCCESS => {
    "chain": "INPUT", 
    "changed": true, 
    "failed": false, 
    "flush": false, 
    "ip_version": "ipv4", 
    "rule": "-s 10.1.1.2 -j DROP", 
    "state": "present", 
    "table": "filter"
}

查看结果:

# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  10.1.1.2             0.0.0.0/0

2.添加一条规则,通过ens33进入的请求本地80端口转发到8600

# ansible dbserver -m iptables -a "table=nat chain=PREROUTING in_interface=ens33 protocol=tcp match=tcp destination_port=80 jump=REDIRECT to_ports=8600"
172.16.110.49 | SUCCESS => {
    "chain": "PREROUTING", 
    "changed": true, 
    "failed": false, 
    "flush": false, 
    "ip_version": "ipv4", 
    "rule": "-p tcp -m tcp -j REDIRECT -i ens33 --destination-port 80 --to-ports 8600", 
    "state": "present", 
    "table": "nat"
}

查看结果:

# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination                
REDIRECT   tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 8600

3.添加一条规则,所以状态为RELATED,ESTABLISHED放行

# ansible dbserver -m iptables -a "chain=INPUT ctstate=‘ESTABLISHED,RELATED‘ jump=ACCEPT"   
172.16.110.49 | SUCCESS => {
    "chain": "INPUT", 
    "changed": true, 
    "failed": false, 
    "flush": false, 
    "ip_version": "ipv4", 
    "rule": "-j ACCEPT -m state --state ESTABLISHED,RELATED", 
    "state": "present", 
    "table": "filter"
}

查看结果:

# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

4.来自110.112.11.1请求的目标端口为8080限速为5/s

# ansible dbserver -m iptables -a "chain=INPUT protocol=tcp match=tcp destination_port=8080 source=110.112.11.1 limit=5/s jump=ACCEPT"
172.16.110.49 | SUCCESS => {
    "chain": "INPUT", 
    "changed": true, 
    "failed": false, 
    "flush": false, 
    "ip_version": "ipv4", 
    "rule": "-p tcp -s 110.112.11.1 -m tcp -j ACCEPT --destination-port 8080 -m limit --limit 5/s", 
    "state": "present", 
    "table": "filter"
}
查看结果:
# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  110.112.11.1         0.0.0.0/0            tcp dpt:8080 limit: avg 5/sec burst 5
时间: 2024-08-23 17:11:56

ansile(2)模块之iptable的相关文章

ansile(2)模块之get_url

ansible  get_url将文件从HTTP,HTTPS或FTP下载到节点 参数 是否必须 默认 选项 说明 attributes no None yes no 文件或目录的属性应该是.要获得支持的标志,请查看taget系统上chattr的手册页. backup no no 创建一个包括时间戳信息的备份文件,这样你可以得到原始文件,如果你不正确地弄错了. checksum no 如果将校验和传递给此参数,则将在下载目标文件的摘要后计算摘要,以确保其完整性,并验证传输是否成功完成.格式:<al

ansile(2)模块之copy

ansible copy模块用来文件复制,说明如下: 参数名 选项 必须 参数说明 backup yes/no no 备份远程节点上的原始文件,在拷贝之前.如果发生什么意外,原始文件还能使用. content yes/no no 用来替代src,用于将指定文件的内容,拷贝到远程文件内 dest  yes/no yes 用于定位远程节点上的文件,需要绝对路径.如果src指向的是文件夹,这个参数也必须是指向文件夹 directory_mode  yes/no no 这个参数只能用于拷贝文件夹时候,这

ansile(2)模块之service

ansible service模块 参数选项来自官网,如果有出入,以官网为主 参数 是否必须 默认 选项 说明 arguments no 命令行参数 enabled no yes no 设置服务是否开机启动 name yes 服务名称 pattern no 定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行 runlevel no default 服务运行级别 sleep no 设置start和sto

ansile(2)模块之script

ansible script模块用来为远端目标主机运行管理机(本地)的脚本 参数 是否必须 默认 选项 说明 creates no 当文件存在,这步不运行 free_form yes 运行参数 removes no 当文件不存在时,这步不允许 运行脚本示例 # cat ckl.sh  #!/bin/bash ps -ef | grep httpd | grep -v grep date echo "*******************" # ansible webserver -m 

ansile(2)模块之cron

ansible cron 模块就是计划任务,很简单 backup:操作之前先备份目标主机上的原计划任务 cron_file:如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户的任务计划 day: 指定日(1-31,*,*/1,--) hour:指定小时(0-23,*,*/2,--) minute:指定分钟(0-59,*,*/3,--) month:指定月(1-12,*,*/4,--) weekday:指定周(0-7,*,--) job:要执行的任务,依赖于state=presen

ansile(2)模块之group

ansible group模块与系统命令使用相似 参数 是否必要 默认 选项 说明 gid no 选择需要设置的GID name yes 需要配置的组名 state no present present absent 添加或删除组 system no no yes no yes时添加的是系统组 添加组 # ansible dbserver -m group -a "name=zld state=present" 172.16.110.49 | SUCCESS => {     &

ansile(2)模块之file

ansbile file模块大体功能同copy模块,下面看看参数 参数 选项 必须 说明 follow yes/no no 如果原来的文件是link,拷贝后依旧是link follow yes/no no 强制文件操作 recurse yes/no no 递归设置目录的属性 group yes/no no 设定一个群组拥有拷贝到远程节点的文件权限 mode  yes/no no 等同于chmod,参数可以为"u+rwx or u=rw,g=r,o=r" owner yes/no no

ansile(2)模块之synchronize

ansible synchronize作用跟rsync很相似,具体参数如下: 参数内容,均来自官网,如果有出入,以官网为主 参数 是否必须 默认 选项 说明 archive no yes yes no rsync镜像递归标志,启用递归,链接,权限,时间,属主,属组标志和 -D checksum no no yes no 跳过基本的校验 compress no yes yes no 在传输过程中压缩文件数据.在大多数情况下,请保持启用,除非它导致问题. copy_links no no yes n

ansile(2)模块之yum

ansible yum 使用yum软件包管理器安装,升级,删除和列出软件包和组. 参数来自官网,如有出入,以官网为准 参数 是否必须 默认 选项 说明 conf_file no 用于事务的远程yum配置文件. disable_gpg_check no yes no 是否禁用GPG检查正在安装的软件包的签名.只有当状态存在或最新时才有效. disablerepo no 复制存储库以禁用安装/更新操作.这些回购将不会持续到事务之外.指定多个回购时,请用","分隔它们. enablerepo