Switch-Router

Recent Posts

  • 2019-06-13

    Netfilter 是如何工作的(六):连接跟踪信息的入口创建(in)和出口确认(confirm)

    在 Netfilter 是如何工作的(五) 中连接跟踪信息使用的创建-确认机制的 Netfilter在报文进入系统的入口处,将连接跟踪信息记录在报文上,在出口进行confirm.确认后的连接信息本文以一个本机上送过程中的TCP/IPv4的SYN握手报文为例,详细分析连接跟踪机制的工作流程。入口 & 出口由于是本机上送流程,因此SYN报文的入口是 PRE_ROUTING,而出口则是 LOCAL_IN。Netfilter 在初始化时,会在这两个 HOOK 点注册连接跟踪相关的处理函数...

  • 2019-06-12

    Netfilter 是如何工作的(五):初识连接跟踪(connection track)

    报文过滤和连接跟踪可以说是Netfilter提供的两大基本功能。前者被大多数人熟知,因为我们对防火墙的第一印象就是可以阻止有害的报文伤害计算机;而后者就没这么有名了,很多人甚至不知道Netfilter有这项功能。Why 使用连接跟踪顾名思义,连接跟踪是保存连接状态的一种机制。为什么要保存连接状态呢? 举个例子,当你通过浏览器访问一个网站(连接网站的80端口)时,预期会收到服务器发送的源端口为80的报文回应,防火墙自然应该放行这些回应报文。那是不是所有源端口为80端口的报文都应该放行呢?...

  • 2019-06-12

    Netfilter 是如何工作的(四):动作(target)

    每一条iptables配置的规则(rule)都包含了匹配条件(match)部分和动作(target)。当报文途径HOOK点时,Netfilter会逐个遍历挂在该钩子点上的表的rule,若报文满足rule的匹配条件,内核就会执行动作(target)。上面是一条普通iptables规则,如果报文匹配前面的条件,就会执行最后的SNAT动作,它就是这条规则的动作(target)普通动作 & 扩展动作动作又可分为普通target和扩展target两类,其中普通动作是指ACCEPT(允许报...

  • 2019-06-12

    Netfilter是如何工作的(三):规则的匹配(match)

    每一条iptables配置的rule都包含了匹配条件(match)部分和动作(target)。当报文途径HOOK点时,Netfilter会逐个遍历挂在该钩子点上的表的rule,若报文满足rule的匹配条件,内核就会执行动作(target)。扩展match的表示而match又可以分为标准match和扩展match两部分,其中前者有且只有一个,而后者有零到多个。在Netfilter中,标准match条件用ipt_entry表示(这个在上一篇文章中已经说过了),其中包括源地址和目的地址等基本信息...

  • 2019-06-12

    Netfilter是如何工作的(二):表(table)与规则(rule)

    在(一)中说到,报文在内核协议栈中会途经5个HOOK点,在每个HOOK点上会依次执行链表上的钩子函数,那么这些钩子函数是如何与用户使用iptables下发的各个rule联系起来的呢?这些rule又是如何存储的呢? 本文详细描述这个问题。table内核使用struct xt_table这个结构来表示一个表(table)。结构中记录了这个表在哪些HOOK点有效,它的private指针保存了这个表包含的所有规则。每个新的net namespace创建时,Netfitler会创建所有属于当前net...