Iptables是Linux提供的一个非常优秀的防火墙工具—。它完全免费、功能强大、使用灵活、可以对流入和流出的信息进行细化控制,且可以在一台低配置机器上很好地运行。本文将简单介绍的基础知识,以及使用Iptables实现共享上网。

iptables  常用命令

iptables  [-t  table] [command]  链名  [match] -j [target]

1.     [-t table]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三个可用的表选项:filter、nat和mangle。该选项不是必需的,如果未指定,则filter作为缺省表。

nat                        用于要转发的信息包 包括一下链
              POSTROUTING            出口 SNAT使用
              PREROTING              进口 DNAT,重定向 
 filter                     用于一般的信息包过滤  包括以下链
              INPUT                  进入防火墙的流量 
              OUTPUT                 从防火墙发出的流量
              FORWARD                通过防火墙的流量
 mangle                     包含一些规则用于高级路由的信息

2.command部分是iptables命令最重要的部分。它告诉iptables命令要做什么,例如插入规则、将规则添加到链的末尾或删除规则

指令                         全部大写
                 -A   --append                                                增加策咯                         
                 -D    --delete    链名  编号                           删除策咯
                 -I   --insert    链名  编号                              插入策咯
                 -R   --replace  链名  编号                            替换策咯
                 -F    --flush   刷空                                         清空策咯
                 -P    --policy                                                  设置默认策略

3.匹配(match)

iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源地址、目的地址、协议等)。匹配分为通用匹配和特定于协议的匹配两大类。这里将介绍可用于采用任何协议的信息包的通用匹配。

来源 

-s 地址 / 范围 (子网  网络)
                -i 接口 (入口)
              目标 
                -d  地址 / 范围 (子网   网络)
                -o  接口  (出口)
             协议 
                -p tcp   --dport  --sport 
                   标志位 ( SYN ACK FIN RST URG PSH ALL NONE)
                -p tcp --tcp-flags
                   标志位 ( SYN ACK FIN RST URG PSH ALL NONE)
                -p
                  icmp 
                     --icmp-type [!] typename
                                echo-reply / 0
                                 echo-request  /84.目标(target)
 ACCEPT  REJECT  DROP  SNAT  DNAT  REDIRECT(端口重定向)        MASQUERADE (SNAT)      
iptables 应用
[root@mail ~]# service iptables
  用法:/etc/init.d/iptables {start|stop|restart|condrestart|status|panic|save}查看
[root@mail ~]# iptables -t [tables] -L -n -v
实例
为了保证较为严格的控制可设置默认策略为DROP
 [root@mail ~]# iptables -P INPUT DROP aksdfj
 [root@mail ~]# iptables -P OUTPUT DROP 
 [root@mail ~]# iptables -P FORWARD DROP 允许192.168.101.130 sshd 登陆
iptables -t filter -A INPUT -s 192.168.101.130 -p tcp --dport 22  -m state --state NEW,ESTABLISHED -j ACCEPT
         iptables -t filter -A OUTPUT -d 192.168.101.130 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPTy允许192.168.2.0网段的客户机NAT转换             
      iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j SNAT --to 192.168.101.100
               iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
          设置192.168.101.100D NAT为192.168.2.100              iptables -t nat -A PREROUTING -d 192.168.101.100 -i eth0 -j DNAT --to 192.168.2.100 
       开启127.0.0.1  
               iptables -t filter -A INPUT -i lo -j ACCEPT
               iptables -t filter -A  OUTPUT -o lo -j ACCEPT
            开启ping 通过
               iptables -t filter -A INPUT -s 192.168.101.100 -p icmp --icmp-type echo-request(8) -j ACCEPT
               iptables -t filter -A OUTPUT -d 192.168.101.100 -p icmp --icmp-type echo-type echo-replay(0)  -j ACCEPT
            允许DNS的NAT转换和通过
               iptables -t nat -A POSTROUTING -m iprange --src-range 192.168.2.21-192.168.2.40 -m time --weekdays Mon,Tue,Wed,Thu,Fri --timestart 08:00 --timestop 20:00 -p udp --dport 53 -o eth0 -j MASQUERADE
               iptables -t filter -I FORWARD 2 -m iprange --src-range 192.168.2.21-192.168.2.40 -p udp --dport 53 -j ACCEPT