linux下面iptables的介绍和使用

iptables 使用Netfilter框架旨在将对数据包窒息感如(过滤)的函数挂接进网络栈。可以理解为Netfilter提供了一个框架,iptables在它之上建立了防火墙功能。

 

iptables的是什么

 

iptables的用户空间的命令行程序,用于配置Linux 2.4.x及更高版本IPv4报文过滤规则集。其目标是系统管理员。

iptables的包还包括 ip6tables。的 ip6tables被用于配置IPv6数据包过滤器。

 

依存关系

 

iptables的需要内核提供给ip_tables数据包过滤器。这包括所有的2.4.x及更高版本的内核版本。

 

主要特点

  • 列出的包过滤规则集的内容
  • 在添加/删除/修改规则的包过滤规则集
  • 上市/清空每个规则的包过滤规则集的计数器

 

 

Git树

当前开发版本的iptables的可访问在https://git.netfilter.org/iptables/

 

开发快照

 

我们现在还提供日常的开发过程中。他们可从以下的位置:ftp://ftp.netfilter.org/pub/iptables/snapshot(或我们的任何一个镜像)。

 

 

  iptables策略是由一组有序的规则建立的,它告诉内核应该如何处理某些类别的数据包。每一个iptables规则应用于一个表中的一个链。一个iptables链是一个规则集,这些规则按序语包含共同特征的数据包进行比较

   (1)规则表(table)由规则链的集合组成,不同的规则表用于实现不同类型的功能

   (2)规则链(chain)由规则的集合组成,保存在规则表中;在规则表中不同的规则链代表了不同的数据包流向

   (3)规则(rule)   是最基本的设置项,用于对防火墙的策略进行设置;流经某个数据链的数据将按照先后顺序经过规则的“过滤”

iptables缺省具有3个规则表:

   (1)Filter:用于设置包过滤

   (2)NAT:用于设置地址转换

   (3)Mangle:用于设置网络流量×××等应用

不同的规则表由不同的规则链组成

   (1) Filter:INPUT、FORWARD、OUTPUT

   (2)NAT:PREROUTING、POSTROUTING、OUTPUT

   (3)Mangle:PREROUTING、POSTROUTING、INPUT、OUTPUT和FORWARD

Iptables应用

 

    作为主机防火墙实现外部网络与主机之间的访问控制

    作为网络防火墙提供外部网络与内部网络的访问控制

    作为网关服务器实现网络地址转换(NAT)功能,实现内部网络通过网关主机共享访问外部网络

 

 

iptables配置文件与策略设置文件 

配置文件:/etc/sysconfig/iptables-config 

策略文件:/etc/sysconfig/iptables 

 

iptables [-t tables] [-L] [-n] 

参数说明:

  • -t:后面接 iptables 的 table ,例如 nat 或 filter ,如果没有 -t table的话,那么预设就是 -t filter 这个 table !
  • -L:列出目前的 table 的规则 
  • -n:不进行 IP 与 HOSTNAME 的转换,屏幕显示讯息的速度会快很多! 

 

iptables [-t tables] [-FXZ] 
 

参数说明:

-F :清除所有的已订定的规则; 

-X :杀掉所有使用者建立的 chain (应该说的是 tables ) 

-Z :将所有的 chain 的计数与流量统计都归零 

 

 

iptables [-t tables] [-P] [INPUT,OUTPUT,FORWARD| PREROUTING,OUTPUT,POSTROUTING]    [ACCEPT,DROP] 

 

参数说明:

-P   :定义政策( Policy )。注意,这个 P 为大写啊!

INPUT :封包为输入主机的方向;

OUTPUT :封包为输出主机的方向; 

FORWARD:封包为不进入主机而向外再传输出去的方向;

PREROUTING :在进入路由之前进行的工作; 

OUTPUT   :封包为输出主机的方向; 

POSTROUTING:在进入路由之后进行的工作。 

 

iptables [-t filter] [-AI INPUT,OUTPUT,FORWARD] [-io interface] [-p tcp,udp,icmp,all] [-s IP/network] [--sport ports] [-d IP/network] [--dport ports] -j [ACCEPT,DROP] 

 

参数说明: 

-A  :新增加一条规则,该规则增加在最后面,例如原本已经有四条规则,使用 -A 就可以加上第        五条规则! 

-I  :插入一条规则,如果没有设定规则顺序,预设是插入变成第一条规则,例如原本有四条规          则,使用 -I 则该规则变成第一条,而原本四条变成 2~5 

  •       INPUT :规则设定为 filter table 的 INPUT 链 
  •       OUTPUT :规则设定为 filter table 的 OUTPUT 链
  •       FORWARD:规则设定为 filter table 的 FORWARD 链 

-i     :设定『封包进入』的网络卡接口

-o    :设定『封包流出』的网络卡接口 

      interface :网络卡接口,例如 ppp0, eth0, eth1.... 

-p  :请注意,这是小写呦!封包的协定啦! 

  •       tcp :封包为 TCP 协定的封包;
  •       upd :封包为 UDP 协定的封包; 
  •       icmp:封包为 ICMP 协定、 
  •       all :表示为所有的封包! 

-s     :来源封包的 IP 或者是 Network ( 网域 );

--sport:来源封包的 port 号码,也可以使用 port1:port2 如 21:23 同时通过 21,22,23 的意           思 

-d     :目标主机的 IP 或者是 Network ( 网域 ); 

--dport:目标主机的 port 号码; 

-j   :动作,可以接底下的动作;

  •        ACCEPT :接受该封包 
  •        DROP  :丢弃封包 
  •        LOG  :将该封包的信息记录下来 (预设记录到 /var/log/messages 文件) 

-m :表示封包的状态,状态有底下数种:

 -m mac --mac-source aa:bb:cc:dd:ee:ff

  这个就是我们上面提到的可以控制 网卡卡号, MAC 的设定方法!  那个 aa:bb:cc:dd:ee:ff 就是网络卡的 MAC ! 

 

 -m state --state <状态> 

   有数种状态,状态有: 

   INVALID:无效的封包,例如数据破损的封包状态 

   ESTABLISHED:已经联机成功的联机状态; 

   NEW:想要新建立联机的封包状态; 

   RELATED:这个最常用!表示这个封包是与我们主机发送出去的封包有关,可能是响应封包或者是联机成功之后的传送封包!这个状态很常被设定,因为设定了他之后,只要未来由本机发送出去的封包,即使我们没有设定封包的 INPUT 规则,该有关的封包还是可以进入我们主机!

 

 

 

 

例如使用 8080 这个 port 来启动 WWW ,但是别人都以 port 80 来联机,所以,您就可以使用上面的方式来将对方对您主机的联机传递到 8080。

 

iptables -t nat -A PREROUTING -p tcp  --dport 80  -j REDIRECT --to-ports 8080 

 

 

ICMP的各项类别所代表的意义

类别代号  类别名称 意义
 Echo Reply 代表一个响应信息
Distination Unreachable 表示目的地不可到达
Source Quench 当 router  的负载过时,这个类别码可以用来让发送端停止继续发送讯息
Redirect 用来重新导向路由路径的信息 
 Echo Request 请求响应讯息
11  Time Exeeded for a Datagram 当数据封包在某些路由传送的现象中造成逾时状态,此类别码可告知来源该封包已被忽略的讯息 
12   Parameter Problem on a Datagram 当一个 ICMP 封包重复之前的错误时,会回复来源主机关于参数错误的讯息 
13  Timestamp Request  要求对方送出时间讯息,用以计算路由时间的差异,以满足同步性协议的要求
14 Timestamp Replay 此讯息纯粹是响应 Timestamp Request 用的 
15 Information Request  在 RARP 协议应用之前,此讯息是用来在开机时取得网络信息 
16  Information Reply  用以响应 Infromation Request 讯息
17  Address Mask Request  这讯息是用来查询子网络 mask 设定信息 
18 Address Mask Reply  响应子网络 mask 查询讯息的