Linux Iptables

  • iptables是Linux中内核防火墙,可以对出入计算机的流量进行控制。
  •  iptables -t --table [tablename]:系统中默认的表有五个:
  1.   filter表:(如果没有提供-t选项,默认使用filter表)。filter表中有 INPUT,FORWARD,OUTPUT三条链,INPUT链对入站数据包进行检测,FORWARD链对路由数据包进行检         测,OUTPUT对本机产生的出站数据包进行检测。
  2.   nat表:使用本机做NAT转换时使用这个表。nat表中有PREROUTING,OUTPUT,POSTROUTING三条链:当数据包到达本机时PREROUTING链就起作用,对数据包进行检          查;OUTPUT链对本机产生的即将被路由的数据包发挥作用;当数据将要离开时,POSTROUTING链发挥作用。
  3.   mangle表:修改包中的参数。mangle表中有INPUT,OUTPUT,PREROUTING,POSTROUTING,FORWARD五条链:INPUT对入站数据包做更改,OUTPUT对本机产生的出         站数据包参数做出更改;PREROUTING对即将进行路由的数据包做更改;POSTOUTING对将要出站的数据包进行更改;FORWARD对经过本机路由的数据包进                  行参数修改。
  4.   raw表:修改数据链路层数据。有PREROUTING,OUTPUT两条链。PREROUTING对到达本机网络接口的数据发挥作用,OUTPUT对本机产生的数据发挥作用。
  5.   security表:配置MAC(Mandatory Acess Control)规则,有INPUT,OUTPUT,FORWARD三条链;INPUT对入站数据设置规则,OUTPUT对出站数据配置规则,              FORWARD对经过本站路由的数据设置规则。

OPTIONS

  COMMANDS

    -A --append  chain rule-specification 向一条链中追加一条规则

    -C --check chain rule-specification 检查某条链中是否包含匹配的规则,和-D有同样的作用,但是-C不更改已经存在的规则,仅返回代码表示成功或者失败。

    -D --delete chain rule-specification

    -D --delete chain rule-number 删除某一个或多个规则

    -I --insert chain [rulenum] rule-specification 在某条链路规则前添加一条规则,默认规则是1

    -R --replace chain rulenum rule-specification 替换选定链中的某条规则,如果源目标或者目的目标涉及多个名字,这条命令将会执行失败。

    -L --list chain 列出所有的链,如果未指定表名,则默认为filter表。

    -S --list-rules 列出所有的链,如果未指定表名,则默认为filter表。

    -F --flush chain 删除选定链中的左右规则,如果未指定规则,将会删除所有链中的所有规则

    -Z --zero [chain[rulenum]] 重置选定链指定规则中的计数器,如果未制定链和规则,将重置所有计数器

    -P --policy chain target 只有内建的链可以使用策略(用户建立的链不可以使用策略),内建链和用户链都不可以成为策略目标

    -E --rename-chain old-chain new-chain 重命名链名称(没有实质性作用)

    -h help 提供语法描述

PARAMETERS

  以下参数用在OPTION中(add,delete,insert,append,replace)组成规则

    -4 --ipv4

    -6 --ipv6

    [!] -p --protocol protocol 协议名称,可以是tcp,udp,udplite,icmp,icmpv6,esp,ah,sctp,mh或者是all(表示全部协议)也可以是某一个数字,0代表全部协议。!表示对      规则取反

    [!] -s --source(或者--src) address[/mask][,...] 指定源目标地址

    [!] -d --destination(或者--dst) address[/mask][,...] 指定目标地址

    -m --match match 指定一个匹配规则

    -j --jump target 指定规则要跳转的目标,如果target为一个rule而没有提供-g选项,规则的计数器值会自动增加,但是将不会对数据包起作用

    -g --goto chain  指定一个链将会对数据包继续起作用,而不像--jump那样返回而不再起作用

    [!] -i --in-interface name 接收数据的端口名称,仅对INPUT,FORWARD,PREROUTING三条链起作用,如果interface name以+结束,那么任何以这个名字开始的端口都将      被匹配

    [!] -o --out-interface name  发送数据端口名称,仅对OUTPUT,FORWARD,POSTOUTING三条链起作用,如果interface name以+结束,那么任何以这个名字开始的端      口都将被匹配

    [!] -f --fragement 仅匹配IPV4第二个或者以后的数据片(fragement)

    -c --set-counters packets bytes

    

原文地址:https://www.cnblogs.com/websocket/p/5250246.html