一、netfilter 链 表 规则  之间的关系及相关认识 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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

第一次写这么详细的学习心得,多有疏忽,希望博主及,各位博友指教。