BGP网络解决方案

BGP(边界网关协议,Border Gateway Protocol)是一种用于在自治系统(AS)之间进行路由信息交换的协议,特别是在互联网中。它是一种基于策略的协议,用于在不同的互联网服务提供商(ISP)之间找到最佳路径。BGP的目标是确保网络稳定性和路由效率。BGP产品可以实现最优路径访问,提升用户互联网访问质量

2026年5月8日 · admin

Centos7 cacti spine php74 nginx安装配置

cacti是什么 Cacti是一款功能完整的网络图形化解决方案,Cacti旨在利用RRDtool的数据存储以及图形化功能来给广大安全研究人员提供以下功能性帮助: 远程和本地数据收集; 设备扫描与发现; 设备与图形创建自动化; 自定义数据收集方法; 用户、组和域访问控制; 所有的这些功能都封装在一个直观并易于使用的用户界面之中,而这种特性对于局域网安装配置以及包含数千台设备的复杂网络都有实际意义。 本项目是Ian Berry于2000年初创建的一个高中研究项目,但目前已经发展成为上千万公司以及网络安全爱好者用于监控和管理他们企业网络以及数据中心的最佳解决方案了。 Centos 7 安装 cacti 安装基础依赖和数据库 基础依赖: 先安装对应的yum repo,避免部分依赖rpm包找不到 yum install epel-release.noarch -y yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y 注意,这里使用了基于remi库封装的php rpm包,所以在后续使用的时候,需要考虑remi库 rpm包安装的路径问题,否则可能出现cmd.php/poller.php运行失败的问题。 接下来安装基础库: yum install wget gcc gcc-c++ zlib-devel wget libcurl-devel openssl-devel bzip2-devel gmp-devel.x86_64 mpfr-devel.x86_64 libmpc-devel.x86_64 libSM-devel.x86_64 libxml2-devel gcc-gfortran.x86_64 bzip2-devel libjpeg-turbo-devel.x86_64 openjpeg-devel.x86_64 libpng12-devel.x86_64 libtiff-devel cmake3.x86_64 autoconf automake libtool yum-utils libSM-devel.x86_64 bzip2-devel libffi-devel jemalloc-devel.x86_64 gperftools-devel.x86_64 jasper-devel.x86_64 libxml2-devel tbb-devel libdc1394-devel gstreamer-devel.x86_64 blosc-devel libaec-devel brotli-devel.x86_64 giflib-devel.x86_64 gtk2-devel libaio-devel libsqlite3x-devel.x86_64 gperftools-devel.x86_64 make eigen3-devel ntp ntpdate perl-devel perl-CPAN perl-YAML fontconfig ttmkfdir -y 看得出来,我们安装了很多图像图像乃至视频的包。如果觉得多余,可以把gstream相关不安装,不过ntp/ttmk这些时间、字体相关的,还是装一下。 2. 安装数据库 然后我们来安装数据库服务器。这里我们选择安装mysql5.7。 ...

2026年5月8日 · admin

Centos7 升级gcc/glibc/make/cmake

前言 眼瞅着Centos7的生命周期即将终结,系统默认的gcc/glibc版本又太低,而事实上,目前为止,因升级gcc/glibc导致的悲剧又依然不少见,特别是glibc从升级到宕机,几乎每隔一段时间就可以看见有网友嗝屁。所以,这里把这个基础操作步骤写出来,做个小记。 操作有风险,执行需谨慎 本人也曾经因升级glibc出过事故,后因算法需求,在多次练习后已是信手拈来,但是自己的升级过程不够规范和详细,所以在写本日记的时候,参考(ctrl+c/ctrl+v)了大神的这篇文章: https://chandrameenamohan.medium.com/building-nvidia-triton-inference-server-from-scratch-for-tensorflow-backend-873ef0a1f7f3 来总结此文。该文章的各项步骤均已经过本人亲自验证可行。 升级前的准备 验证当前版本: gcc -v ldd --version 确定升级的版本 gcc4.8.5–>gcc9.3.0 glibc2.17–>glibc2.29 升级路径 升级和验证 先安装依赖 包名 用途 wget 用于从网络下载文件 gcc C/C++ 编译器 gcc-c++ C++ 编译器 zlib-devel zlib 开发库 libcurl-devel libcurl 开发库 openssl-devel OpenSSL 开发库 bzip2-devel bzip2 开发库 gmp-devel.x86_64 GNU Multiprecision Library 开发库(x86_64) mpfr-devel.x86_64 MPFR Library 开发库(x86_64) libmpc-devel.x86_64 MPC Library 开发库(x86_64) libSM-devel.x86_64 X.Org SM 库开发库(x86_64) libxml2-devel libxml2 库开发库 gcc-gfortran.x86_64 Fortran 编译器(x86_64) autoconf 自动化配置脚本生成器,用于生成 Makefile 文件 automake 自动化 Makefile 生成器,用于生成 Makefile.in 文件 boost-devel Boost 库的开发包,用于开发 C++ 程序 make 构建工具,用于自动化软件编译、安装、测试等工作 patchelf 用于修改 ELF 文件的符号表和动态链接库依赖项 bison 语法分析器生成器,用于生成 C 语言语法分析器 大概是这些依赖,yum 安装即可,建议在yum安装这些依赖之前,都安装一下epel库。 ...

2026年5月8日 · admin

debian12 编译frankenphp.md

title: “debian12 编译frankenphp” date: 2024-01-19 tags: [ “Frankenphp”, “caddy”, “xcaddy” ] weight: 100 image: “/images/frankenphp.png” 前言 FrankenPHP 是建立在 Caddy Web 服务器之上的现代 PHP 应用程序服务器。 FrankenPHP 凭借其令人惊叹的功能为你的 PHP 应用程序提供了超能力:早期提示、worker 模式、实时功能、自动 HTTPS、HTTP/2 和 HTTP/3 支持…… FrankenPHP 可与任何 PHP 应用程序一起使用,并且由于提供了与 worker 模式的集成,使你的 Symfony 和 Laravel 项目比以往任何时候都更快。 FrankenPHP 也可以用作独立的 Go 库,将 PHP 嵌入到任何使用 net/http 的应用程序中。 本质来说,frankenphp是通过cgo来跑php的! 至于快/慢问题,目测是比fast-cgi/php-fpm快的。 编译前准备 安装必要的依赖 apt-get install libbrotli-dev \ libsnmp-dev libxml2-dev libsqlite-dev libsnmp-dev libxml2-dev libsqlite3-dev libzstd-dev liblz4-dev libjpeg-dev libpng-dev libpcre3-dev libmcrypt-dev libgd-dev libbz2-dev libonig-dev libpq-dev libreadline-dev libsodium-dev ...

2026年5月8日 · admin

FAQ

Question 1 Answer 1 Question 2 Answer 2 Question 3 Answer 3

2026年5月8日 · admin

FreeBSD Lagg 端口聚合与LACP配置

基础环境 os:FreeBSD 12.3-RELEASE 网卡:Mellanox Technologies ConnectX-4 Lx 交换机:华为ce6820-48S6CQ-B 需求 FreeBSD 通过ConnectX-4 两个端口连接到交换机。 配置端口聚合(bonding、aggregate,port-chanel,portgroup 好多种说法),实现2个端口负载均衡。 配置 FreeBSD侧配置: kldload if_lagg ### 加载bonding,即freebsd里的lagg内核模块 ifconfig lagg0 create ### 创建lagg接口 ifconfig mce0 up ### 启动mce1 网卡 ifconfig mce1 up ### 启动mce1 网卡 ifconfig lagg0 up laggproto lacp laggport mce0 laggport mce1 ### 启动聚合接口,聚合协议为lacp,同时还有loadbalance/fce/failover/roundrobin和none模式可选 交换机侧配置: int eth 111 mode lacp-dynamic 持久化配置到服务器上,编辑/etc/rc.conf 配置文件 ifconfig_mce0="up" ifconfig_mce1="up" cloned_interfaces="lagg0" ifconfig_lagg0="up laggproto lacp laggport mce0 laggport mce1" ipv4_addrs_lagg0="x.x.x.x/x" defaultrouter="x.x.x.x" FreeBSD Lagg协议的分类 协议 说明 failover 主备模式,第一个端口为主端口,后续端口为备用端口。流量默认走主端口,主端口故障中断后切换到备用端口 LACP 支持 IEEE 802.3ad 链路聚合控制协议 (LACP) 和标记协议。 LACP 将与一个或多个链路聚合组中的对等方协商一组可聚合链路。 每个 LAG 由相同速度的端口组成,设置为全双工操作。 流量将在总速度最大的 LAG 中的端口之间进行平衡,在大多数情况下,只有一个 LAG 包含所有端口。如果物理连接发生变化,链路聚合将快速收敛到新配置。根据协议标头hash信息平衡活动端口之间的传出流量,并接受来自任何活动端口的传入流量。hash包括以太网源地址和目标地址,以及 VLAN 标记(如果可用)以及 IPv4/IPv6 源地址和目标地址。一般和华为交换机对接时使用 FEC 支持思科 EtherChannel。 这是一种静态设置,不会与对等方协商聚合或交换帧来监控链路,如果交换机支持 LACP,则应改为使用它。根据标头信息hash平衡活动端口之间的传出流量,并接受来自任何活动端口的传入流量。 hash包括以太网源地址和目标地址,以及 VLAN 标记(如果可用)以及 IPv4/IPv6 源地址和目标地址。 loadbalance FEC的别名 roundrobin 使用轮询分发流量,通过所有活动端口分配传出流量,并接受来自任何活动端口的传入流量。 此模式将违反以太网帧顺序,应谨慎使用。大概率负载不均。 none 这个协议什么都不做:它在不禁用 lagg 接口本身的情况下禁用任何流量。

2026年5月8日 · admin

FreeBSD ZFS存储与samba配置

作为穷人,我们选择基于FreeBSD+ZFS+SAMBA构建山寨存储 毋庸质疑,也无需赘述 freebsd操作系统是公认的“快”、“安全”、“稳定” zfs是人类有史以来最先进的文件系统 FreeBSD入门 软件包管理 Linux® 命令 (Red Hat/Debian) FreeBSD 等价命令 目的 yum install package / apt-get install package pkg install package 从远程仓库安装 package rpm -ivh package / dpkg -i package pkg add package 安装 package rpm -qa / dpkg -l pkg info 列出已安装的软件包 系统管理 Linux FreeBSD 等价命令 目的 lspci pciconf 列出 PCI 设备 lsmod kldstat 列出已载入的内核模块 modprobe. kldload / kldunload 载入/卸载内核模块 strace. truss 跟踪系统调用 网络管理 Linux FreeBSD 等价命令 目的 ip ifconfig ifconfig ifconfig iptable ipfw ZFS入门 ZFS 的历史 ZFS是由 Matthew Ahrens 和 Jeff Bonwick 在 2001 年开发的。ZFS 是作为 太阳微系统(Sun MicroSystem) 公司的 OpenSolaris 的下一代文件系统而设计的。在 2008 年,ZFS 被移植到了 FreeBSD 。同一年,一个移植 ZFS 到 Linux 的项目也启动了。然而,由于 ZFS 是 通用开发和发布许可证 (Common Development and Distribution License)(CDDL)许可的,它和 GNU 通用公共许可证 不兼容,因此不能将它迁移到 Linux 内核中。为了解决这个问题,绝大多数 Linux 发行版提供了一些方法来安装 ZFS。 在甲骨文公司收购太阳微系统公司之后不久,OpenSolaris 就闭源了,这使得 ZFS 的之后的开发也变成闭源的了。许多 ZFS 开发者对这件事情非常不满。 三分之二的 ZFS 核心开发者 ,包括 Ahrens 和 Bonwick,因为这个决定而离开了甲骨文公司。他们加入了其它公司,并于 2013 年 9 月创立了 OpenZFS 这一项目。该项目引领着 ZFS 的开源开发。 让我们回到上面提到的许可证问题上。既然 OpenZFS 项目已经和 Oracle 公司分离开了,有人可能好奇他们为什么不使用和 GPL 兼容的许可证,这样就可以把它加入到 Linux 内核中了。根据 OpenZFS 官网 的介绍,更改许可证需要联系所有为当前 OpenZFS 实现贡献过代码的人(包括初始的公共 ZFS 代码以及 OpenSolaris 代码),并得到他们的许可才行。这几乎是不可能的(因为一些贡献者可能已经去世了或者很难找到),因此他们决定保留原来的许可证。 ...

2026年5月8日 · admin

jupyterhub notebook ldap统一认证

冷饭重炒 这其实是在19年就应该发出来的一点笔记,只是以前都存在自己脑子里,而且现在随着版本的变动,配置上也有了一点点小变化,所以炒一下冷饭。 需求是什么 在一个小公司里面,如何为算法工程师分配GPU资源是个问题。大厂当然有成熟的k8s+各种gpu虚拟化黑科技。但很显然,这需要完整的体系,从用户认证到临时存储、持久化存储、日志存储、资源配额、资源用量统计、任务队列等等的配套,才能结合k8s的调度一起来完成GPU资源分配。 在2019年的时候,服务器少,人也少,项目和任务单一,所以那时候只搞了服务器端的ldap认证,不存在什么资源协调问题,所以裸机直接上了。 到了20年,机器增多,人也增多,任务和环境的诉求也不一样,这个时候,再走裸机,很显然,无论从资源利用率、数据安全、环境冲突(即使有Anaconda和virtualenv)这样的环境管理,也无法在延续之前的裸机方式了。 所以呢,准备基于docker容器特性,来实现GPU资源的交付和隔离。那就意味着,在容器内,涉及容器内ssh服务(算法工程师大多喜欢通过vscode直连服务器ssh)、notebook的认证,延续之前的ldap认证。 规划是这样的: 采用nvidia-container-toolkit结合docker交付GPU资源 建设内部镜像库,涵盖常见的发行版和cuda版本; 基于内部镜像库build每个工程师的容器镜像 每个工程师的工程目录,即ldap里面账户的/home目录,一般在/home/username 下面 每个工程师能够访问的数据通过挂载host上的目录透传到容器中 统一管理容器内的时间戳、认证、权限(sudoers) 实际的操作 容器镜像build的时候安装openssh-server、生成ssh服务所需要的key文件 容器镜像build的时候,安装jupyterhub和jupyterhub-ldapauthenticator 和nodejs、npm包configurable-http-proxy 容器镜像build的时候安装nss-pam-ldapd 认证模块 创建容器 docker run -d --rm=false --net=host --restart=unless-stopped --name username --shm-size=8g (cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}') -it -v /data-directory:/data-directory -v /home/username:/home/username -v /var/log/username:/var/log/username -v /etc/jupyterhub/username_config.py:/etc/jupyterhub/username_config.py -e TZ=Asia/Shanghai -v /etc/pam.d:/etc/pam.d:ro -v /etc/nslcd.conf:/etc/nslcd.conf:ro -v /etc/nsswitch.conf:/etc/nsswitch.conf:ro -v /var/run/nslcd:/var/run/nslcd -v /etc/passwd:/etc/passwd:ro -v /etc/group:/etc/group:ro -v /etc/shadow:/etc/shadow:ro -v /etc/gshadow:/etc/gshadow:ro -v /etc/sudoers:/etc/sudoers:ro --runtime nvidia --privileged image:tag /home/username/start.sh 几个特殊的挂载点和参数,解释一下: ...

2026年5月8日 · admin

librenms部署到cloudflare

Librenms是什么 LibreNMS是一个开源的网络监控和自动化工具。它可以帮助管理员监控和管理他们的网络设备、服务器和应用程序。LibreNMS提供了一个综合的平台,用于监控网络设备的性能、可用性和健康状况,以及生成报告和警报。它支持SNMP(Simple Network Management Protocol)来收集设备的指标和状态信息,并提供了一个用户友好的Web界面,供管理员查看和分析监控数据。 LibreNMS具有许多功能,包括实时图表和可视化,用于显示网络设备的性能和趋势,以及提供历史数据的存档。它支持自动发现网络设备和应用程序,并提供基于规则的警报和通知功能,以便管理员在出现问题时及时采取行动。此外,LibreNMS还提供了强大的API,可以与其他系统和工具集成,以实现自动化和定制化的监控和管理任务。 librenms的架构 LibreNMS是使用PHP语言开发的,基于Laravel框架构建的网络监控系统。Laravel是一个流行的开源PHP框架,它提供了许多工具和组件,用于快速开发高质量的Web应用程序。 使用Laravel作为开发框架,LibreNMS能够充分利用Laravel提供的功能和特性,包括路由管理、数据库抽象层、会话管理、认证和授权、模板引擎等。这些功能使得LibreNMS的开发过程更加高效、可维护和可扩展 为什么部署到cloudflare Cloudflare 是一家提供内容分发网络服务、DDoS 保护、互联网安全性和分布式域名服务器服务的公司。其服务旨在保护和加速任何互联网应用程序,而无需更改应用程序的代码。以下是 Cloudflare 的主要功能: 内容分发网络 (CDN): Cloudflare 的 CDN 通过其全球数据中心网络存储网站的静态内容,从而使访问者能够从最近的数据中心获取内容,加速页面加载速度。 DDoS 保护: Cloudflare 可以识别并吸收大量的请求,从而保护网站不受恶意攻击。 Web 安全性: Cloudflare 提供 Web 应用程序防火墙 (WAF)、安全套接字层 (SSL) 加密等功能,以增强网站的安全性。 智能路由: Cloudflare 的 Argo Smart Routing 能够确保用户的请求通过最快的路径到达目的地。 部署到cloudflare的优势: 安全性: LibreNMS 作为一个网络管理和监控工具,可能会面临各种网络攻击,特别是 DDoS 攻击。Cloudflare 可以为 LibreNMS 提供额外的安全层,保护它免受这些攻击。 可访问性: 使用 Cloudflare,即使 LibreNMS 的主服务器出现问题,用户仍然可以通过 Cloudflare 的缓存数据访问 LibreNMS 的某些信息。 性能: Cloudflare 的 CDN 可以加速 LibreNMS 的在全球范围内的访问,特别是当你拥有一个跨地域的协作或合作的时候,确保你和你的合作伙伴能够快速访问LibrenNMS以获得网络用量和简况状况显得尤为重要。 简化配置: 对于那些不熟悉web服务安全配置的用户,使用 Cloudflare 可以简化 LibreNMS 的安全和性能优化配置,确保LibreNMS的相对安全性和管理的便捷性。 ...

2026年5月8日 · admin

nginx 1.25.0 pagespeed 安装

前言 遵从来自20世纪的呼唤,最近重新开始研究单体应用的极致的性能优化,在web应用加速来说,google和nginx曾经一度引领风骚,pagespeed+nginx的组合,一度成就了yottta这样被google花了5亿美金收购的公司,号称对web应用,实现了页面精简、html/css压缩,动态加速等。而这样的东西自从2018年后,似乎突然就不被重视了。 随着云和微服务的兴起,应用被拆分得越来越细,以至于,不再有人care在http1.0/1.1时代的C10K、C100K这样的挑战了。 性能不够,机器来凑,尤其是,使用云和k8s之后,没有了直接的硬件投入,起个服务和应用,api调用一下,鼠标点一点,几百上千的虚拟机或pod就起来了,而容器则动则几万几十万个,而这样的情况,短时间的成本可能已经在“人比机器贵”的黄金时代来说,不再引人注目了。长此以往,特别到了疫情后,大家的口袋都没钱的时候,才发现,原来不知不觉,在云上已经花了这么多钱,所以,鼓吹下云也好,继续上云也罢,理念的东西都不重要,重要的,还是经济效益,于是,单体应用的性能,理应重新得到重视。 而这时候,我才发现,nginx似乎也不再受欢迎,好多人都要换到caddyserver去,pagespeed更是几乎没什么人用了,连明日黄花,可能都算不上了。。毕竟现代前端框架,自身在build的时候,已经是各种裁剪优化了,甚至于,倾向于搞ssr(server side render)这样的歪门邪道(当然,一段时间是因为框架对搜索引擎过于不友好,搞出来的web,搜索引擎都收录不了。。哪来的用户,哪来的业务),服务器的计算资源,始终是有限的,而客户端,却是随着用户数增长而增长…最主要的一点,服务器,是需要付费的,而用户侧的算力,是免费的. 好了,废话说了很多,很显然,在这个时候,来折腾这些一度落寞的玩意,可能会费时费力。 (有人会叫你去白嫖比人打包好的docker镜像或deb包),而我决定自力更生,丰衣足食。 安装环境 OS:Centos 7.9 GCC:4.8.5 NGINX:1.25.0 PAGESPEED(NPS):1.13.35.2 依赖: 包名 用途 wget 用于从网络下载文件 gcc C/C++ 编译器 gcc-c++ C++ 编译器 zlib-devel zlib 开发库 libcurl-devel libcurl 开发库 openssl-devel OpenSSL 开发库 bzip2-devel bzip2 开发库 gmp-devel.x86_64 GNU Multiprecision Library 开发库(x86_64) mpfr-devel.x86_64 MPFR Library 开发库(x86_64) libmpc-devel.x86_64 MPC Library 开发库(x86_64) libSM-devel.x86_64 X.Org SM 库开发库(x86_64) libxml2-devel libxml2 库开发库 gcc-gfortran.x86_64 Fortran 编译器(x86_64) libjpeg-turbo-devel.x86_64 libjpeg-turbo 库开发库(x86_64) openjpeg-devel OpenJPEG 库开发库 libpng12-devel libpng 库开发库 libtiff-devel libtiff 库开发库 cmake3.x86_64 CMake 3 编译系统(x86_64) libtools-devel libtools 开发库 yum-utils yum 实用工具 libffi-devel libffi 库开发库 jemalloc-devel.x86_64 jemalloc 内存分配器开发库(x86_64) jasper-devel JasPer 库开发库 tbb-devel Threading Building Blocks 库开发库 libdc1394-devel libdc1394 库开发库 gstreamer-devel.x86_64 GStreamer 库开发库(x86_64) blosc-devel Blosc 库开发库 libaec-devel libaec 库开发库 brotli-devel Brotli 库开发库 giflib-devel giflib 库开发库 gtk2-devel GTK+ 2 库开发库 libaio-devel libaio 库开发库 libsqlite3x-devel.x86_64 libsqlite3x 库开发库(x86_64) make 构建工具 eigen3-devel Eigen3 线性代数库开发库 安装 安装依赖 yum install epel-release.noarch -y yum install wget gcc gcc-c++ zlib-devel libcurl-devel openssl-devel bzip2-devel gmp-devel.x86_64 mpfr-devel.x86_64 libmpc-devel.x86_64 libSM-devel.x86_64 libxml2-devel gcc-gfortran.x86_64 libjpeg-turbo-devel.x86_64 openjpeg-devel.x86_64 libpng12-devel.x86_64 libtiff-devel cmake3.x86_64 libtool-devel yum-utils libffi-devel jemalloc-devel.x86_64 jasper-devel.x86_64 tbb-devel libdc1394-devel gstreamer-devel.x86_64 blosc-devel libaec-devel brotli-devel.x86_64 giflib-devel.x86_64 gtk2-devel libaio-devel libsqlite3x-devel.x86_64 make eigen3-devel libpcre3-devel 下载安装包并解压: wget -O nps.zip https://github.com/apache/incubator-pagespeed-ngx/archive/71e24c1c47113acb5924d8cb523d572b376e9dd0.zip && unzip nps wget http://nginx.org/download/nginx-1.25.0.tar.gz wget -O psol.tar.gz https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz nginx编译注意点 LD_LIBRARY_PATH=../incubator-pagespeed-ngx-${PAGESPEED_VERSION}/usr/lib:/usr/lib 指定LD_LIBRARY_PATH到incubator-pagespeed-ngx-71e24c1c47113acb5924d8cb523d572b376e9dd0,以便编译pagespeed,71e24c1c47113acb5924d8cb523d572b376e9dd0即为上文下载的对应版本的pagespeed版本解压后的目录 ...

2026年5月8日 · admin