iptables基础知识详解

摘要:
网络地址转换(NAT)包内容修改包过滤[防火墙功能]规则,链名称功能INPUT处理输入包OUTPUT处理输出包PORWARD处理转发包PREROUTING用于目的地地址转换(DNAT)POSTOUTING用于源地址转换(SNAT)表:

iptables命令是Linux上最常用的防火墙代理,可以很好得控制进出流量以及限速等。

iptables不是真正意义上得防火墙,我们应该把它理解为一个代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"里面,【netfilter】,这个框架才是真正的防火墙。

netfilter位于内核空间

iptables是一个命令行工具,位于用户空间

   

首先,我们介绍几个基本概念。

netfilter

Linux操作系统核心层的内部的一个数据包处理模块,它有如下几个功能:

  • 网络地址转换(NAT
  • 数据包内容修改
  • 数据包过滤【防火墙功能】

   

rules

规则是网络管理员预定义的条件,一般形式为"如果符合XXX的条件,就XXX这样处理"。

规则存储在内核空间的信息包过滤表中,这些规则分别指定了/目的地址,传输协议,服务类型等。

当数据包与规则匹配时,就按照定义的方法进行处理【放行,拒绝,丢弃】。

配置防火墙主要就是配置这些规则。

   

内核要想实现报文的【放行,拒绝,丢弃】,就要在内核设置关卡,符合条件放行,不符合阻止,这些所谓的关卡就叫链,主要包括【inputoutput】。

而报文并不是每次的目标主机都是本机,当主机支持 IP_FROWARD时,我们可以把报文转发给其他服务器,也就是其他链,"路由前","转发","路由后"。

如图:

iptables基础知识详解第1张

链为什么叫链呢?

我们前文已经说过,防火墙的作用就是对经过关卡的报文匹配规则,然后执行相对应的动作。但是关卡上的规则可能不止一条,有可能有很多条,每个经过此关卡的报文,都要将这些所有的规则都匹配一遍,所以,我们将这些关卡称之为链

链名

功能

INPUT

处理输入数据包

OUTPUT

处理输出数据包

PORWARD

处理转发数据包

PREROUTING

用于目标地址转换DNAT

POSTOUTING

用于源地址转换SNAT

   

表:

我们把具有相同功能的规则的集合叫做

表名

功能

内核模块

主要用于

filter

负责过滤功能

iptables_filter

防火墙

nat

网络地址转换

iptable_nat

网关路由器

mangle

拆解报文,修改,重新封装

iptable_mangle

服务质量(QOS

raw

关闭nat表上启用的连接追踪机制

iptable_raw

高级功能,如:网址过滤

所有的规则都保存在这四张表中。

   

表的优先级为:raw -> mangle -> nat -> filter

   

动作:

accept

接收数据包

DROP

丢弃数据包

REDIRECT

重定向、映射、透明代理

SNAT

源地址转换

DNAT

目标地址转换

MASQUERADE

IP伪装(NAT),用于ADSL

LOG

日志记录

   

接下来,我们介绍一下iptables的使用:

   

  • 基本命令

       

    • 清除已有的规则

      iptables -F

      iptables -X

      iptables -Z

         

    • 查看已有的规则

      iptables -vnL

      iptables -L -n --line-numbers(删除前查看序号)
       

    • 删除已有的规则

      iptables -D INPUT 8

         

  • 开放指定端口
    • iptables -A OUTPUT -j ACCEPT                      #允许所有本机向外的访问
    • iptables -A INPUT -p tcp --dport 22 -j ACCEPT     #允许访问22端口
    • iptables -A INPUT -j reject                       #禁止其他未允许的规则访问
    • iptables -A FORWARD -j REJECT                     #禁止其他未允许的规则访问

         

  • 屏蔽指定端口
    • iptables -I INPUT -s 123.45.6.7 -j DROP           #屏蔽单个IP的命令
    • iptables -I INPUT -s 123.45.6.0/24 -j DROP        #IP段即从123.45.6.1123.45.6.254的命令

         

  • 相对复杂的命令

    iptables -A INPUT -i br-ext -p tcp --dport 5355 -j DROP -m comment --comment 'huwangxingdong'

                              链                接口              协议                  目的端口  丢弃         备注

       

  • 选项

-t<>

指定要操纵的表;

-A

向规则链中添加条目;

-D

从规则链中删除条目;

-i

向规则链中插入条目;

-R

替换规则链中的条目;

-L

显示规则链中已有的条目;

-F

清除规则链中已有的条目;

-Z

清空规则链中的数据包计算器和字节计数器;

-N

创建新的用户自定义规则链;

-P

定义规则链中的默认目标;

-h

显示帮助信息;

-p

指定要匹配的数据包协议类型;

-s

指定要匹配的数据包源ip地址;

-j<目标>

指定要跳转的目标;

-i<网络接口>

指定数据包进入本机的网络接口;

-o<网络接口>

指定数据包要离开本机所使用的网络接口。

   

免责声明:文章转载自《iptables基础知识详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇3DMAX中坐标解析iOS:菜单控制器和菜单项:UIMenuController和UIMenuItem下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

标准Table.TransformColumns(Power Query 之 M 语言)

数据源:         任意数据源,其中有一列数值 目标:         对数值列进行四则运算等计算  操作过程:         选取待计算的数值列》【转换】》【标准】》选取    M公式:   = Table.TransformColumns( 表, {{"列名1", 转换函数1, 数据类型1},…,{"列名n", 转换函数n, 数据类型n}},...

ArcGIS中加载百度地图

现在Google,Bing,OpenStreetMap....众多优秀的免费地图资源都被伟大的祖国给挡在墙外了,这些数据能够提 供真实的GPS数据时多么的难能可贵啊,可惜没有办法,偶也是爱国人士,钓鱼岛是中国的,日本也迟早是中国的!!      在此背景下,国内百度地图水涨船高,一步一个脚印发展迅速,最近也是发现其数据库服务器速度比其他的都快,因此很多东西...

PHP各版本的区别

PHP的大版本主要分三支:PHP4/PHP5/PHP6  其中,PHP4由于太古老、对OO支持不力已基本被淘汰,请无视PHP4。   PHP6由于基本没有生产线上的应用,还基本只是一款概念产品,很多功能已在PHP5.3.3上实现,所以也不详述,请无视PHP6。   PHP5的版本主要分四支:PHP5.2之前的版本、PHP5.2.X、PHP5.3和日前发...

WEB页获取串口数据

最近做一个B/S的项目,需要读取电子秤的值,之前一直没做过,也没有经验,于是在网上找到很多  大致分两种 使用ActiveX控件,JS调用MSCOMM32.dll的串口控件对串口进行控制 使用C#语言的控件对串口进行控制,然后使用JS+AJAX与C#进行交互获得串口数据 详情见  使用JS获得串口数据 http://blog.csdn.net/xuin...

Lakehouse 架构解析与云上实践

​简介:本文整理自 DataFunCon 2021大会上,阿里云数据湖构建云产品研发陈鑫伟的分享,主要介绍了 Lakehouse 的架构解析与云上实践。 作者简介:陈鑫伟(花名熙康),阿里云开源大数据-数据湖构建云产品研发内容框架 Lakehouse 概念与特性 Lakehouse 架构与实现 云上 Lakehouse 架构与实践 案例分享及未来展望...

HttpClient发送get/post请求

参考博客:https://www.cnblogs.com/LuckyBao/p/6096145.html 1.需要的maven依赖: <!--httpClient需要的依赖--> <dependency> <groupId>org.apache.httpcomponents<...