iptables具有Filter, NAT, Mangle, Raw四种内建表:
Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:
INPUT链 – 处理来自外部的数据OUTPUT链 – 处理向外发送的数据FORWARD链 – 将数据转发到本机的其他网卡设备上NAT表有三种内建链:
PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。OUTPUT链 – 处理本机产生的数据包。Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链:
PREROUTINGOUTPUTFORWARDINPUTPOSTROUTINGRaw表用于处理异常,它具有2个内建链:
PREROUTING chainOUTPUT chain规则链名:
INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
PORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。
动作:
accept:接收数据包。
DROP:丢弃数据包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。
LOG:日志记录。
#常用参数及命令 -t<表>:指定要操纵的表; -A:向规则链中添加条目; -D:从规则链中删除条目; -i:向规则链中插入条目; -R:替换规则链中的条目; -L:显示规则链中已有的条目; -F:清楚规则链中已有的条目; -Z:清空规则链中的数据包计算器和字节计数器; -N:创建新的用户自定义规则链; -P:定义规则链中的默认目标; -h:显示帮助信息; -p:指定要匹配的数据包协议类型; -s:指定要匹配的数据包源ip地址; -j<目标>:指定要跳转的目标; -i<网络接口>:指定数据包进入本机的网络接口; -o<网络接口>:指定数据包要离开本机所使用的网络接口。 shell> iptables-restore < /etc/iptables/empty.rules shell> iptables --flush shell> iptables -F shell> sudo iptables -L -n --line-numbers #显示行号 shell> iptables -D INPUT 1 #根据行号删除 shell> iptables -F # 删除所有 #开启ipv4转发 #临时 shell> echo "1" > /proc/sys/net/ipv4/ip_forward shell> sysctl net.ipv4.ip_forward=1 #永久 shell> echo 'net.ipv4.ip_forward=1' >>/etc/sysctl.conf #保存规则 shell> iptables-save > iptables.save #恢复规则 shell> iptables-restore < iptables.save