一、netfilter 链 表 规则  之间的关系及相关认识
netfilter是表的容器,表是链的容器,链是规则的容器。 
1、filter表      实现包过滤(默认的表)
            INPUT           链    处理进入本机的数据包
           FORWORD        链    处理转发的数据包
              OUTPUT       链    处理本地生成的数据包
   该表只允许两种规则 ACCEPT DROP
2.、 nat表        网络地址转换用 (可实现一对一,一对多,多对多等的NAT工作)
          PREROUTING       链     处理即将进入本机的数据包
          POSTROUTING      链     处理即将发出的数据包
             OUTPUT         链     处理在路由之前待转换的本地生成的数据包
3.   Mangle 表  主要用于对指定的包进行修改,适用于以上五种链。
二、
 此句示例
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.1.100
  将数据包的源地址转换为 192.168.1.100
      
此句示例
Iptables -t nat -A PREROUTING  -i etho -p tcp --dport 80 -j DNAT --to 5.6.7.8:8080
改变对网卡eth0 80端口的请求的数据包的目的地址到5.6.7.8的8080端口
注:DNAT 多用于发布内网的服务。
三、将案例说明中的规则写成了脚本 ,以方便于实际适用
  该案例图片来源于[url]http://redking.blog.51cto.com/27212/143185[/url]
  该案例图片来源于[url]http://redking.blog.51cto.com/27212/143185[/url]
具体脚本如下:
#!/bin/bash
echo "starting iptables rules...."
#启用路由转发功能
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#以下三步可省略,默认是开启的
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptalbes -t nat -P POSTROUTING ACCEPT
#允许回环地址的通信
iptables -A INPUT -i lo -j ACCEPT
#添加连接状态设置
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#开放80端口
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
#开启DNS使用UDP、TCP的53端口
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
#开启SSH使用的TCP协议22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放QQ,MSN相关端口
iptables -A FORWARD -p tcp --dport 1863 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -p tcp --dport 8000 -j ACCEPT
iptables -A FORWARD -p udp --dport 8000 -j ACCEPT
iptables -A FORWARD -p tcp --dport 4000 -j ACCEPT
#开放邮件端口
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT 
iptables -A FORWARD -p udp --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp --dport 143 -j ACCEPT 
iptables -A FORWARD -p udp --dport 143 -j ACCEPT
iptables -A FORWARD -p tcp --dport 993 -j ACCEPT 
iptables -A FORWARD -p udp --dport 993 -j ACCEPT
iptables -A FORWARD -p tcp --dport 995 -j ACCEPT 
iptables -A FORWARD -p udp --dport 995 -j ACCEPT
#nat设置
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE
#发布内网web服务器
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.3:80
#end
 
 
附注:屏蔽QQ MSN时 除了可以屏蔽端口外,还可以屏蔽域名和IP
 Iptables -A FORWARD -d 域名或IP -j DROP
可将以上脚本内容命名为filter-dnat 并加入启动文件中
 具体操作
Touch /etc/rc.d/filter-dnat
Chmod u+x /etc/rc.d/filter-dnat
Echo "/etc/rc.d/filter-dnat" >> /etc/rc.d/rc.local
第一次写这么详细的学习心得,多有疏忽,希望博主及,各位博友指教。