Linux内核ip转发流程学习(自用)

一:skb数据结构

skb即sk_buffer数据结构,详解见

https://www.cnblogs.com/LiuYanYGZ/p/7566296.html

 

二:netfilter

Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(Network Address Translation,NAT),以及基于用户及媒体访问控制(Media Access Control,MAC)地址的过滤和基于状态的过滤、包速率限制等。

netfilter的架构就是在整个网络流程的若干位置放置了一些检测点(HOOK),而在每个检测点上登记了一些处理函数(HOOK函数)进行处理。

IP层的五个HOOK点的位置如下图所示:

Linux内核ip转发流程学习(自用)_第1张图片

[1]:NF_IP_PRE_ROUTING:刚刚进入网络层的数据包通过此点(刚刚进行完版本号,校验

和等检测), 目的地址转换在此点进行;

[2]:NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此检查点,INPUT包过滤在此点进行;

[3]:NF_IP_FORWARD:要转发的包通过此检测点,FORWARD包过滤在此点进行;

[4]:NF_IP_POST_ROUTING:所有马上便要通过网络设备出去的包通过此检测点,内置的源地址转换功能(包括地址伪装)在此点进行;

[5]:NF_IP_LOCAL_OUT:本机进程发出的包通过此检测点,OUTPUT包过滤在此点进行。

 

三:Linux内核IP层的报文处理流程

对从网卡处接收的IP报文的处理流程,详见:

https://blog.csdn.net/eric_liufeng/article/details/10789811

你可能感兴趣的:(Linux内核ip转发流程学习(自用))