Iptables入门
简介
Iptables是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具
相关名次和术语
容器
用来形容包含或者说属于的关系
Netfilter/iptables是表的容器,iptables包含的各个表
表(table)
iptables的表又是链的容器
链(chains)
INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
链是规则的容器
规则(Policy)
一条条过滤的语句 Policy
filter表
主要和主机自身有关,真正负责主机防火墙功能的(过滤流入流出主机的数据包)。filter表是iptables默认使用的表。这个表定义了三个链(Chains)
- INPUT: 负责过滤所有目标地址是主机地址的数据包。通俗的讲,就是过滤进入主机的数据包。
- FORWARD:负责转发流经主机的数据包。起转发的作用,和Nat关系很大。LVS NAT模式。net.ipv4_forward = 1
- OUTPUT:处理所有源地址是本机地址的数据包,通俗的讲,就是处理从主机发出去的数据包
nat表
负责网络地址转换,即来源与目的ip地址和port的转换。
应用:和主机本身无关。一般用于局域网共享上网或者特殊的端口转换服务相关
这个表定义了三个链(Chainc),nat功能就相当于网络的acl控制。和网络交换机acl类似。
- OUTPUT:和主机发出去的数据包有关。改变主机发出数据包的目标地址
- PREROUTING:在数据包到达防火墙时进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等
- POSTROUTING:在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址、源端口等,例如:我们现在的笔记本和虚拟机都是192.168.30.0/24,就是出网的时候被我们企业路由器把源地址改成了公网地址了,生产应用:局域网共享上网。
基本语法
iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION
-t table:是指操作的表,filter、nat、mangle或raw, 默认使用filter
COMMAND:子命令,定义对规则的管理
chain:指明链路
CRETIRIA:匹配的条件或标准
ACTION:操作动作
例如,不允许10.8.0.0/16网络对80/tcp端口进行访问,
iptables -A INPUT -s 10.8.0.0/16 -d 172.16.55.7 -p tcp –dport 80 -j
DROP
查看iptables列表
iptables -L -n
链管理
-N, –new-chain chain:新建一个自定义的规则链;
-X, –delete-chain [chain]:删除用户自定义的引用计数为0的空链;
-F, –flush [chain]:清空指定的规则链上的规则;
-E, –rename-chain old-chain new-chain:重命名链;
-Z, –zero [chain [rulenum]]:置零计数器;
-P, –policy chain target, 设置链路的默认策略
规则管理
-A, –append chain rule-specification:追加新规则于指定链的尾部;
-I, –insert chain [rulenum] rule-specification:插入新规则于指定链的指定位置,默认为首部;
-R, –replace chain rulenum rule-specification:替换指定的规则为新的规则;
-D, –delete chain rulenum:根据规则编号删除规则;
查看规则
-L, –list [chain]:列出规则;
-v, –verbose:详细信息;
-vv, -vvv 更加详细的信息
-n, –numeric:数字格式显示主机地址和端口号;
-x, –exact:显示计数器的精确值;
–line-numbers:列出规则时,显示其在链上的相应的编号;
-S, –list-rules [chain]:显示指定链的所有规则;