四表五链
Filter表
Filter是iptables的默认表,它有以下三种内建链(chains)
INPUT --> 处理来自外部的数据
OUTPUT --> 处理向外发送的数据
FORWARD链 --> 将数据转发到本机的其他网卡设备上
NAT表
PREROUTING链:处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址,通常用于DNAT
POSTROUTING链:处理即将离开本机的数据包。他会转换数据包中的源IP地址,通常用于SNAT
OUTPUT链:处理本机产生的数据包
Mangle表
用于指定如何处理数据包。他能改变TCP头部中的Qos位。Mangle具有5个内建链:
-PREROUTING
-OUTPUT
-FORWARD
-INPUT
-POSTROUTING
Raw表
用于处理异常,具有2个内建链:
PREROUTING
OUTPUT
iptables选项
-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清除规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
iptables -I:默认插入到第一行,原有规则后移。
iptables -A :默认追加到最后一行。
白名单模式
1、默认所有IP都不可以访问设备
2、将白名单的IP允许访问
#所有IP不可访问: iptables -A INPUT -j DROP
具体操作:
iptables -I INPUT -p tcp --dport 22 -j ACCEPT #先把22端口打开,避免连不上ssh
iptables -I INPUT -s IP地址 -j ACCEPT #这里IP地址为允许访问的IP地址
iptables -A INPUT -j DROP #禁止所有IP访问
iptables -t filter -nL INPUT --line-numbers #查看规则
iptables -D INPUT 数字 #删除指定数字的规则,这个数字是上一条命令查看规则的数字