使用前准备工作

  • 关闭firewalld,firewalld和iptables使用会有冲突。

    systemctl disable --now firewalld
    
  • 删除iptables自带的原有规则,自带规则不一定符合现场环境。

    systemctl disable --now iptables
    

使用iptables

简述

iptables命令格式

iptables [-t table] SUBCOMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]

使用范例

一、查看

  • -v:详细信息。
  • -n:以数字形式显示地址和端口号。
  • -L:列出指定链上的所有规则,本选项需要后置。
  • -S:selected,以iptables-save命令格式显示链上规则。
  • --lien-number:显示规则编号。
范例一:数字形式查看。
iptables -t filter -vnL --lien-number
Chain INPUT (policy ACCEPT 61 packets, 5108 bytes)
 pkts bytes target prot opt in out source         destination         
    0     0 REJECT all  --  *  *   192.168.10.13  0.0.0.0/0  
范例二:iptables-save命令格式查看。
iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -s 192.168.10.13/32 -j REJECT --reject-with icmp-port-unreachable

二 、链管理类

  • -j:targetname [per-target-options]。
  • -N:new, 自定义一条新的规则链 。
  • -E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除 。
  • -X:delete,删除自定义的空的规则链 。
  • -P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT:接受, DROP:丢弃。
范例一:在nat表上添加一条新的链。
iptables -t nat -N chain_name
范例二:重命名这条链。
iptables -t nat -T chain_NAME CHAIN_NAME
范例三:删除这条链。
iptables -t nat -X CHAIN_NAME

三、规则管理类

  • -A:append,追加。

  • -I:insert, 插入,要指明插入至的规则编号,默认为第一条 -D:delete,删除。

    • 指明规则序号。

    • 指明规则本身 。

  • -R:replace,替换指定链上的指定规则编号 。

  • -F:flush,清空指定的规则链 。

  • -Z:zero,置零。iptables的每条规则都有两个计数器 。

    • 匹配到的报文的个数。

    • 匹配到的所有报文的大小之和。

范例一:追加添加。Filter表的INPUT链上以追加的方式添加规则。
# 将新添加的规则,放在表的最后进行追加。
iptables -t filter -A INPUT -s 192.168.1.10 -j DROP
范例二:插入添加。Filter表的INPUT链上以插入的方式添加规则。
# 将规则插入至INPUT链的第一行,可知原第一条规则变为现在的第二条,(默认情况下插入到第一行)。
iptables -t filter -I INPUT -s 192.168.1.10 -j ACCEPT 
# 将规则插入至INPUT链的第三行,可知原第三条规则变为现在的第四条,前一、二条不变。
iptables -t filter -I INPUT 3 -S 192.168.1.10 -j DROP
范例三:替换。在Filter表的INPUT链上替换原有规则。
# 替换INPUT链上第二行的规则,使192.168.1.0/24这个网段上的地址都被拒绝访问。
iptables -t filter -R INPUT 2 -s 192.168.1.0/24 -j REJECT
范例四:删除。删除Filter表的INPUT链上的规则。
# 删除INPUT链第二行的规则,删除第几行的规则直接写上此行的编号即可。
# 注意:删除第二行规则后,原先第三行会变为第二行;随之改变的还有元第三行的编号,此编号会由原来的3变为2。
iptable -t filter -D INPUT 2
# 清除iptables上的所有规则。
iptables -F