Socket_Kernel_Module 04

Ubuntu 20.04 LEMP 部署避坑指南:systemd、AppArmor 与 PHP-FPM socket 权限深度解析 LEMP 栈并非简单组合,而是 Linux、Nginx、MySQL 和 PHP 在特定发行版约束下的协同系统。Ubuntu 20.04 基于 systemd 服务管理、AppArmor 强制访问控制及内核级安全策略,对 PHP-FPM 的 Unix socket 权限、MySQL 的 bind-address 行为和 Nginx 的 fastcgi_pass 解析产生关键影响。理解其底层原理——如 socket 文件属主与 listen.mode 的权限耦合、AppArmor profile 对 /run/ 阅读详情

2.3 统计SYN包数

修改IPHeader是发送方的修改,这里讲修改接收方。

由Kernel_TCPIP知道,内核的入口函数为netif_rx(), IP层入口函数为ip_rcv(), tcp层入口函数为tcp_v4_rcv(), 因此统计TCP的SYN包数,就在net/ipv4/tcp_ipv4.c中的tcp_v4_rcv()添加Hook函数即可

2.3.1修改tcp_v4_rcv

int (*myHook_TCPSYN)(struct sk_buff*) == 0;

int tcp_v4_rcv(struct sk_buff* skb)

{

     //....

     if( !tcp_prequeue(sk, skb))

     {

         if(myHook_TCPSYN)

         {    

             myHook_TCPSYN(skb);

         }

     }

 

}

//结尾添加

EXPORT_SYMBOL(myHook_TCPSYN);

int myHook_TCPSYN_count = 0;

EXPORT_SYMBOL(myHook_TCPSYN_count); //内核共享数据

然后要重新编译内核

 

2.3.2 myHook_TCPSYN.c

#define __KERNEL__

#define MODULE

#include <linux/module.h>

#include <linux/skbuff.h>

#include <linux/tcp.h>

#include <linux/ip.h>

#include <linux/proc_fs.h>

#include <net/ip.h>

//big-endian和little-endian转换,big用在网络中,而linux中是little

#define u32toValue(x) ((__u32)( /

                                  (((__u32)(x) & (__u32)0x000000ffUL) << 24) | /

                                  (((__u32)(x) & (__u32)0x0000ff00UL) <<   8) | /

                                  (((__u32)(x) & (__u32)0x00ff0000UL) >>   8) | /

                                  (((__u32)(x) & (__u32)0xff000000UL) >> 24) ))

extern int myHook_TCPSYN_count;

extern int (*myHook_TCPSYN)(struct sk_buff*);

 

//转为可打印地址

static void IpAddressToString(unsigned long i, char* s)

{

     unsinged long j1, j2,j3,j4;

     j1 = (i & 0x000000FF);

     j2 = (i & 0x0000FF00)>>8;

     j3 = (i & 0x00FF0000)>>16;

     j4 = (i & 0xFF000000)>>24;

     sprintf(s, "%u.%u.%u.%u", j4,j3,j2,j1); //注意顺序

}

 

//hook函数的实现

int myHook_TCPSYN_impl(struct sk_buff* skb)

{

    strcut iphdr* iph;

    strcut tcphdr* th;

    char szSourceIP[50], szTargetIP[50];

 

    iph = skb->nh.iph;

    if( iph->protocol == IPPROTO_TCP)  //判断是否是TCP

    {

         th = skb->h.th;

         if( th->syn)            //判断是否是SYN包

         {

             IpAddressToString(u32toValue(skb->nh.iph->saddr), szSourceIP);

             IpAddressToString(u32toValue(skb->nh.iph->daddr), szTargetIP);

             if( strcmp(szSourceIP, "192.168.0.1") == 0 && //判断源地址是否是自己, 根据实践地址修改

                 strcmp(szTargetIP, "192.168.0.2") == 0) //判断目的地址, 根据实践地址修改

             {

                 myHook_TCPSYN_count++;

                 if( myHook_TCPSYN_count > 0x0fffff) myHook_TCPSYN_count = 0;

                 printk(%s --> %s ===> SYNcount=%d/n", szSourceIP, szTargetIP, myHook_TCPSYN_count);

             }

         }

    }     

    return 0;

}

 

static int init_hook( void )
{
    myHook_TCPSYN = myHook_TCPSYN_impl;  //后门函数指向了真正的实现函数

    printk("myHook_TCPSYN installed");        //表示加载成功
    return 0;
}

 

static int exit_hook(void)

{

    myHook_TCPSYN= 0;                    //后门函数清0
    printk("myHook_TCPSYN removed/n"); //表示卸载成功

    return 0;
}

 

MODULE_LICENSE("GPL"); //表示采用的开放协议

module_init(init_hook);     //为当加载Module时,自动调用init_hook
module_exit(exit_hook);   //当卸载Module时,自动调用exit_hook;

 

2.3.3 Makefile和加载卸载

如上个例子,此处省略,

加载运行后,就看到/var/log/message中的纪录了

 

Ubuntu 18.04 安装 VMware Tools 正确姿势:open-vm-tools 全流程解析 VMware Tools 是虚拟机与宿主机协同运行的核心支撑组件,其本质是通过内核模块(如 vmwgfx、vsock)、用户态守护进程(vmtoolsd)和桌面集成代理(vmware-user-suid-wrapper)实现剪贴板共享、拖放、自动分辨率适配等关键能力。随着 VMware 官方弃用闭源 vmware-tools 并全面转向开源 open-vm-tools,现代 Linux 发行版(尤其是 Ubuntu 18.04 这一首个默认预装 open-vm-tools 的 LTS 版本)已将安装逻辑从图 阅读详情

相关推荐

Ubuntu 20.04 生产级 Jupyter Notebook 部署指南

Jupyter Notebook 是基于 Web 的交互式计算环境,其核心依赖 Python 运行时与操作系统底层服务协同工作。在 Ubuntu 20.04 这一广泛使用的 LTS 版本中,由于系统默认 Python 3.8、snap 包管理器深度集成、systemd 服务模型及 GTK3 输入法兼容性等特性,导致常见问题如‘jupyter notebook无法运行’‘jupyter notebook跳转不到浏览器’频发。这些问题本质是环境隔离缺失与版本耦合失配所致,而非单纯安装错误。通过 conda 构建

weixin_34195142的博客 506

Ubuntu 20.04 安装 MariaDB 常见故障与实战修复指南

MariaDB 是一款开源关系型数据库管理系统,兼容 MySQL 协议,广泛用于 Web 应用后端存储。其核心原理基于客户端-服务器架构,通过 SQL 解析、查询优化与存储引擎(如 Aria、InnoDB)协同完成数据持久化。在 Ubuntu 20.04 等现代 Linux 发行版中,MariaDB 的部署面临三大技术挑战:默认启用 auth_socket 插件导致远程密码登录失效;AppArmor 安全策略严格限制 Unix socket 路径;systemd 启动依赖链未等待网络就绪引发初始化失败。这些

weixin_34409357的博客 395

Ubuntu 20.04 深度适配 Docker 安装与运行实践

Docker 是容器化技术的核心基础设施,其运行依赖 Linux 内核机制(如 cgroup、namespace)、系统服务(systemd)、安全模块(AppArmor)及存储驱动(overlay2)。在 Ubuntu 20.04 这一长期支持发行版中,cgroup v2 成为默认控制组版本,而 systemd 服务拓扑、snap 沙箱限制、内核模块完整性与 docker.sock 权限策略共同构成独特约束。理解这些底层原理,才能规避 daemon 启动失败、非 root 用户权限拒绝、镜像拉取证书错误等

germmy-神一样的开发 476

MoinMoin生产部署指南:Ubuntu 14.04 + uWSGI + Nginx零宕机配置

Wiki系统是企业内网知识管理的基础技术设施,其核心诉求在于离线可用、纯文本编辑、无依赖运行与强安全约束下的稳定交付。MoinMoin作为轻量级文件型Wiki代表,不依赖数据库、无需JavaScript渲染、支持htpasswd认证与正则原生搜索,特别适用于工业控制、等保环境及老旧服务器场景。本文聚焦于真实生产约束——Ubuntu 14.04系统兼容性、uWSGI模块加载失败、Nginx 502错误链路定位等高频问题,提供从Python环境修复、权限隔离设计到Socket通信加固的全栈部署方案,覆盖源码编译

weixin_30315723的博客 405

Checkmk 在 Ubuntu 18.04 老旧环境的监控落地实践

监控系统选型本质是技术约束与工程现实的平衡。在已 EOL 但广泛服役的 Ubuntu 18.04 环境中,传统监控工具常因 glibc 版本、systemd 兼容性、Python 2/3 混用及内核 ABI 依赖而失效。Checkmk 凭借无解释器依赖的轻量 agent 架构、xinetd 集成机制和 inventory-driven 监控范式,天然适配老旧基础设施。其核心价值不仅在于指标采集,更在于将主机配置、服务状态、安全策略等上下文转化为可规则化的知识图谱,支撑如 SSH 安全基线核查、内核级攻击检测

weixin_33970449的博客 345

Ubuntu 20.04 部署 Jupyter Notebook 工程实践指南

Jupyter Notebook 是基于 Web 的交互式计算环境,其核心依赖 Python 解释器、内核(如 ipykernel)与前端服务三者协同。在 Ubuntu 20.04 等 Linux 发行版中,系统级包管理(apt)与用户级环境隔离(conda/venv)存在根本性张力:系统 Python 版本锁定、内核注册路径冲突、Wayland 下 localhost 访问受限等问题频发。技术价值在于构建可审计、可复现、零系统污染的运行时契约——这正是 conda 环境隔离与 Miniforge 轻量发行

402

Ubuntu 14.04下HHVM+Nginx部署实战:FastCGI架构与JIT调优

FastCGI是一种经典的Web应用通信协议,用于解耦Web服务器与语言运行时;JIT(即时编译)则是提升动态语言执行效率的核心技术。在PHP生态演进中,HHVM通过JIT将PHP代码编译为原生指令,显著提升QPS并降低内存占用,而Nginx作为FastCGI客户端,承担请求路由、SSL终止与连接管理等关键职责。该组合体现了‘网络层与执行层分离’的现代服务架构思想,广泛应用于高并发CMS、遗留系统迁移及离线政务云等场景。本文聚焦Ubuntu 14.04这一典型旧版环境,深入解析HHVM 3.12与Nginx

defkaug153461的博客 543

Ubuntu 18.04部署Jupyter Notebook深度排错指南

Jupyter Notebook作为Python交互式计算的核心工具,其运行依赖Python解释器、内核通信协议(如ZMQ)、浏览器协议协商及系统服务管理等多层技术栈。在Ubuntu 18.04这一长期支持版本中,因Python 3.6生态断层、Firefox HSTS策略强化、systemd进程守护机制差异等底层约束,导致常见‘命令执行成功但无法访问’问题频发。理解Jupyter启动链路中的内核注册机制、HTTP/HTTPS域名解析差异(localhost vs 127.0.0.1)以及ZMQ socke

weixin_34252090的博客 789

Ubuntu 18.04多PHP版本共存实战:Apache+PHP-FPM混合部署

PHP多版本共存是企业级Web运维的基础能力,源于旧系统兼容性与新特性需求并存的现实约束。其核心原理在于进程隔离——通过PHP-FPM为不同版本构建独立运行时环境,再由Apache借助proxy_fcgi模块实现按虚拟主机精准路由。该方案兼顾安全性(用户/权限/资源隔离)、稳定性(单版本故障不扩散)与性能(Unix socket低延迟通信),广泛应用于遗留系统迁移、SaaS多租户PHP运行时供给及安全测试靶场搭建等场景。本文聚焦Ubuntu 18.04这一经典LTS环境,深度解析PHP-FPM配置、Apac

weixin_30421809的博客 444

Flask生产部署:Gunicorn+Nginx+Ubuntu 20.04实战指南

Web应用部署本质上是将开发态服务转化为可运维、可伸缩的生产态系统。其核心原理在于分层解耦:应用服务器(如Gunicorn)专注Python进程管理与请求处理,反向代理服务器(如Nginx)承担网络层职责,包括SSL终止、静态资源服务、连接限流与安全防护。这种架构显著提升稳定性、性能与安全性,是Python Web服务落地工业级场景的技术基石。典型应用场景涵盖SaaS后台、内部管理平台及高并发API服务。本文基于经17个生产项目验证的最小可行栈——Flask + Gunicorn + Nginx + Ubu

weixin_30448603的博客 421

Ubuntu 18.04 + kubeadm 部署 Kubernetes 的硬核实践指南

Kubernetes 是容器编排的事实标准,其部署依赖于底层操作系统、容器运行时与集群引导工具的深度协同。kubeadm 作为官方推荐的轻量级集群初始化工具,需严格匹配内核特性(如 cgroup v1)、网络栈行为(如 iptables 规则管理)及证书生命周期策略。在长期支持的 Ubuntu 18.04 环境中,这些约束尤为显著:内核 4.15 对 cgroup v2 支持薄弱,Docker 19.03.15 与 kubelet 的 cgroup 驱动必须一致,而 Flannel host-gw 模式则成

congbao6525的博客 451

Ubuntu 18.04下Nginx安装与生产级配置实战

Nginx 是广泛使用的高性能 Web 服务器和反向代理,其核心能力依赖于事件驱动架构、模块化设计与底层系统协同。在 Ubuntu 18.04 这一长期支持(LTS)发行版中,Nginx 的部署远不止执行 apt install 命令——它涉及 APT 包管理机制、systemd 服务生命周期控制、Linux socket 双栈绑定(IPv4/IPv6)、内核参数(如 epoll 和 net.ipv6.conf.all.disable_ipv6)适配,以及 AppArmor 安全策略约束。理解这些原理,才能

weixin_34280237的博客 349

【干货攻略】Oracle报错篇 ORA-01378 磁盘扇区大小不兼容问题

本期将为大家分享“ORA-01378 磁盘扇区大小不兼容”报错的问题解决方案。

PWY13148的专栏 1438

Ubuntu 18.04 LEMP栈实战:Nginx+PHP-FPM+MySQL深度调优指南

LEMP栈是Linux环境下高性能Web服务的基础架构,其核心在于Nginx的事件驱动模型、PHP-FPM的进程管理机制与MySQL的I/O协同。理解FastCGI通信原理、Unix Socket权限模型及MySQL strict mode兼容性,是保障PHP应用稳定运行的关键技术前提。该架构广泛应用于Laravel、WordPress等PHP框架的生产部署,尤其适合资源受限但需高确定性的中小规模场景。本文聚焦Ubuntu 18.04 LTS这一经典长期支持环境,深入解析systemd服务管理、内核参数调优

ckkay800264的博客 414

【人工智能AI】是什么?

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟延伸和扩展人的智能的理论方法技术及应用系统的一门新的技术科学。(百度百科)人工智能的基本原理:机器从「特定的」大量数据中总结规律,形成某些「特定的知识」,然后将这种「知识」应用到现实场景中去解决实际问题。在这个基本原理的基础上,有3个特征:1、人工智能本质上是一种工具2、人工智能技能只能解决特定的问题,而不是什么都能做3、人工智能属于归纳逻辑,可以告诉你是什么,但是不能告诉你为什么。

KJCZ.AK的博客 2万+

鸿蒙日历组件进阶:教你打造个性化日程管理界面(支持月份切换)

本文深入探讨了鸿蒙应用开发中自定义日历组件的构建方法。通过详解基于Grid的布局设计、核心日期算法、月份切换逻辑以及事件管理集成,指导开发者打造支持个性化日程管理的高性能日历界面,提升应用交互体验。

weixin_29207149的博客 66

Ubuntu 18.04部署Jupyter Notebook的三大底层断层与修复

Jupyter Notebook作为Python交互式计算的核心工具,其正常运行依赖于Python环境、内核注册机制与桌面系统三者的精确协同。在Ubuntu 18.04中,系统级Python被apt深度锁定,用户级pip/conda环境若越权操作(如sudo pip install),将导致包路径冲突与内核加载失败;而Jupyter内核注册本质是将特定Python解释器及其依赖(如ipykernel)显式写入用户级kernelspec目录,缺失该步骤则conda环境无法在Notebook界面中显示。技术价值

weixin_30786657的博客 621

避坑指南:DDR4内存条Margin测试Fail?从Intel RMT工具到PCB Layout的完整排错思路

本文深入探讨了DDR4内存条在Margin测试中Fail的完整排错思路,从Intel RMT工具分析到PCB Layout优化。通过实战案例,详细解析了信号完整性问题的诊断与解决方案,包括拓扑结构影响、传输线参数优化及HyperLynx仿真验证,为硬件设计工程师提供了宝贵的避坑指南。

weixin_42530458的博客 454

Ubuntu 18.04下用Metricbeat采集基础设施指标实战指南

基础设施指标(infrastructure metrics)是现代运维可观测性的数据基石,其本质是操作系统内核(如/proc、/sys、cgroup)暴露的底层运行时状态。Metricbeat作为轻量级采集器,通过模块化设计与内存映射等机制,实现低开销、高精度的数据抓取,技术价值在于保障指标‘数据纯度’——即原始性、时效性与结构一致性。它特别适用于混合init体系、老旧内核(如Ubuntu 18.04的systemd 237 + SysV兼容层)及ELK栈集成场景,广泛应用于Java微服务、MySQL、Do

weixin_30384217的博客 430

STM32 Modbus-RTU从零到实战:手把手教你用HAL库实现工业通信(附完整代码)

本文详细介绍了如何使用STM32 HAL库从零开始实现Modbus-RTU从机通信。内容涵盖RS485硬件设计、CubeMX串口与定时器配置、基于空闲中断的高效数据接收、协议栈状态机设计、CRC16校验实现以及常用功能码处理。文章提供了完整的代码框架和调试方法,帮助开发者快速构建稳定的工业通信节点。

weixin_28278377的博客 191

PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java

PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java 小博是新城小学二年级学生,这孩子人很老实,数学、语文成绩都是中等。不过一旦坐在电脑前,写起代码来,则有些霸气侧漏,尤其擅长各种暴力方法。本题就是数学莫老师的题目之一,请你和小博一起暴力求解吧。 输入格式: 第一行给出这个和N(图中例子的和N为2000)。 输出格式: 第一行输出所有解的数目K,随后K行按照DCBA 4位数字从...

qryzhfj的博客 2190

在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序

Soft-RoCE(也称为 RXE)是一个软件实现的 RoCE(RDMA over Converged Ethernet)设备。它允许在没有 RDMA 硬件的普通服务器上运行 RDMA 应用程序。无需专用 RDMA 硬件支持标准以太网完整的 RDMA Verbs API 支持适合开发、测试和学习性能不如真实 RDMA 硬件CPU 开销较高延迟较高。

m0_74186706的博客 1207

YOLOv11改进策略【模型轻量化】| 替换骨干网络为 2024轻量化网络MoblieNetV4:移动生态系统的通用模型

一、本文介绍 本文记录的是基于MobileNet V4的YOLOv11目标检测轻量化改进方法研究。MobileNet V4通过整合UIB、Mobile MQA以及优化的NAS策略,能够在在不降低性能指标的前提下,降低计算成本。本文配置了原论文中MNv4-Conv-S、MNv4-Conv-M、MNv4-Conv-L、MNv4-Hybrid-M和MNv4-Hybrid-L五种模型,以满足不同的需求。 模型 参数量 计算量 推理速度 YOLOv11m 20.0M 67.6GFLOPs 3.5ms

Limiiiing的博客 4460

Ubuntu 20.04 下用 systemd 原生能力构建轻量级进程沙箱

进程沙箱是一种通过内核隔离机制限制程序资源访问与系统视图的安全技术,其核心原理依赖于 Linux namespace(如 PID、network、mount)与 cgroup v2 资源控制的协同作用。相比 Docker 等容器运行时,systemd 提供声明式、零依赖、深度集成的操作系统级沙箱能力,具备高可靠性与低运维开销的技术价值。典型应用场景包括不可信代码执行、CI/CD 构建隔离、老旧服务加固及 webhook 安全处理。本文聚焦 Ubuntu 20.04 这一广泛部署的 LTS 环境,详解如何利用

weixin_33805992的博客 580

YOLOv8剪枝 l1剪枝测试精度仅掉0.8个点,速度提高10.7fps!

文章摘要: 本文提出了一种基于组归一化的重要性评分方法GroupNormImportance,用于神经网络剪枝中的通道选择。该方法支持多种变体,包括标准L1范数、组L1范数和BN缩放因子等计算方式。核心实现包括三个关键部分:1)支持p范数计算(默认为L2);2)提供7种组重要性归约方法(如均值、最大值等);3)提供8种归一化方案(包括标准化、高斯化、LAMP等)。该方法输入一个剪枝组,输出各通道的重要性分数,通过依赖图可实现结构化剪枝。实验对比图展示了剪枝前后的效果差异,验证了该方法的有效性。

FJN110的博客 397

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Ubuntu 16.04 Nginx源码编译部署实战指南

Nginx作为最主流的Web服务器与反向代理,其版本、模块支持和TLS能力直接决定现代Web服务的可用性与安全性。在Ubuntu 16.04这类EOL(生命周期结束)系统中,APT仓库提供的Nginx 1.10.3存在模块缺失、安全补丁滞后、systemd兼容性差等深层缺陷,无法满足HTTP/2、真实IP透传、TLSv1.3协商等生产级需求。本文聚焦Nginx源码编译部署这一关键技术路径,详解如何通过混合部署策略——保留APT管理的配置与服务框架,替换为高版本(如1.20.2)自编译二进制,并绑定定制化Op

weixin_34129696的博客 1063

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: Socket_Kernel_Module 03
下一篇: Socket_Kernel_Module 05
cpusoft
博客等级 码龄22年 8粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值