当前位置: 首页 > news >正文

一个网站可以做多少个关键词wordpress会员发布文章

一个网站可以做多少个关键词,wordpress会员发布文章,网站建设的七大优缺点,360兼容模式 网站变形完成内容 我将创建一个简单的防火墙demo,帮助你熟悉网络内核编程。这个demo将基于Linux的Netfilter框架实现。 基础框架基础概念 Netfilter 框架 Netfilter 是 Linux 内核中的一个框架,用于对网络数据包进行过滤、修改和重定向。它提供了多个钩子点&…

完成内容

我将创建一个简单的防火墙demo,帮助你熟悉网络内核编程。这个demo将基于Linux的Netfilter框架实现。

基础框架

在这里插入图片描述

基础概念

Netfilter 框架

  • Netfilter 是 Linux 内核中的一个框架,用于对网络数据包进行过滤、修改和重定向。它提供了多个钩子点(hook points),允许用户在不同的网络层插入自定义逻辑。

Netfilter 主要功能

  1. 数据包过滤(如防火墙)。
  2. 网络地址转换(NAT,包括 SNAT 和 DNAT)。
  3. 数据包修改(如修改 TTL、TOS 等字段)。
  4. 数据包日志记录。

Netfilter 钩子点

  1. NF_INET_PRE_ROUTING:数据包进入网络栈后,但在路由决策之前。适合用于 DNAT(目标地址转换)或数据包标记。
    1)netfilter的内核挂载点在代码中的位置:内核代码路径:/net/ipv4/ip_input.c
    2)具体函数:在 ip_rcv()
    在这里插入图片描述
    ip_rcv_finish是路由查找后的回调函数

  2. NF_INET_LOCAL_IN:数据包目标是本机(即目标地址是本机的 IP 地址)。适合用于过滤或修改进入本机的数据包。
    1)内核代码路径:/net/ipv4/ip_input.c
    2)具体函数:在 ip_local_deliver()
    在这里插入图片描述

  3. NF_INET_FORWARD:数据包需要被转发到其他主机(即本机作为路由器)。适合用于过滤或修改转发的数据包。
    1)内核代码路径:/net/ipv4/ip_forward.c
    2)具体函数:在 ip_forward()
    在这里插入图片描述
    在这里插入图片描述

  4. NF_INET_LOCAL_OUT:数据包从本机发出。适合用于过滤或修改从本机发出的数据包。
    1)内核代码路径:/net/ipv4/ip_output.c
    2)具体函数:在 __ip_local_out()
    在这里插入图片描述

  5. NF_INET_POST_ROUTING:数据包在路由决策之后,但在发送到网络接口之前。适合用于 SNAT(源地址转换)或数据包标记
    1)内核代码路径:/net/ipv4/ip_output.c
    2)具体函数:在 ip_output()
    在这里插入图片描述

在NF_INET_PRE_ROUTING点进行实例实现

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/ip.h>
#include <linux/tcp.h>staticunsignedintcustom_hook(void*priv,structsk_buff*skb,conststructnf_hook_state*state){structiphdr*ip_header =ip_hdr(skb);if(ip_header->protocol == IPPROTO_TCP){// 只处理 TCP 数据包structtcphdr*tcp_header =tcp_hdr(skb);printk(KERN_INFO "Custom Netfilter Hook: TCP packet to port %u\n",ntohs(tcp_header->dest));if(ntohs(tcp_header->dest)==22){   // 只处理目标端口为 22 的数据包printk(KERN_INFO "Custom Netfilter Hook: TCP packet to port 22\n");return NF_DROP;// 丢弃数据包}}return NF_ACCEPT;// 允许数据包继续传递
}staticstructnf_hook_ops nfho ={.hook     = custom_hook,.pf       = NFPROTO_IPV4,          //作用在ip层.hooknum  = NF_INET_PRE_ROUTING,// 在 PRE_ROUTING 阶段处理数据包.priority = NF_IP_PRI_FIRST,      // 优先级
};staticint __init pre_routing_module_init(void){nf_register_net_hook(&init_net,&nfho);printk(KERN_INFO "Custom Netfilter Hook registered\n");return0;
}staticvoid __exit pre_routing_module_exit(void){nf_unregister_net_hook(&init_net,&nfho);printk(KERN_INFO "Custom Netfilter Hook unregistered\n");
}module_init(pre_routing_module_init);
module_exit(pre_routing_module_exit);MODULE_LICENSE("GPL");
MODULE_AUTHOR("pre_routing_module_init");
MODULE_DESCRIPTION("Netfilter hook example");

Makefile:

obj-m += hook_NF_INET_PRE_ROUTING.oall:make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modulesclean:make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

编译与验证

终端中运行以下命令来编译内核模块

$ make 
make -C /lib/modules/5.4.0-150-generic/build M=/home/hook_netfilter modules
make[1]: Entering directory '/usr/src/linux-headers-5.4.0-150-generic'CC [M]  /homehook_netfilter/hook_NF_INET_PRE_ROUTING.oBuilding modules, stage 2.MODPOST 1 modulesCC [M]  /home/hook_netfilter/hook_NF_INET_PRE_ROUTING.mod.oLD [M]  /homehook_netfilter/hook_NF_INET_PRE_ROUTING.ko
make[1]: Leaving directory '/usr/src/linux-headers-5.4.0-150-generic'
@ubuntu:hook_netfilter$ ls 
hook_NF_INET_PRE_ROUTING.c   hook_NF_INET_PRE_ROUTING.mod    hook_NF_INET_PRE_ROUTING.mod.o  Makefile       Module.symvers
hook_NF_INET_PRE_ROUTING.ko  hook_NF_INET_PRE_ROUTING.mod.c  hook_NF_INET_PRE_ROUTING.o      modules.order

加载模块

$ sudo insmod hook_NF_INET_PRE_ROUTING.ko

查看模块

$ lsmod |grep hook
hook_NF_INET_PRE_ROUTING    16384  0
$ dmesg | tail
[716700.997388] Custom Netfilter Hook registered
[709907.950324] Custom Netfilter Hook: TCP packet to port 22
[709907.950325] Custom Netfilter Hook: TCP packet to port 22

验证结果

在这里插入图片描述

验证成功(无法连接)

在这里插入图片描述

我们可以用一个框图来简单罗列数据方向

在这里插入图片描述
意味着 custom_hook 函数被挂载到了 ip_rcv() 函数中的 NF_HOOK 调用点。

这是最早能抓到包的地方,所有进入的数据包(无论是发往本机还是需要转发的)都会经过这里,过滤规则会非常早地生效。
在这里插入图片描述

http://www.dtcms.com/a/407990.html

相关文章:

  • 敏感网站用什么浏览器重庆市最新新闻
  • 怎么用自助网站订阅 wordpress
  • 国外优秀论文网站郑州新闻
  • [DAX] 新建列
  • 【高等数学】第十二章 无穷级数——第五节 函数的幂级数展开式的应用
  • 深圳品牌网站制作平台企业网站报价表
  • 网站制作开票几个点美团网站除佣金表格怎么做
  • 正规网站建设东莞短视频制作公司
  • 2018年网站建设阿里云电影网站建设教程
  • 【Qt】QWidget 详解
  • 杭州网站建设招聘网站后台收入怎么做会计分录
  • 网站开发已有的知识储备流量神器
  • cin获取string注意点
  • 星沙做淘宝店铺网站山东泰润建设集团网站
  • mip织梦手机网站模板如何做餐饮的网站
  • C++ 6种构造函数简化记忆
  • vscode中编写c++程序
  • 深圳企业网站建设与设计制作中安消防安全网站建设
  • 电商网站 设计方案网站开发与维护岗位说明书
  • 网站开发demowordpress建设下载网站
  • Unity-动画子状态机
  • 建设网站用什么软件下载wordpress支持什么格式视频播放器
  • 数据通信与计算机网络—有线局域网:以太网
  • LIN信号对比脚本
  • 渭南自建站网站建设wordpress架设服务器
  • Ansible Playbook 保姆级教程:从基础配置到 Roles 实战,运维自动化必看
  • c 网站开发简单实例设计企业vi
  • 宁夏网站建设哪里有个人品牌营销公司
  • 如何做国外的网站国外优秀门户网站
  • 个人网站 jsp 域名空间网站平台建设咨询合同