iptables和netfilter

1.iptables和netfilter说明



  netfilter/iptables组成Linux平台下的包过滤防火墙,iptables是用户空间的管理工具,netfilter是内核空间的包处理框架。

2.数据包处理流程



  

  首先数据包进入PREROUTING链,之后根据路由决策进入INPUT(本机)还是FORWARD(转发),进入INPUT后会继续进入OUTPUT链,最后都走到POSTROUTING链。

  另外,如果加入各种规则之后,则数据包进入某个链之后,还要顺序执行链上的规则,如果匹配某个规则,则根据匹配的规则来处理数据包(例如ACCEPT、DROP或者REJECT),如果都不匹配则使用默认的策略处理数据包。

3.表、链、规则



  理论上,只要在链上添加规则就可以了,这样每个链上就有一个规则链表,只要数据包到链上之后,顺序检查这些规则就可以了。实现中又根据规则的功能的不同,又分为了四张表,即raw、mangle、nat、filter(优先级raw > mangle > nat > filter)。最终,数据包依次进入链中进行处理,然后根据每个链上的表的优先级,依次执行每个链上的表(里面的规则)。关于表链的关系,其实这个很简单,实际使用时以表作为入口,就是根据规则的功能添加规则到特定的表中,然后再把这个规则放到链上,另外就是一个表上的规则只存在固定的几个链上,例如raw表的规则只能在PREROUTING和OUTPUT链。

  filter表   :负责包过滤功能

  nat表  :负责地址转换

  mangle表:修改数据包的TOS、TTL,和为数据包设置标记,用来实现Qos调整以及策略路由功能

  raw表  :主要用来关闭连接跟踪,即配置参数时使用-j NOTRACK

4.iptables工具用法


-t table          指定表名,默认为"filter"表

-A chain          向链上追加规则
-D chain          从链上删除规则
-L [chain]        列出链上的规则,这个打印的是规则列表,即把规则参数放到一个表格中
-S [chain]        打印链上的规则,这个打印的是规则的命令行参数,例如-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-F [chain]        清除链上的规则
-P chain target   设置指定链的策略,也就是默认策略

-v                verbose mode,用作输出命令,表示详细输出
-p proto          规则指定的协议,proto可以为tcp、udp、icmp、all。
-s address[/mask] 源地址[掩码]。
-d address[/mask] 目的地址[掩码]。
-i input name     匹配报文入接口
-o output name
-j target         规则匹配后跳转到的目标,也就是动作,因为在内核函数中,匹配某个条件后,使用goto的方式跳转到下一个流程,所以是jump target。
                  target可以为ACCEPT、DROP、REJECT、SNAT、DNAT、REDIRECT、NOTRACK、LOG

扩展匹配项:
--src-range from[-to]   匹配源IP的范围
--dst-range from[-to]   匹配目的IP的范围
--mark value[/mask]     匹配标记,而不是打标记,和匹配IP地址一样有掩码。   

这些只是常用的选项,基本每条规则都要用到,主要的目的是实际用。

  例子:

    [1]iptables -P INPUT DROP              //设置链的策略

    [2]iptables -A INPUT -i eth0 -s 10.0.1.1 -j DROP     //阻止某个IP地址

    [3]iptables -t mangle -A PREROUTING !-d 10.0.1.1 -p tcp -j TPROXY --on-port 10000 --on-ip 0.0.0.0 --tproxy-mark 0x1/0x1  //对非目的地址10.0.1.1,并且标记匹配0x1/0x1的报文,透明代理到0.0.0.0:10000地址

原文地址:https://www.cnblogs.com/iamwho/p/10470354.html

时间: 2024-10-02 00:37:53

iptables和netfilter的相关文章

编译内核启用iptables及netfilter

在Network Packet Filtering Framework(Netfilter)一节中还有两个额外的配置节--Core Netfilter Configuration(核心Netfilter配置)和IP:Netfilter Configuration(IP:Netfilter配置). 1. 核心Netfilter配置 核心Netfilter配置节中包含的一些重要选项都应该被启用: l    Comment match support(comment匹配支持): l    FTP su

防火墙、Iptables、netfilter/iptables、NAT 概述

防火墙.Iptables.netfilter/iptables.NAT 概述 - 如果你真的想做一件事,你一定会找到方法: 如果你不想做一件事,你一定会找到借口. - ITeye技术网站 一.防火墙的简介 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性.它通过访问控制机制,确定哪些内部服务允许外部访问,以及 允许哪些外部请求可以访问内部服务.它可以根据网络传输的类型决定IP包是否可以传进或传出内部网 防火墙通过审查经过的每一个数据包,判断它是否有相匹配的

深入理解 iptables 和 netfilter 架构

Published at 2019-02-18 | Last Update 译者序 本文翻译自 2015 年的一篇英文博客 A Deep Dive into Iptables and Netfilter Architecture . 这篇对 iptables 和 netfilter 的设计和原理介绍比较全面,美中不足的是没有那张 内核协议栈各 hook 点位置和 iptables 规则优先级的经典配图,这里补充如下(来自 Wikipedia ): 另外,本文只讲理论,而下面这篇则侧重实战(基于

针对Red Hat Enterprise Linux 6.5 的防火墙详细讲解,iptables(netfilter)规则的

防火墙基础 Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(或网络层防火墙).基于Linux内核编码实现,具有非常稳定的性能和高效率,因此获得广泛使用. 在Linux系统中,netfilter和iptables都用来指Linux防火墙. netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于"内核态"(Kernel Space,又称为内核空间)的防火墙功能体系. iptables:指的是

iptables与netfilter基础与示例

该怎么描述防火墙的实现呢?既然说不明白那就不说了,自己领悟吧! 一.防火墙是什么? 通过一些规则在网络数据报文必经的几个钩子上做端口的限制,实现数据过滤的功能. 二.数据报文传输的路径是怎样的? 1. 客户端发出数据报文---->到达服务器的网络接口-----(判断目标是服务器自己)将报文送入内核处理---->将处理好的数据报文转发出去---->通过网络接口发还给客户端 2.客户端发出数据报文---->到达服务器的网络接口-----(判断目标不是服务器)将数据转发出去---->

IPTables 和 Netfilter 框架

前言 防火墙是保护服务器的重要工具. Linux中最常用的基本防火墙软件是iptables.iptables通过与Linux内核网络堆栈(networking stack)中的包过滤钩子(packet filtering hooks)进行交互来工作. 出入网络系统的数据包将在通过网络堆栈时会触发这些钩子.这些内核钩子称为netfilter框架. Netfilter 钩子 一个程序可以注册5个netfilter钩子. 当数据包通过网络堆栈时,将触发与被注册钩子相关的内核模块.下面介绍钩子 NF_I

iptables or netfilter

netfilter 内部有三个表:filter .nat .mangle 每个表又有不同的操作链: 1.在filter这个防火墙功能的表中有三个chain:INPUT.FORWARD.OUTPUT. 也就是对包的入.转发.出进行定义的三个过滤链 2.在nat(Network Address Translation,网络地址翻译 )表中,也有三个chain:PREROUTING POSTROUTING OUTPUT三个链 3.mangle是个自定义的表,里面包含上边的filter nat所有的ch

【Linux 驱动】Netfilter/iptables (八) Netfilter的NAT机制

NAT是Network Address Translation的缩写,意即"网络地址转换". 从本质上来说,是通过改动IP数据首部中的地址,以实现将一个地址转换成还有一个地址的技术. 当然在某种情况下.改动的不仅仅是IP首部的来源或目的地址.还包含其他要素. 随着接入Internet的计算机数量不断猛增.IP地址资源也就愈加显得捉襟见肘.这也是Ipv6出现的一大原因. 我们如今全部的IP地址是32位,意味着其代表的主机数量是有限的(2^32 ~= 42亿).实际是不够用的(计算机.路由

Iptables/Netfilter应用总结

目录: 一.理论部分. 二.实验部分. **********************************理论部分********************************** 1. 前提知识 任何主机若要与非同网络中的主机通信,则必须将报文发送到默认网关:对Linux而言,IP地址是属于主机(内核中)的,不属于网卡,只要属于当前主机的IP地址间,都可直接响应,不能称为转发:私有地址在路由器上是不允许被路由的 2. iptables简介: netfilter/iptables(简称为ip