linux下 iptables配置防火墙

netfilter的工作原理

我们以系统缺省的表为“filter”为例进行讲解。该表中包含了INPUT、 FORWARD和OUTPUT 3个链。每一条链中可以有一条或数条规则,每一条规则都是这样定义的“如果数据包头符合这样的条件,就这样处理这个数据包”。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件: 如果满足,系统 根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。最后,如果该数据包不符合该链中任一条规则的话,系统就会根据该链预先定义的策略(policy)来处理该数据包。当有数据包进入系统时,系统首先根据路由表决定将数据包发给哪一条链,则可能有以下三种情况:
(1)如果数据包的目的地址是本机,则系统将数据包送往INPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;
(2)如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往FORWARD链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉;
(3)如果数据包是由本地系统进程产生的,则系统将其送往OUTPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没通过规则检查,系统就会将这个包丢掉。

1、iptables有关的重要名词解释

netfilter提供了一系列的表,每个表由若干条链组成,而每条链又是由一条或数条规则组成。下面介绍一下在应用iptables会碰到的一些名词。
(1)规则:设置过滤数据包的具体条件,如IP地址、端口、协议、网络接口等。
(2)动作:当netfilter检测数据包符合制定的规则后,则会对该数据包进行相应的处理,处理的方式如下:

动作说明
ACCEPT允许数据包通过
DROP丢弃数据包
REJECT丢弃数据包并返回错误信息
LOG将符合该规则的数据写入日志
QUEUE传送给应用程序处理该数据包

(3)链:数据包在传递过程中,不同情况下所要遵循的规则组合形成了链。链可以分为内置链和用户自定义链。我们常用的是内置链,它一共有5个链,如下所示:

链名相关的动作
PREROUTING数据包进入路由表之前
INPUT通过路由表后目的地为本机
FORWARD通过路由表后,目的地不为本机
OUTPUT由本机产生,向外转发
POSTROUTIONG发送到网卡接口之前

(4)表:Netfileter根据处理数据的需要设计了三张表,表名分别是filter(该表为netfilter默认的表)、nat和mangle,这三张表的相关功能及分别对应的内置链如下所示:

表名作用内置链
filternetfilter默认的表,用于过滤设置INPUT、FORWARDING、OUTPUT
nat完成地址转换ORWARDING、OUTPUT、POSTROUTIONG
mangle用在数据包特殊变更操作全部的内置链
3、iptables的基本语法格式及分析

iptables的基本语法格式如下:
iptables [-t table] command [match] -j [target/jump ]
–t参数来设置对哪一张表生效,默认是filter表。如果是要对nat操作,则需要注明-t nat。
Command告诉程序该做什么,如:插入、或删除一个规则。如-A是代表在所选择的链的最后添加一条规则;而-D则是从所选的链中删除规则。
Match是用来指定过滤数据包所参照的条件。如源IP地址、网络接口、端口、协议类型等。如-p tcp代表针对TCP协议;-s 10.0.0.1是指针对源地址
为10.0.0.1的数据包;-i eth0是针对本地所使用的eth0网络接口。
Target/jump:通过对数据包与所有规则的匹配结果,内核将做出相应的处理动作。如-j ACCEPT表示当信息包与具有ACCEPT目标的规则完全匹配时会被接受(允许它前往目的地)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值