iptables 工具

参考文档:
 
netfilter/iptabels应用程序,被认为是Linux中实现包过滤功能的第四代应用程序。
netfilter/iptables包含在2.4以后的内核中,它可以实现FirewallNAT(网络地址转换)和数据包的分割等功能。
netfilter工作在内核中,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集;
iptables工作在用户态空间,它使插入、修改和除去信息包过滤表中的规则变得容易。
 
iptables读取流入和流出数据包的报头,将它们与规则集(Rule set)相比较:
1、将可接受的数据包从一个网卡转发至另一个网卡;
2、对被拒绝的数据包,可以丢弃或按照所定义的方式来处理。
 
根据规则所处理的信息包类型,可以将规则分组在链中:
1、处理入站信息包的规则被添加到INPUT链中;
2、处理出站信息包的规则被添加到OUTPUT链中;
3、处理正在转发的信息包的规则被添加到FORWARD链中;
这三个链是基本信息包过滤表中内置的缺省主链。另外,还有其他许多可用的链的类型(如PREROUTING和POSTROUTING),以及提供用户自定义的链。
每个链都可以有一个策略,它定义“缺省目标”,也就是要执行的缺省操作,当信息包与链中的任何规则都不匹配时,执行此操作。
 
 
 
iptables有多张table(如下),每个table又包含若干chains,每条chain是由一组rules构成;
table name
description
operation
filter (default)
用于包过滤,包含 INPUT 、OUTPUT 和 FORWARD链
ACCEPT、DROP、REJECT、LOG
nat
转换包的源或目的地址,包含 PREROUTING 、OUTPUT 和 POSTROUTING链
SNAT、DNAT、MASQUERADE
mangle
包含一些规则来标记用于高级路由的信息包,包含 PREROUTING 、OUTPUT 链
TOS、TTL、MARK
 
 
 
 

以本地为目的的包
step
table
chain
comment
1
 
 
在 Internet线路上传输
2
 
 
进入网卡接口(如 eth0 )
3
mangle
PREROUTING
 
4
nat
PREROUTING
这个链主要做 DNAT
5
 
 
路由判断,包是要转发还是送往本地
6
mangle
INPUT
 
7
filter
INPUT
这里可以加过滤
8
 
 
到达本地的应用程序
  
 
以本地为源的包
step
table
chain
comment
1
 
 
本地的应用程序
2
 
 
路由判断
3
mangle
OUTPUT
 
4
nat
OUTPUT
这个链主要做 DNAT
5
filter
OUTPUT
这里可以加过滤
6
mangle
POSTROUTING
 
7
nat
POSTROUTING
这个链主要做 SNAT
8
 
 
离开网卡接口(如 eth0 )
9
 
 
在 Internet线路上传输
  
 
转发的包
step
table
chain
comment
1
 
 
在 Internet线路上传输
2
 
 
进入网卡接口(如 eth0 )
3
mangle
PRETROUTING
 
4
nat
PRETROUTING
这个链主要做 DNAT
5
 
 
路由判断,包是要转发还是送往本地
6
mangle
FORWARD
特殊情况才使用
7
filter
FORWARD
转发的包会走该链,进行过滤
8
mangle
POSTROUTING
特殊情况才使用
9
nat
POSTROUTING
这个链主要做 SNAT
10
 
 
离开网卡接口(如 eth0 )
11
 
 
在 Internet线路上传输
  
 
 
filter表
INPUT链针对目的是本地的包;
OUTPUT链过滤本地生成的包;
FORWARD链过滤不是本地产生的,且目的地也不是本地的包(即转发的包);
 
nat表
属于一个流的包只会经过nat表一次,如果第一个包被允许做nat,其后的包会自动被做相同的处理;所以nat表不要做任何过滤操作;
PREROUTING链的主要作用是包刚刚到达firewall时改变它的目的地址;
POSTROUTING链的主要作用是包离开firewall时改变其源地址;
OUTPUT链改变本地产生的包的目的地址;
 
mangle表
不建议在mangle表里做任何过滤;
 
 
 
iptables 命令格式
 
对来自某个源地址,到达某个目的地址或具有特定协议类型的信息包要做些什么指令、规则控制信息包的过滤,
可以通过使用iptables系统提供的命令去建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。
 
关于添加、去除、编辑规则的命令,一般语法如下:
iptables [-t table] command [chain] [rules] [-j target]
 
[-t table] :用来指明使用的表, 可以为: filter(缺省表), nat 和 mangle。 
 
command 表明iptables命令要做什么,比如:

-L <CHAIN>, -S <CHAIN>
列出链中的所有规则;输出格式不同

-I <CHAIN>, -A <CHAIN>
插入一条规则,I此规则会作为链的第一条规则;A则会在最后一条

-D <CHAIN> N, -D <CHAIN>
删除一条规则,可以明确指明规则内容,也可以用N指出链中的第N条

-F <CHAIN>, -Z <CHAIN>
F清除链中的所有规则,不指明链,则清除所有链;Z则是只清除计数器,不清除规则

-P <CHAIN>
指定某条链的默认动作,ACCEPT、DROP或REJECT等

 
chain 表明操作的链,例如INPUT、OUTPUT、FORWARD等;
rules 匹配的包规则,同一条规则里的多个条件是“与”的关系,比如:

-p, --protocol
协议匹配,如 -p tcp

-s, --src, --source
来源匹配,如 -s 202.108.37.49

-d, --dst, --destination
目的匹配,如 -d 172.16.115.117

-i, --in-interface
入网卡接口匹配,如 -i eth0

-o, --out-interface
出网卡接口匹配,如 -o eth1

--sport, --source-port
来源端口匹配(tcp或udp),如 --sport 80;也可以用端口范围,如 --sport 135:139

--dport, --destination-port
目的端口匹配(tcp或udp),如 --dport 80;同样支持端口范围

--tcp-flags
tcp状态匹配,如 --tcp-flags RST RST

-m mac --mac-source
mac地址匹配,如 -m mac --mac-source 00:1E:C9:B0:53:D2

-m multiport --source-port , --destination-port
多端口匹配,如-m multiport --destination-port 80,443

-m iprange
简单的指定ip范围。用--src-range或--dst-range匹配,如 -m iprange --src-range 192.168.1.33-192.168.1.50

-m time
指定匹配时间(UTC),可以使用--datestart、--datestop、--timestart或--timestop等参数。如 -m time --datestart 2014-01-01T00:00:00 --datestop 2014-12-31T23:59:59 。注意时间是UTC时间。

 
target: 是由规则指定的操作。 包括下面几种:
-j ACCEPT:
接收信息包(允许它前往目的地),并且将停止遍历chain;
 
-j DROP
默默丢弃包(对方不知道);
 
-j REJECT
拒绝包,会发RST明确通知对方拒绝;
 
-j SNAT

源地址转换,如 -j SNAT --to 61.135.152.194

-j MASQUERADE
类似SNAT,但是根据默认路由转换,适用于动态ip(不需要指明转换后的地址)

-j DNAT
进行目的地址转换,如 -j DNAT --to-destination 192.168.0.254

-j REDIRECT
(对于tcp和udp)进行端口重定向,如 -j REDIRECT --to-ports 8080

此外还有, RETURN, LOG, MARK, MIRROR, MAQUERADE等。 
 

 
 
 
 
应用场景
 
1、查看已添加的规则
iptables -L -n
iptables -t nat -L
 
2、保存
/etc/rc.d/init.d/iptables save
 
3、删除已添加的规则
iptables -L -n --line-numbers
 
4、清除已有的规则
iptables -F          清除filter表的所有规则
iptables -X          清除filter表中用户自定义的规则
iptables -Z          
 
5、开放指定的端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
  
6、阻止一个IP连接本机
iptables -t filter -A INPUT -s 192.168.1.5  -i eth0 -j DROP
  
7、端口转发
iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 81 -j DNAT --to-destination192.168.0.2:8180
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.0.0 -d 192.168.0.2 -p tcp -m tcp --dport 8180 -j SNAT --to-source 192.168.0.1
 
8、

丢弃RST包

iptables -I INPUT -p tcp --sport 80 --tcp-flags RST RST -j DROP

 

iptables 工具的更多相关文章

  1. iptables工具

    http://www.linuxidc.com/Linux/2012-12/77074.htm iptables 指令 语法: iptables [-t table] command [match]  ...

  2. iptables 工具的使用

    试验建议:关闭CentOS 7 或 CentOS 6的防火墙 (systemctl stop firewalld ; systemctl disable firewalld 或 service ipt ...

  3. 【Redhat系列linux防火墙工具】firewalld与iptables防火墙工具的激烈碰撞

    前言 iptables与firewalld防火墙管理工具在linux发行版Redhat7系列使用较为广泛. UFW则是在linux发行版Ubuntu下进行管理防火墙的一款管理工具. 在选用防火墙工具的 ...

  4. Linux防火墙简介及iptables的基本使用

    一.防火墙基础知识 iptables/netfilter:网络防火墙,连接追踪(状态检测) netfilter:工作内核中,让规则能够生效的网络框架(framework) iptables:防火墙规则 ...

  5. linux 的iptables防火墙

    .a文件就是*.o文件的集合, 是object文件的归档文件, 所以, 用nm -A  ???.a看到的 symbolic符合名称都是 相应的,  包含的  .o文件.... linux 2.4内核中 ...

  6. iptables和netfilter

    1.iptables和netfilter说明 [1]netfilter/iptables组成Linux平台下的包过滤防火墙,iptables是用户空间的管理工具,netfilter是内核空间的包处理框 ...

  7. Linux iptables 命令

    iptables 是 Linux 管理员用来设置 IPv4 数据包过滤条件和 NAT 的命令行工具.iptables 工具运行在用户态,主要是设置各种规则.而 netfilter 则运行在内核态,执行 ...

  8. iptables 分析(1)

    原文:http://blog.chinaunix.net/uid-24207747-id-2622900.html iptables 是用户空间中用于管理包过滤及NAT 等的工具应用程序.它设置防火墙 ...

  9. iptables四表五链及默认规则使用,

    网络基础 TCP/IP模型: 应用层===传输层===网络层===数据链里层===物理层 数据封装: MAC帧头+IP报头+TCP/UDP报头===HTTP请求 数据帧 TCP/UDP报头: 随机产生 ...

随机推荐

  1. int 与Integer的用法与区别

    1.int是基本类型,直接存取数值,Integer是对象,用一个引用指向这个对象. 2.java中的数据类型分为基本数据类型和复杂数据类型,int是前者,Integer是后者(也就是一个类). 3.初 ...

  2. 又折腾到这么晚 , 图片Viewpager PagerIndicator,listview 和侧边栏滑动的事件处理

    代码 思路 根据坐标判断 事件是否拦截 调用 getParent().requestDisallowInterceptTouchEvent(true);方法告诉上层ViewGroup 是否拦截 返回t ...

  3. matlab 给某一列乘上一个系数

    矩阵M是一个 mxn 的矩阵,现在要给M矩阵的第一列都要乘上10,使其第一列扩大10倍,那肿么做呢? 我第一时间用的是: M(:,1) = M(:,1)*10; //错误的 但是这个错了,结果是不对的 ...

  4. [MetaHook] R_RicochetSprite

    By hzqst void R_RicochetSprite(float *pos, model_t *pmodel, float duration, float scale) { TEMPENTIT ...

  5. 浩瀚先森(guohao1206.com)

    博客搬家啦,新博客地址:浩瀚先森 http://www.guohao1206.com

  6. 慢牛股票-基于Sencha+Cordova的股票类APP

    13,14这两年,我的业余时间都花在了移动互联网技术和股票技术分析上,14年底,终于开发完成慢牛,上线小米应用商店.应用宝.百度应用商店.   慢牛是一款数据分析类的股票APP,提供数据订阅和数据分析 ...

  7. [BZOJ 2456]Mode(神奇的抵销)

    题意:求一串数的众数(保证次数的出现次数超过一半),n<=500000 很简单是不是……快拍一下不就行了吗,不超时呢=W=,不过……尼玛空间只有1M…… 于是此题就成了神题(理解成智商题= =本 ...

  8. 机器学习中的矩阵方法04:SVD 分解

    前面我们讲了 QR 分解有一些优良的特性,但是 QR 分解仅仅是对矩阵的行进行操作(左乘一个酉矩阵),可以得到列空间.这一小节的 SVD 分解则是将行与列同等看待,既左乘酉矩阵,又右乘酉矩阵,可以得出 ...

  9. mysql配置详解

    mysql有以下几种日志:  错误日志:    log-err  查询日志:    log  慢查询日志:  log-slow-queries  更新日志:    log-update  二进制日志: ...

  10. if...else语句的应用题

    应用题 namespace ConsoleApplication1 { /* 题目要求:提示用户输入年龄,如果大于等于18,那么用户可以查看.如果小于10岁,则告知用户”少儿不宜“. 如果大于等于10 ...