IPTBLES结构:
table =====chain=================作用于那些包呢?
------------------------------------------------------------------------------
filter+------INPUT ---------------为来自外部,想要进入主机的数据包
|----- OUTPUT-------------为来自主机,想要离开主机的数据包
|----- FORWARD-------------把本机仅仅当作路由器
nat +------PREROUTING-----------先检查再路由(DNAT适用,把内网web服务器发布到internet上)
|-------OUTPUT--------------数据包来自本机,然后发出去!
|-------POSTROUTING---------先路由,后检查(SNAT,用防火墙带LAN上网)
mangle ----------平时没人用
处理流程:
据包经iptables转发流程
step1:先经过 NAT table 的 PREROUTING 链;
step2:经由路由判断确定这个封包是要进入本机与否,若不进入本机,则下一步;
step3:再经过 Filter table 的 FORWARD 链;
step4:通过 NAT table 的 POSTROUTING 链,最后传送出去。
参数:
-A 添加规则
-D 删除规则
-C 修改规则
-p 协议
-s 源IP
-d 目标IP
-i 指定网卡
-s 0/0 任意IP
--dport 目标端口
--sport 源端口
--syn 带syn的标示
DROP 禁止
QUEUE 队列
RETURN 返回
ACCEPT 允许
target 目标
案例:
iptables -F 清除所有规则
iptables -N 新建表
iptables -X 清除用户自定义表
iptables -t NAT -X 清除NAT表中所有用户定义规则
iptables -F -t NAT 清除NAT中所有规则链中的规则
iptables -P INPUT/OUTPUT/DORWARD DROP/ACCEPT 设置预设规则
iptables -A INPUT -p tcp --dport 80 -j ACCEPT 允许80进站
iptables -A INPUT -p icmp -j ACCEPT 允许所有的ICMP数据进站
iptables -t filter -A INPUT -s 123.123.123.0/24 -j DROP 阻止IP段访问
iptables -t filter -D OUTPUT -d 123.456.789.0/24 -j DROP 清除这条规则
iptables-save > /etc/sysconfig/iptables 保存配置
iptables -F; iptables -X; iptables -Z 清除配置
iptables -t nat -F; iptables -t nat -X; iptables -t nat -Z 清除配置
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT 接受DNS
iptables -I INPUT -p icmp --icmp-type 8 -j DROP 过滤ping