iptables 认识 第二章
一、四表五链
netfilter 通过四表五链两个维度来定义数据包过滤规则。

#上面图片中 raw 表不在postrouting 链中,请注意
上图中的五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。
1.PREROUTING (路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
这是netfilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。
iptables包含4个表,5个链。其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度。
(1)4表:
filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)
filter:一般的过滤功能
nat:用于nat功能(端口映射,地址映射等)
mangle:用于对特定数据包的修改
raw:有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能
(2)5链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARDING:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外转发
POSTROUTING:发送到网卡接口之前。
二、各功能分别实现的位置
流入:PREROUTING --->INPUT
流出:OUTPUT-----> POSTROUTING
转发: PREROUTING ---> FORWARD ----POSTOUTING
filter : INPUT ,OUTPUT ,FORWARD
nat : PREROUTING(DNAT) ,OUTPUT ,POSTROUTING (SNAT)
mangle : PREROUTING ,INPUT ,OUTPUT ,FORWARD ,POSTROUTING
raw : PREROUTING ,OUTPUT ,POSTROUTING
功能的优先级次序: raw -->mangle --> nat--> filter
.filter表——三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包 内核模块:iptables_filter.
.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat
.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(不经常使用)
.Raw表——两个链:OUTPUT、PREROUTING
作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw
iptables :规则管理工具
添加, 删除,修改,显示等; 规则和链有计数器:
pkts;有规则或链所匹配到的报文个数
bytes: 由规则或链匹配到的所有报文大小之和 iptables 命令:
iptables [-t table] {-A|-C|-D} chain rule-specification iptables [-t table] -I chain [rulenum] rule-specification iptables [-t table] -R chain rulenum rule-specification iptables [-t table] -D chain rulenum iptables [-t table] -S [chain [rulenum]] iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...] iptables [-t table] -N chain iptables [-t table] -X [chain] iptables [-t table] -P chain target iptables [-t table] -E old-chain-name new-chain-name 语法: iptables [-t table] SUBCOMMAND CHAIN CRETERIA -j TARGET
-t table: 默认为 filter
filter ,nat ,mangle ,raw
chain ;
-F:flush ,清空规则链,省略链,表示清空指定表上的所有链
-N: new, 创建新的自定义规则链,
-X:drop ,删除用户自定义的空的规则链;
-Z:zero ,置零,置零规则计数器
-P:policy ,设置默认策略,对filter 表中的链而言,默认通常ACCEPT,DROP ,REJECT
-E: 重命名自定义链 ,应用计数不为0 的自定义链,无法改名,也无法删除 规则管理:
-A ;append ,将新规则追加至指定链的尾部
-I ;insert ,将新规则追加至指定链的指定位置
-D :delete ,删除指定链上的指定规则
两种指定方式:
指定匹配条件
指定规则编号
-R:replace,替换指定链上的指定规则
查看:
-L :list ,列出指定链上的所有规则
-n :numberic ,以数字格式显示地址和端口
-v :verbose ,显示详细信息
-vv ,-vvv
--line-numbers;显示规则编号
-x :exactly,显示计数器结果的精确值
目标;
-j ;TARGET ,jump ,跳转 指定的 TARGET
ACCEPT :接受
DROP :丢弃
REJECT :拒绝
RETURN :返回调用链
REDIRECT :端口重定向
LOG :记录日志
MARK ;做防火墙标记
DNAT :目标地址转换
MASQUERADE ;地址伪装
.....
自定义链;由自定义链上的规则进行匹配检查 centos : man iptables
centos : man iptables-extensions
[root@localhost /]# iptables -t filter -N test_public #添加自定义链
[root@localhost /]#
[root@localhost /]# iptables -t filter -L
Chain INPUT (policy ACCEPT)
target prot opt source destination Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy ACCEPT)
target prot opt source destination Chain test_public ( references)
target prot opt source destination
[root@localhost /]#
[root@localhost /]# iptables -X -t filter #删除用户自定义没有引用的空链
[root@localhost /]#
[root@localhost /]# iptables -t filter -L
Chain INPUT (policy ACCEPT)
target prot opt source destination Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost /]# systemctl restart firewalld #重启iptables 服务
[root@localhost /]# iptables -L -n #查看iptables
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/ 0.0.0.0/ ctstate RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/ 0.0.0.0/
INPUT_direct all -- 0.0.0.0/ 0.0.0.0/
INPUT_ZONES_SOURCE all -- 0.0.0.0/ 0.0.0.0/
INPUT_ZONES all -- 0.0.0.0/ 0.0.0.0/
DROP all -- 0.0.0.0/ 0.0.0.0/ ctstate INVALID
REJECT all -- 0.0.0.0/ 0.0.0.0/ reject-with icmp-host-prohibited
[root@localhost /]# iptables -t filter -P FORWARD DROP 修改某一个链上的默认策略
[root@localhost /]#
[root@localhost /]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination Chain FORWARD (policy DROP)
target prot opt source destination Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@nginx etc]# iptables -t filter -A INPUT -d 10.2.61.22 -p tcp -j ACCEPT #允许任意地址通过TCP 地址访问本机
[root@nginx etc]#
[root@nginx etc]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/ 10.2.61.22 Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@nginx etc]#
[root@nginx etc]# iptables -t filter -D OUTPUT #删除指定链上编号为1 的规则
[root@nginx etc]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT packets, bytes)
num pkts bytes target prot opt in out source destination
ACCEPT tcp -- * * 0.0.0.0/ 10.2.61.22 Chain FORWARD (policy ACCEPT packets, bytes)
num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT packets, bytes)
num pkts bytes target prot opt in out source destination
ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/
[root@nginx etc]#
[root@nginx etc]# iptables -P INPUT DROP #指定默认策略为 DROP
[root@nginx etc]# iptables -P OUTPUT DROP
[root@nginx etc]# iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/ 10.2.61.22 Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 10.2.61.22 0.0.0.0/
[root@nginx etc]#
[root@nginx etc]# iptables -t filter -A INPUT -p icmp -d 10.2.61.22 -j ACCEPT #允许ping 包进来
[root@nginx etc]# iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/ 10.2.61.22
ACCEPT icmp -- 0.0.0.0/ 10.2.61.22 Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 10.2.61.22 0.0.0.0/
[root@nginx etc]# iptables -t filter -A OUTPUT -p icmp -s 10.2.61.22 -j ACCEPT #允许响应ping 包出去
[root@nginx etc]# iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/ 10.2.61.22
ACCEPT icmp -- 0.0.0.0/ 10.2.61.22 Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 10.2.61.22 0.0.0.0/
ACCEPT icmp -- 10.2.61.22 0.0.0.0/
[root@nginx etc]#
[root@nginx etc]# iptables -A INPUT -i ens192 -j ACCEPT #指定出入接口匹配
[root@nginx etc]# iptables -A OUTPUT -o ens192 -j ACCEPT
[root@nginx etc]# iptables -L -n -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination #限制了流入流出
859 62296 ACCEPT tcp -- * * 0.0.0.0/0 10.2.61.22
3 244 ACCEPT all -- ens192 * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
557 56796 ACCEPT tcp -- * * 10.2.61.22 0.0.0.0/0
3 244 ACCEPT all -- * ens192 0.0.0.0/0 0.0.0.0/0
[root@nginx etc]#
iptables 认识 第二章的更多相关文章
- CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...
- Jenkins入门系列之——02第二章 Jenkins安装与配置
2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...
- Python黑帽编程 2.0 第二章概述
Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...
- 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型
第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...
- Asp.Net MVC4 + Oracle + EasyUI 学习 第二章
Asp.Net MVC4 + Oracle + EasyUI 第二章 --使用Ajax提升网站性能 本文链接:http://www.cnblogs.com/likeli/p/4236723.html ...
- 数据结构与算法分析C++表述第二章编程题
把昨天看的第二章巩固一下,做一做编程习题. 2.6: 第一天交2元罚金,以后每一天都是前一天的平方,第N天罚金将是多少? 这个题目和2.4.4-3介绍的幂运算基本一致.若按相同的递归思路分析,比那个问 ...
- 【vue.js权威指南】读书笔记(第二章)
[第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...
随机推荐
- 省市区联动,非ajax请求。
需求 不允许用 ajax 请求的方式加载数据,所以把所有的省市区写在数组里,用js动态加载. 数据源 民政部门户网站:http://www.mca.gov.cn/article/sj/xzqh/201 ...
- mybatis07--关联查询一对多
案例 查询国家的同时,查询出国家下的省会信息! 01.使用单表的连接查询 创建对应的实体类 和数据库表 /** * *国家的实体类 */ public class Country { privat ...
- Java 递归获取一个路径下的所有文件,文件夹名称
package com.readfile; import java.io.File; public class GetAllFiles { public static void main(String ...
- 浅谈提高Django性能
Django性能优化是一件困难的事情,但是也不常常如此: 下面4步将能够轻松的提高你的网站的性能,它们非常简单你应该将它们 作为标配. 持久化数据库连接 django1.6以后已经内置了数据库持久化连 ...
- ASP.NET MVC Routing Debugger路由调试工具
官网地址:http://blog.csdn.net/sgear/article/details/6789882 To use this, simply download the following ...
- 浅析python中的装饰器decorator
最近学习python,其中decorator比较难理解,遂写一篇来总结供后续查阅. 定义一个函数,想在运行时动态的改变函数的功能,又不想改变函数本身的代码,可以使用高阶函数(可以使用函数作为参数) 装 ...
- 环形dp
对于环形的dp 大多情况都是破环成链 例如 那道宝石手镯的环形 一般来说都是要破环成链的. 或者说 是 两次dp 一次断开 一次强制连接即可. 我想 我应该沉淀下来了这些天写的题都有点虚 要不就是看了 ...
- 实现mybash
任务内容 1.使用fork,exec,wait实现mybash 查找资料: fork函数 通过fork()系统调用我们可以创建一个和当前进程印象一样的新进程.我们通常将新进程称为子进程,而当前进程称为 ...
- C#基础加强(2)之密闭类、静态类及扩展方法
密闭类 简介 密闭类是被 sealed 关键字修饰的类,密闭类不能有子类.一般只有系统的一些基本类声明为密闭类,例如 String 类. 相关面试题 是否可以编写一个类继承自 String 类? 我们 ...
- 判断np.array里面为空字符串的方法
#多在编译器里尝试新操作 import numpy as np for i range(100): eval1 = {"A": ''"} eval2 = {"A ...