论坛有Linux高手吗?我们需要在FreeBSD上安装腾讯的TOA模块,但没有对应的版本
这个是腾讯的TOA模块的安装教程https://cloud.tencent.com/document/product/608/18945
我们的版本是FreeBSD。上面没有Freebsd的版本。
文档里提到有通用版本,但我们的技术人员看了一下代码,说FreeBSD里没有这些库,根本无法编译。
用不了,freebsd中没有这些文件
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/version.h>
#include <linux/err.h>
#include <linux/time.h>
#include <linux/skbuff.h>
#include <net/tcp.h>
#include <net/inet_common.h>
#include <asm/uaccess.h>
#include <linux/netdevice.h>
#include <net/net_namespace.h>
#include <linux/fs.h>
#include <linux/sysctl.h>
#include <linux/proc_fs.h>
#include <linux/kallsyms.h>
#include <net/ipv6.h>
#include <net/transp_v6.h>
freebsd 和 linux 内核不一样,没用的。 内核模块,跟内核绑定很严重。 本帖最后由 Himem 于 2020-6-17 17:27 编辑
一般cdn都会将请求头中加入X-Forwarded-For头来标明真实来源IP吧,nginx装了realip模块就可以了,可以php先创建个phpinfo()看下请求是否有这个头
不过如果纯是tcp中转(cdn配置时没有要ssl私钥),没有修改请求内容,那可能确实要这个TOA模块了 FreeeBSD 和Linux 是类Unix 系统,不通用,如要编译,需要自行适配,需要很熟悉网络驱动的人才行 本帖最后由 Himem 于 2020-6-17 17:44 编辑
Himem 发表于 2020-6-17 17:22
一般cdn都会将请求头中加入X-Forwarded-For头来标明真实来源IP吧,nginx装了realip模块就可以了,可以先创 ...
看它的文档是将tcp头中加入了额外字段表示客户端IP端口二元组,
那可以后台写个抓包,提取记录cdn二元组与真实二元组的映射,
php里用真实ip时拿当前获得的cdn二元组去前面找记录(或做成nginx模块)
虽然效率不佳 你们使用FreeBSD是哪个版本啊? 记得 FreeBSD 有个二进制兼容功能,可以直接运行 Linux 里的应用。 Himem 发表于 2020-6-17 17:22
一般cdn都会将请求头中加入X-Forwarded-For头来标明真实来源IP吧,nginx装了realip模块就可以了,可以php先 ...
不是使用nginx。 jenkins 发表于 2020-6-17 17:31
你们使用FreeBSD是哪个版本啊?
11 atommann 发表于 2020-6-17 18:40
记得 FreeBSD 有个二进制兼容功能,可以直接运行 Linux 里的应用。
你有超过3个精华帖子,帮你将VIP免费升级到VIP++。 本帖最后由 Himem 于 2020-6-18 05:43 编辑
armok. 发表于 2020-6-17 20:26
不是使用nginx。
freebsd内核和linux内核 协议栈实现有一定差异 修改的工作量应该会大于重新实现了
那再开一台虚拟机或物理机装TOA模块的linux,用于接管外部请求,
虚拟机里装nginx,配置proxy_pass反代到原freebsd系统,proxy_set_header的Client-IP头或XFF挂上源IP,
discuz是默认优先识别XFF/Client-IP头中的IP,配置不需要修改
不迁移的话,应该是工作量最小的方案,可以作为过渡 BSD和linux实现方式不同
如果要从机理上做兼容
不好干啊
光那些PF的规则就要折腾https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif 用个docker跑这个不就行了 这是Linux内核模块,FreeBSD内核和Linux完全没有交集,只能找同时精通Linux和FreeBSD内核的高手移植才行。
页:
[1]