前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一直在用的ipTables,你真的懂吗?

一直在用的ipTables,你真的懂吗?

作者头像
用户11097514
发布2024-07-11 10:07:00
970
发布2024-07-11 10:07:00
举报
文章被收录于专栏:技术分享

iptables介绍

可能很多人向我一样, 用了这么多年的iptables但是连他是什么都不知道吧,更别提作用。 今天在学习kubernetes中, 在service和pod的流量转发中知道了ipvs(这个后续在介绍)。 然后通过ipvs延申学习, 发现自己一直用的时iptables, 但是自己确实云里雾里, 都不知道他是干什么的。 下面的笔记就简单的来学习一下吧。 **概念: ** iptables作为Linux系统中的一个重要组件,长期以来一直是网络管理员进行流量(ip信息包)过滤和防火墙配置的主要工具。 既然是既然iptables是防火墙配置的主要工具, 同样他的作用是流量过滤, 那么防火墙我们知道是监控和控制进出网络的流量。 它的过滤级别是实例级别(以服务器为例, 就是一个服务器实例)。 所以, 当一个网络包要进入服务器实例的时候, 首先防火墙会拦下它, 然后按照过滤规则来筛选。 下面用一张图来解释

数据包到达linux主机网卡后,内核如何处理数据包

图片引用: https://www.cnblogs.com/huaweiyun/p/18021766

从上述中, 我们可以知道iptables是工作在网络模型中的网络层, 主要处理数据包的传输,包括路由选择和IP地址解析

四表五链

iptables 默认维护着 4 个表和 5 个链,所有的防火墙策略规则都被分别写入这些表与链中。 “四表”是指 iptables 的功能,默认的 iptable s规则表有 filter 表(过滤规则表)、nat 表(地址转换规则表)、mangle(修改数据标记位规则表)、raw(跟踪数据表规则表):

  • vfilter 表:控制数据包是否允许进出及转发,可以控制的链路有 INPUT、FORWARD 和 OUTPUT。
  • nat 表:控制数据包中地址转换,可以控制的链路有 PREROUTING、INPUT、OUTPUT 和 POSTROUTING。
  • mangle:修改数据包中的原数据,可以控制的链路有 PREROUTING、INPUT、OUTPUT、FORWARD 和 POSTROUTING。
  • raw:控制 nat 表中连接追踪机制的启用状况,可以控制的链路有 PREROUTING、OUTPUT。

“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链。每个规则表中包含多个数据链:INPUT(入站数据过滤)、OUTPUT(出站数据过滤)、FORWARD(转发数据过滤)、PREROUTING(路由前过滤)和POSTROUTING(路由后过滤),防火墙规则需要写入到这些具体的数据链中。

通过上述说的“四表五连”我们不难理解之前图中的网络入站出站规则, 那么什么是规则, 我们该如如何执行这些规则呢? 下面继续看

什么是规则?

规则是管理员对数据包制定的一种触发机制,即当数据包达到某种条件,就执行指定的动作。 条件:可以是数据包源地址、目的地址、协议等 动作:可以是拒绝、接受、丢弃等;详细介绍如下

动作

说明

ACCEPT

将封包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链(nat:postrouting)

REJECT

拦阻该封包,并传送封包通知对方,可以传送的封包有几个选择:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接 中断过滤程序。

DROP

丢弃封包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。

MASQUERADE

改写封包来源 IP 为防火墙 NIC IP,可以指定 port 对应的范围,进行完此处理动作后,直接跳往下一个规则炼(mangle:postrouting)。这个功能与 SNAT 略有不同,当进行 IP 伪装时,不需指定要伪装成哪个 IP,IP 会从网卡直接读取,当使用拨接连线时,IP 通常是由 ISP 公司的 DHCP 服务器指派的,这个时候 MASQUERADE 特别有用。

SNAT

改写封包来源 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将直接跳往下一个规则炼(mangle:postrouting)。

DNAT

改写封包目的地 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将会直接跳往下一个规则炼(filter:input 或 filter:forward)。

MARK

将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续比对其它规则。

RETURN

结束在目前规则炼中的过滤程序,返回主规则炼继续过滤,如果把自订规则炼看成是一个子程序,那么这个动作,就相当于提早结束子程序并返回到主程序中。

按照上面的规则解读和动作列表, 自然就可以明白如果网络流量包入站之后如果没有遵守规则, 又该走哪个动作。

如何查看你的服务器规则?

获取超级用户权限 ,然后执行: iptables -nvL

参数含义:

  • -L 表示查看当前表的所有规则,默认查看的是 filter 表,如果要查看 nat 表,可以加上 -t nat 参数。
  • -n 表示不对 IP 地址进行反查,加上这个参数显示速度将会加快。
  • -v 表示输出详细信息,包含通过该规则的数据包数量、总字节数以及相应的网络接口。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • iptables介绍
  • 数据包到达linux主机网卡后,内核如何处理数据包
    • 四表五链
      • 什么是规则?
        • 如何查看你的服务器规则?
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档