Iptables 语法与格式
netfilter机制的命令结构:
      netFilter: INPUITFORWARDOUTPUT     filter的三种chain《最重要
      Nat:PREROUTINGPOSTROUTINGOUTPUT    nat的三种chain《地址转换
      Mangle: PREROUTINGINPUTFORWARD     mangle的五种chain《提供QOS
              OUTPUTPOSTROUTING              可以更改封包的内容
      RAW:    PREROUTINGOUTPUT             raw的两种chain《提高性能
Iptables命令参数:
        Iptables –t [ filter | nat | mangle | raw]
                -t参数的意义是功能是哪一个(默认是filter
Iptables的操作方式:
      -L        列出规则(table)内容,--line显示行号 (默认是filter)
      -F        清除规则(table)内容
      -A        加入新的规则
      -P        修改default policy (默认是ACCEPT
      -I        插入新的规则
      -R        配置新的规则取代旧的规则
      -D        删除规则
Iptables基本的规则语法:
1) 接口的匹配参数:
-i   匹配封包从哪个接口进入 例如: -i eth0
-o   匹配封包从哪个接口出去 例如: -o eth1
     (常见的网络接口: eth0 ppp0 lo fddi0 0代表第一块网卡,如果有多个就以此类推)
2)  协议的匹配参数:
-p   匹配使用的协议 例如: tcpudpicmp等也可使用all代表所有
     /etc/protocols文档中可以查看全部的协议及端口号
3 )  匹配来源/目的的IP地址:
-s   匹配封包的来源ip地址 例如: -s 192.168.10.100
-d   匹配封包的目的ip地址 例如: -d 172.16.10.100
     可匹配单一ip、网段(192.168.10.0/24)、FQDN名(www.baidu.com
4)匹配来源/目的的post位置:
--sport   匹配来源就是来源使用哪个服务端口回应客服端封包
          例如: --sport 110 匹配由pop3 Server回应客户端封包
--dport   匹配目的就是目的端要访问源端端哪个端口(服务)
          例如: --dport 80 匹配访问Web Server的封包
5)处理方式:
-j   ACCEPT 允许
     DROP   将封包丢掉
     REJECT 将封包丢掉,并回应发送端一个ICMP封包
结合以上参数语法编写一下规则:
使用shell脚本的方式
       #!/Variable
       VALUES=“/sbin/iptables –t filter”
       SERVER=192.168.10.100
       CLIENT=192.168.10.150
       #Clear Original Rule
       $VALUES –t filter –F
       #Set Default Policy
     $VALUES –t filter –P INPUT DROP
       $VALUES –t filter –P FORWARD DROP
       #Set Rule
       $VALUES –A INPUT –p tcp –m state –-state INVALID –j DROP
       $VALUES –A INPUT –p icmp –j DROP
       $VALUES –A INPUT –p tcp –d $SERVER –-dport 80 –j ACCEPT
       $VALUES –A INPUT –p tcp –s $CLIENT –d $SERVER –-dport 23 –j       ACCEPT
       $VALUES –A INPUT –p tcp –s $CLIENT –d $SERVER –-dport 22 –j j ACCEPT
规则编写完成后将脚本赋予700权限并将属组与属主改成root然后执行脚本。
使用service iptables save 指令将规则存储到/etc/sysconfig/iptables文件中。
/etc/rc.d/rc.local文件中的最后加入脚本的名称,需要决对路径
 
:如何解决无发在防火墙主机上对外建立连接的问题:
      解决方法:使用xt_state.ko模块该模块提供“连接追踪”功能
      Netfilter模块所在目录:
        /lib/modules/kernel_version/kernel/net/netfilter
      Iptables工具模块所在目录:
        /lib/iptables
      State模块的四种描述如下:
        ESTABLISHED NEW RELATED INVALID
       使用规则如下:
     I iptables –t filter –A INPUT –m state –-state ESTABLISHED –  j ACCEPT                                                                  iptables -t filter –A INPUT –m state –-state RELATED –j ACCEPT
   将以上两条规则添加到现有的规则中就可以了