iptables是centOS里集成的强大,开源的防火墙软件,功能十分丰富(复杂)……
emmm,反正在我看来想摸透这玩意挺难的。。。
默认表filter nat|raw|mangle
数据包进表顺序raw-mangle-nat-filter
各个表包含的链:
raw: PREROUTING OUTPUT
mangle: PREROUTING POSTROUTING INPUT OUTPUT FORWARD
nat: PREROUTING POSTROUTING OUTPUT
filter: INPUT FORWARD OUTPUT
各个表的作用 :
raw:确定是否对该数据包进行状态跟踪
mangle:为数据包设置标记(较少使用)
nat:修改数据包中的源、目标IP地址或端口
filter:确定是否放行该数据包(过滤)
[命令结构]
iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-t table :3个表
COMMAND:定义如何对规则进行管理
chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的
CRETIRIA:指定匹配标准
-j ACTION :指定如何进行处理
[其他参数列表]
-V 查看版本
-L <链名> 查看链中的规则
-P <链名> <数据包处理方式> 修改链中默认的数据包处理方式
–line-number 显示行号
[规则操作]
<表名称> <操作(添加/插入/删除)> <链名称> <匹配规则> -j <处理措施>-A 添加到末尾 -D 删除 -I <链名> <行数> 添加到指定位置(注意,添加到哪一行,那么原来那一行的规则就会向后顺延)
匹配数据的规则
-i <网卡名称(eth0)> 匹配入口网卡
-o <网卡名称(eth0)> 匹配出口网卡
--dport <端口号> 匹配目的端口
-d 匹配目的地址
-s 匹配源IP
-p <协议名称(tcp/udp/icmp)> 匹配协议
-j 如何处理匹配的数据
DROP(丢弃),REJECT(拒绝),ACCEPT(接受),SANT(基于原地址的转换)
NAT转发
数据包经PREROUTING修改来源IP,经POSTROUTING修改目标IP
修改来源IP(将内网来的数据包转到外网时使用):iptables –t nat –A POSTROUTING –j SNAT --to-source <要改成的源IP>
修改目标IP(将外网来的数据包转到内网时使用):iptables –t nat –A PREROUTING –j DNAT --to-destination <要改成的目标IP>
端口转发iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080