GTX690战术核显卡导弹 - 运维
type: channel
link: https://www.nekopara.uk/category/%E8%BF%90%E7%BB%B4/
description: 运维
items: 家里云服务优化：统一Web服务端口，减小攻击面
items: 使用Systemd代替Mcsmanager管理挂机服务
items: 主题开发日志03：在Manjaro上搭建Nginx+PHP环境
items: 阿里云 ESA 回源 IP 段分享，可用于源站保护
items: 调用API实现Typecho博客VisitorLoggerPro插件IP信息更新
items: 解决PyTorch CUDA报错：no kernel image is available for execution on the device
items: V100 GPU 初体验：AlmaLinux 8.10 快速部署 ComfyUI
items: 个人博客低成本CC防护：抵御85%+常见CC攻击
items: Manjaro Linux 安装 Abaqus 2022 踩坑记
items: 绕过黑洞！利用VPC内网互通低成本实现DDoS攻击下网站高可用

家里云服务优化：统一Web服务端口，减小攻击面
type: item
date: 2026-02-14T17:00:00+08:00
description: 统一家里云的Web服务端口之前很长的一段时间，我的家里云部署的服务都是一个服务监听一个端口，管理相对比较混乱一点，而且因为监听的端口较多，且服务直接暴露，安全风险会更高一些。例如9898端口由Jellyfin监听提供服务，8848端口由Filebrowser监听提供服务，8086端口由NextCloud监听提供服务...这样子虽然在内网访问的情况下方便管理，但是也带来了多端口，多个后端服务直接暴露，管理相对混乱。而且还有一个问题，就是Filebrowser直接监听端口，如果浏览器发送的是http请求，也就是默认在地址栏输入域名+端口时的请求，会直接返回一段文字：client sent an HTTP request to an HTTPS server，然后需要再去地址栏在http后面加上个s，就很操蛋。而对于nginx服务器，则可以直接加上这条规则error_page 497 https://$host:8848$request_uri;即可实现自动跳转，体验要好不少。外加上我家里云其实有专门解析的域名，可以设置不同的子域名用于区分服务，并且我因为我一年多在网站上面的实践，也有了实操经验。所以，我决定把我家里云的Web服务全部统一服务端口，通过vhost进行区分，也就是利用https的sni进行区分，顺带再做一个回落的默认页面来防止低级的IP地址扫描器，还有可能存在的运营商对用户运行的服务的扫描。回落页面设置首先是回落页面设置，这也就是用于掩人耳目的设置，当域名不匹配时，就会返回这个内容。配置文件为/etc/nginx/conf.d/default.conf listen 8848 ssl default_server; listen [::]:8848 ssl default_server; server_name _; # 这是一个通配符，表示任何未匹配的主机名 ssl_certificate /home/chocola/data/certs/bt_cert.pem; ssl_certificate_key /home/chocola/data/certs/bt_cert.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384'; root /var/www/; # 静态文件的位置 index index.html; # 默认主页 location / { try_files $uri $uri/ =404; # 尝试提供请求的文件或目录，如果不存在则返回404 } # 处理错误页面 error_page 404 /404.html; location = /404.html { internal; } error_page 497 /index.html; location = /index.html { internal; # 只允许内部重定向访问 root /var/www; add_header Content-Type text/html; } }记得在对应的目录放置回落页面index.html和修改证书路径位置。以及在虚拟机安装宝塔面板后，拿宝塔面板的自签名证书文件和宝塔的回落页面放到你的服务器上做回落页面，让别人误以为你是个笨蛋在用宝塔（误）进行反代配置安装好Nginx后，我们就可以开始配置各种服务的反代配置了，只需要确保原始IP可以正常传递，并且后端服务支持使用传递的真实IP。Jellyfin这官方给了详细的Nginx反代配置模板，只需要稍加改动就可以正常使用。配置文件为/etc/nginx/conf.d/jellyfin-proxy.confserver { listen 8848 ssl http2; #IPV4 listen [::]:8848 ssl http2; #IPv6 server_name jellyfin.nekopara.uk; error_page 497 https://$host:8848$request_uri; ## The default `client_max_body_size` is 1M, this might not be enough for some posters, etc. client_max_body_size 32M; # Comment next line to al…

使用Systemd代替Mcsmanager管理挂机服务
type: item
date: 2026-02-11T13:33:00+08:00
description: 使用Systemd托管挂机服务随着我对Linux系统的理解逐渐加深，外加上这一年来管理服务器越来越习惯命令行，我逐渐感觉我之前在家里云部署的Mcsmanager应用管理面板是多余的，因为Tmux和Systemd都可以做到，并且因为不需要运行一个nodejs，还更省资源。所以，我下定决心把服务迁移到Systemd。让Systemd以普通用户身份运行服务之前我使用Mcsmanager而不是Systemd的原因，就是觉得Systemd配置比较麻烦，并且默认以root身份运行服务，我感觉很不安全。于是进行多次配置后，用以下的配置文件启动了Mcsmanager：/etc/systemd/system/mcsm-web.service[Unit] Description=MCSManager Web [Service] WorkingDirectory=/opt/mcsmanager/web ExecStart=/usr/bin/node app.js ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" User=chocola [Install] WantedBy=multi-user.target /etc/systemd/system/mcsm-daemon.service[Unit] Description=MCSManager Daemon [Service] WorkingDirectory=/opt/mcsmanager/daemon ExecStart=/usr/bin/node app.js ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" User=chocola [Install] WantedBy=multi-user.target本来配置用的就是用户身份，我在想，为什么不直接就用Systemd以用户身份帮我挂着服务，这样既节省了性能，而且省去了Mcsmanager也可以减少潜在的攻击面。既然目前面板能这样运行，说明未来应用应该也可以。为应用设置Systemd配置文件在经历了QQ机器人封号，MC服务器没人玩，DDNS的工作实际上已经由路由器承担后，之前使用Mcsmanager挂着的服务就只剩下了这几个：两个Filebrowser文件管理，Jellyfin媒体服务器，以及偶尔需要启动的qBittorrent。除此之外，其他服务都是长期关闭的状态，这也为我做出转变提供了契机。并且使用Systemd管理服务还有一个优势：可以让应用隔离开敏感数据，即使应用本身存在漏洞沦陷了，也不会影响到核心的敏感数据，这点是Mcsmanager给不了的。那，接下来我们来进行配置吧！Filebrowser因为这个服务算是我这个家里云最核心的服务了，也就是对应的自建NAS服务，所以我把程序本体迁移到了/opt目录下，并且做好隔离。实际上有两个Filebrowser实例，一个是管理一般文件，一个是管理重要文件，是分开的。/etc/systemd/system/filebrowser.service这个配置文件对应的是管理一般文件的实例：[Unit] Description=Filebrowser01 [Service] WorkingDirectory=/opt/filebrowser ExecStart=/opt/filebrowser/filebrowser ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" User=chocola Group=chocola # 严格沙盒 ProtectSystem=strict ProtectHome=tmpfs NoNewPrivileges=true ReadWritePaths=/opt/filebrowser/ ReadWritePaths=/home/chocola/data/files/ # 显式禁止访问核心敏感路径 Inaccessibl…

主题开发日志03：在Manjaro上搭建Nginx+PHP环境
type: item
date: 2026-01-26T13:38:10+08:00
description: 在Manjaro Linux上部署Typecho开发环境因为后面主题的开发就需要实时修改php文件查看效果了，为了方便开发，我决定在自己的电脑上面设置一个基本的Nginx+PHP环境。对于数据库就使用sqlite好了，只是为了搭建一个本地的typecho作为测试平台。在配置期间踩了几个坑，记录一下。软件的安装非常简单，一条命令梭哈：pacman -S nginx php php-fpm php-sqlite php-gd配置软件因为manjaro和其他发行版不太一样，并且我需要这个web服务器以我的用户权限进行运行，方便我更新文件，所以我们需要做出一些更改。php.ini首先是php的配置文件，文件位于/etc/php/php.ini找到下面的部分进修改：上传大小限制：upload_max_filesize = 2M改为upload_max_filesize = 16M然后启用必要的模块，找到以下部分取消注释：extension=curl extension=gd extension=gettext extension=pdo_sqlitewww.conf然后是php的另一个配置文件，让php-fpm以用户身份运行，文件位于/etc/php/php-fpm.d/www.conf找到下面的部分进修改：user = chocola ; <--- 修改这里 group = chocola ; <--- 修改这里 listen.owner = chocola ; <--- 修改这里，确保 Nginx 能和 PHP 通讯 listen.group = chocola ; <--- 修改这里nginx.conf将Nginx的配置文件修改为如下所示： user chocola; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; # Load all installed modules include modules.d/*.conf; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; root /run/media/chocola/DATA/wwwroot; index index.php index.html index.htm; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ .*\.php(\/.*)*$ { # 你的网站根目录 (如果 server 块里已经写了 root，这行可以省略，但加上保险) root /run/media/chocola/DATA/wwwroot; fastcgi_pass unix:/run/ph…

阿里云 ESA 回源 IP 段分享，可用于源站保护
type: item
date: 2025-12-18T17:04:00+08:00
description: 分享阿里云 ESA 回源 IP 段因为阿里云的源站防护功能，在免费版用不了，而我需要在源站设置访问白名单，于是就需要找一份阿里云 ESA 回源 IP 段列表。Cloudflare和EdgeOne都是公开回源IP段的，同样是属于CDN的ESA居然不公开，有点离谱，不过看样子应该是想作为增值服务，付费才能开源站保护（）好巧不巧，这段时间基础版ESA都可以免费领取一个月，而基础版ESA是可以开启源站保护的，所以自然也就拿到了回源的IP段列表。虽然文档说这是收敛后的IP段列表，但是得到的回源IP估摸着大概有1700+个，而且我和群友交叉验证过，得到的IP段是一模一样的。应该是收敛之前的完整IP段。估计可能的原因是我没有添加任何要加速的子域名，直接先开源站保护，导致返回了全量的IP段——这是好事啊！连统计和汇总都省了。（后记补充：打脸了，后面进一步测试后发现，免费版和基础版回源IP段是分开的，不用白费力气了）现在我就分享出来，给需要的站长参考。IP段可以用来设置源服务器的访问白名单，避免源服务器被扫描。具体如何使用，懂得人自然会懂，如果不知道的话，可以看一下这篇文章：绕过黑洞！利用VPC内网互通低成本实现DDoS攻击下网站高可用中的代理服务器安全组设置（可选）这一小节。请注意，文中获取到的IP段很有可能是有时效性的，不保证未来可用！获取的时间为2025年12月18日，如果时间过去的太久，需要使用请先验证！测试后补充：免费版和基础版回源IP段是分开的，所以想白嫖源站保护是不太可能的，后续也不要白费力气了。这篇文章就当作教训挂在这里了。全部 IPv4 回源 IP 段39.96.151.128/25 111.13.222.128/25 111.206.190.0/25 49.7.41.128/25 111.7.71.0/25 117.49.24.96/27 183.131.47.64/26 117.49.26.96/27 27.128.150.128/25 222.138.192.0/25 111.63.174.128/25 123.149.174.0/25 39.173.24.0/26 117.49.24.128/26 117.49.173.192/26 117.49.26.128/26 101.69.215.128/26 163.181.67.128/25 175.4.42.0/25 183.215.56.0/25 116.163.14.128/25 157.255.137.128/25 117.49.181.0/25 183.60.170.128/25 120.241.64.0/25 8.147.217.48/29 8.147.217.32/28 114.250.55.64/26 106.38.245.128/26 221.179.212.0/26 8.147.217.0/27 163.181.122.128/25 36.156.79.0/25 183.136.179.64/26 120.222.205.128/25 60.188.139.0/26 163.181.15.128/25 120.241.14.64/26 112.90.140.64/26 120.241.13.128/26 163.181.89.128/25 61.241.9.128/25 124.95.162.128/25 222.141.35.128/25 42.96.222.128/25 117.49.152.64/26 106.38.189.128/25 117.49.153.0/25 39.156.171.128/25 111.7.83.128/25 219.144.87.0/25 117.49.3.128/26 8.152.80.0/25 114.232.93.0/25 150.139.146.128/25 123.126.111.128/25 140.249.255.128/25 39.173.42.128/25 59.36.91.0/26 120.222.200.128/25 111.19.142.0/25 113.201.176.0/25 122.193.247.0/25 183.36.45.64/26 139.129.78.0/25 183.240.195.128/25 117.49.179.0/25 36.99.21.0/25 27.221.6.128/25 42.248.141.128/25 124.160.142.128/26 112.17.15.224/27 115.238.4.128/25 8.147.211.128/25 101.67.60.128/25 58.251.89.64/26 120.201.61.128/25 112.13.103…

调用API实现Typecho博客VisitorLoggerPro插件IP信息更新
type: item
date: 2025-12-17T23:30:06+08:00
description: 利用B站IP查询API更新访客记录IP地理信息偶然的一次机会，在群里面聊天的时候，群友指出纯真数据库的数据并不准确，并且说有一个可以免费调用的IP地理信息库——B站的IP查询API。据说还是用的ipip.net的企业版，这下得狠狠白嫖了。前置任务：修复VisitorLoggerPro插件BUG如果使用过这个插件一段时间，你就应该发现了，在国家统计图表这项，非常的混乱，似乎是只要记录的字符不一致，就会被当作不同的国家处理，例如美国加利福尼亚洛杉矶和美国纽约就被当作不同的国家列在上面。经过深挖代码斗智斗勇，我发现这个问题我无法从根本解决，因为整个代码太奇怪了，而且用的本地IP数据库也都是乱七八糟的，根本没有做好国家的细分地区分类，一股脑返回，导致所有的信息被集中在一起写进了国家字段。于是，我放弃治疗，直接在后面的调用代码中，增加分类逻辑进行分类：这是原来的代码，单独处理和提取了国内省份： foreach ($countryCountsResult as $row) { $countryName = $row['country'] ?: '未知'; $count = $row['count']; if (!isset($countryData[$countryName])) { $countryData[$countryName] = 0; $totalCountries++; } $countryData[$countryName] += $count; if (strpos($countryName, '中国') !== false) { foreach ($provinces as $province) { if (strpos($countryName, $province) !== false) { if (!isset($provinceData[$province])) { $provinceData[$province] = 0; } $provinceData[$province] += $count; break; } } } }我决定在返回国家信息的时候，进行提取合并并返回： foreach ($countryCountsResult as $row) { $rawCountry = $row['country'] ?? ''; $count = (int)($row['count'] ?? 0); if ($rawCountry === '') { $stdCountry = '未知'; } elseif (strpos($rawCountry, '中国') !== false) { // 所有含“中国”的都归为“中国” $stdCountry = '中国'; // 同时尝试提取省份 foreach ($provinces as $province) { if (strpos($rawCountry, $province) !== false) { if (!isset($provinceData[$province])) { $provinceData[$province] = 0; } $provinceData[$province] += $count; break; // 匹配到第一个即停止 } } } else { // 非中国：尝试匹配标准国家名（用于归一化，如“美国加州”→“美国”） $stdCountry = $rawCountry; // 默认保留原值 foreach ($countries as $country) { if (strpos($rawCountry, $country) !== false) { $stdCountry = $country; break; // 匹配到即停止（因列表已按长优先排序） } } } // 累计国家统计 if (!isset($countryData[$stdCountry])) { $countryData[$stdCountry] = 0; $totalCountries++; } $countryData[$stdCountry] += $count; }当然了，需要补上完整的国家地区列表： $countries = [ // 长名称国家（必须放前面） '波斯尼亚和黑塞哥维那', '赤道几内亚', '圣文森特和格林纳丁斯', '特立尼达和多巴哥', '圣多美和普林西比', '阿拉伯联合酋长国', '沙特阿拉伯', '巴布亚新几内亚', '所罗门群岛', '马绍尔群岛', '密克罗尼西亚联邦', '帕劳共和国', '瓦努阿图共和国', '基里巴斯共和国', '瑙鲁共和国', '图瓦卢', '美属萨摩亚', '英属维尔京群岛', '美属维尔京群…

解决PyTorch CUDA报错：no kernel image is available for execution on the device
type: item
date: 2025-12-06T20:22:00+08:00
description: 修复GTX 10系显卡no kernel image报错今天想试试看P104-100玩AI画图怎么样，结果遇到了PyTorch相关的报错，解决后感觉也挺有代表性的，写篇文章简单记录一下。问题复现尝试使用P104-100跑ComfyUI玩，结果收到了报错：torch.AcceleratorError: CUDA error: no kernel image is available for execution on the device Search for `cudaErrorNoKernelImageForDevice' in https://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__TYPES.html for more information. CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1 Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.我就觉得纳闷，为什么同样的驱动版本，都是580版本的驱动，V100不报错，但是P104-100报错了。然后我运行了检查GPU compute capability的代码，得到结果如下：print(torch.cuda.get_device_properties(0)) /home/rin/.local/lib/python3.12/site-packages/torch/cuda/__init__.py:283: UserWarning: Found GPU0 NVIDIA P104-100 which is of cuda capability 6.1. Minimum and Maximum cuda capability supported by this version of PyTorch is (7.0) - (12.0) warnings.warn( /home/rin/.local/lib/python3.12/site-packages/torch/cuda/__init__.py:304: UserWarning: Please install PyTorch with a following CUDA configurations: 12.6 following instructions at https://pytorch.org/get-started/locally/ warnings.warn(matched_cuda_warn.format(matched_arches)) /home/rin/.local/lib/python3.12/site-packages/torch/cuda/__init__.py:283: UserWarning: Found GPU1 NVIDIA P104-100 which is of cuda capability 6.1. Minimum and Maximum cuda capability supported by this version of PyTorch is (7.0) - (12.0) warnings.warn( /home/rin/.local/lib/python3.12/site-packages/torch/cuda/__init__.py:326: UserWarning: NVIDIA P104-100 with CUDA capability sm_61 is not compatible with the current PyTorch installation. The current PyTorch install supports CUDA capabilities sm_70 sm_75 sm_80 sm_86 sm_90 sm_100 sm_120. If you want to use the NVIDIA P104-100 GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/ warnings.warn( _CudaDeviceProperties(name='NVIDIA P104-100', m…

V100 GPU 初体验：AlmaLinux 8.10 快速部署 ComfyUI
type: item
date: 2025-12-05T23:21:00+08:00
description: 在 AlmaLinux 8.10 上部署 ComfyUI最近买了一张 V100，为了爽玩 AI 绘图，我单独组装了一台 X99 平台主机来运行 ComfyUI。操作系统方面，我选择了 AlmaLinux 8.10，看中的是其稳定性以及对多版本 Python 的良好支持。硬件介绍显卡本体Tesla V100 显卡展示（和RTX2080Ti同框）：安装到转接板上：转接板是200买的，虽然比最便宜的99元转接板贵了一倍，但用的是原装座子，原装座子的转接板就算是10X10CM的小板子都170+了。我加多30，买个带温控的，尺寸大一点的板，还自带螺栓孔位固定，完美安装，他不香吗？装上散热器后的样子：我为了尽可能降低温度，延长使用寿命，买了最大的散热器，到手发现确实巨大无比，比想象中的要大得多。但是其实现在看，买小一号的9CM高度的可能更合适，因为更好安装8CM风扇，不会浪费散热面积。我最后还是选择了8CM的风扇来散热，放弃了之前使用12CM风扇的想法——因为没办法彻底吹透散热器，温度还高。装上风扇Be Like:因为两边会漏风，导致无法彻底吹透散热器，所以搞了一张纸包了一下，迫使气流贯穿散热器。配套硬件平台开头我先说一下我踩到的坑，首先平台选择就先栽了一头：一开始我想用我闲置的H61平台来带这个玩意，而且也确认看过那个主板有Above 4G Decoding选项，也打开了，但是就是死活没办法驱动这个显卡，系统识别到了这个设备，但是NVIDIA驱动无法初始化设备，导致无法使用。这个问题折磨了我很久，检查日志具体表现是：[root@Neko-P104 ~]# dmesg | tail -100 | grep -i -E 'nvidia|nvrm|gpu|bar' [ 3.121900] NVRM: This PCI I/O region assigned to your NVIDIA device is invalid: NVRM: BAR4 is 0M @ 0x0 (PCI:0000:01:00.0) [ 3.121902] NVRM: This PCI I/O region assigned to your NVIDIA device is invalid: NVRM: BAR5 is 0M @ 0x0 (PCI:0000:01:00.0) [ 3.322080] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 580.105.08 Tue Apr 8 12:41:17 UTC 2025 [ 3.369648] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 580.105.08 Tue Apr 8 12:09:34 UTC 2025 [ 3.376189] [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver [ 3.376192] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:01:00.0 on minor 0 [ 112.149308] caller _nv041720rm+0x3a/0xb0 [nvidia] mapping multiple BARs [ 112.163383] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x24:0x72:1568) [ 112.163415] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0 [ 112.285687] nvidia-uvm: Loaded the UVM driver, major device number 237. [ 379.801748] caller _nv041720rm+0x3a/0xb0 [nvidia] mapping multiple BARs [ 379.815873] NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x24:0x72:1568) [ 379.815912] NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0这表明：BAR 分配失败：GPU 的某些地址空间没有正确映射到系统内存中。RmInitAdapter 失败：驱动尝试初始化 GPU 时遇到了错误，无法完成初始化。所以这是平台限制，必须换平台了。后…

个人博客低成本CC防护：抵御85%+常见CC攻击
type: item
date: 2025-11-02T16:47:03+08:00
description: 低成本CC防护：我的实战配置与效果喜报：被大规模CC了！平常的一天，突然受到了来自衣食父母华为云的服务器告警：虚拟机网络连接数突破15400个，CPU占用超过 85% 。就知道肯定是被CC了。果然网站被打是催更技术类博主最好的方式（雾不过我之前是设置过缓存的，有点好奇怎么绕过缓存，事后我抓取了对应时间的Nginx日志access.log：43.152.29.37 - - [30/Oct/2025:23:27:16 +0800] "GET /3bb6bfea9/90a2c9c9fc?limit=ef616a8b1b145df&token=176fe0f01f&utm_source=a5d4f247077b HTTP/1.0" 404 29335 "http://www.nekopara.uk/3bb6bfea9/90a2c9c9fc?limit=ef616a8b1b145df&token=176fe0f01f&utm_source=a5d4f247077b" "Mozilla/5.0 (Windows NT 11.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0" "91.209.77.93, 43.152.29.37" 43.152.24.20 - - [30/Oct/2025:23:27:16 +0800] "GET /profile/config/delete?search=9844b7e151&version=504397e6490c&utm_campaign=bd5783ef290&page=4b9e8cc670d HTTP/1.0" 404 29335 "http://www.nekopara.uk/profile/config/delete?search=9844b7e151&version=504397e6490c&utm_campaign=bd5783ef290&page=4b9e8cc670d" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36" "138.2.109.39, 43.152.24.20" 43.152.143.43 - - [30/Oct/2025:23:27:16 +0800] "GET /health/admin?utm_medium=eb37025 HTTP/1.0" 404 29335 "http://www.nekopara.uk/health/admin?utm_medium=eb37025" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36" "163.61.245.58, 43.152.143.43" 43.174.55.12 - - [30/Oct/2025:23:27:16 +0800] "GET /5de3c/0727afb/info?type=f06d22885b8 HTTP/1.0" 404 29335 "http://www.nekopara.uk/5de3c/0727afb/info?type=f06d22885b8" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.2 Safari/605.1.15" "103.184.54.67, 43.174.55.12" 43.152.14.36 - - [30/Oct/2025:23:27:16 +0800] "GET /edit/a97b/cba81414/content.htm?offset=09cd68b44dd60&key=030f41284 HTTP/1.0" 404 29335 "http://www.nekopara.uk/edit/a97b/cba81414/content.htm?offset=09cd68b44dd60&key=030f41284" "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_7_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36" "49.145.113.40, 43.152.14.36" 43.152.…

Manjaro Linux 安装 Abaqus 2022 踩坑记
type: item
date: 2025-10-22T10:53:00+08:00
description: 在Manjaro Linux上安装Abaqus 2022本来没什么素材更新文章的，这下因为阴差阳错各种巧合，来素材了（ 刚立flag没几天说是其实在目前阶段我并不需要用这个软件，究其原因，是我朋友的电脑内存不够，他的研究生导师的课题组要用Abaqus这个软件进行有限元分析模拟，不出所料炸内存了。他想起来我有这么一个128G内存的“电脑”（服务器），于是想让我帮忙算一下。好巧不巧，这逼软件有Linux版，那就试试吧！然后试试就逝世，这逼养的古董屎山软件的安装方式，以及各种奇葩的要求和报错属实难绷，挂出来让大家品屎罢！踩坑报错把我搞傻了，国内各种资料网站参考了一遍没能解决，压力ChatGPT解决了，GPT yyds! 记录一下吧，给后面有需要的人指路。理论上这篇教程同样适用于在Arch Linux上安装，应该也可以作为在其他发行版进行安装时的参考。软件获取自己可以找一下，相对而言还算是比较好找的。如果找不到，我这里有：Abaqus_2022_Linux.7z.001 Abaqus_2022_Linux.7z.002 Abaqus_2022_Linux.7z.003 Abaqus_2022_Linux.7z.004 请下载全部压缩分卷后解压，解压密码是：www.nekopara.uk如果你下载我打包的版本，那安装前准备的修改Linux.sh脚本部分可以跳过，已经帮改好了。安装前准备首先，进入安装目录，赋予全部文件可执行权限已经修改权限，不然你会得到报错：Error: This media has been unzipped or copied in such a way that the permissions of some files have been lost. Please unzip or copy the media again.chmod -R 777 DS.SIMULIA.Suite.2022.Linux64/*接着，要修改安装目录里面的每一个Linux.sh文件，强行指定检测的发行版为CentOS或者其他位于支持列表的发行版。这些文件存在于：DS.SIMULIA.Suite.2022.Linux64/1/inst/common/init/Linux.sh （这个好像是主安装程序的，但是实际上主安装程序没屌用，就是套娃然后依此启动3 4 5文件夹里面的安装程序，套娃安装，也是唐完了。）DS.SIMULIA.Suite.2022.Linux64/3/NETVIBES_Exalead_CloudView/Linux64/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/3/Search_Doc/Linux64/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/3/SIMULIA_FLEXnet_LicenseServer/Linux64/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/4/SIMULIA_EstablishedProducts/Linux64/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/5/SIMULIA_Documentation/AllOS/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/5/SIMULIA_EstablishedProducts_CAA_API/Linux64/1/inst/common/init/Linux.shDS.SIMULIA.Suite.2022.Linux64/5/SIMULIA_Isight/Linux64/1/inst/common/init/Linux.sh找到这一行：DSY_OS_Release=`lsb_release --short --id |sed 's/ //g'`修改为：DSY_OS_Release="CentOS"有一说一，这安装包的目录结构太抽象了，真的是唐完了。修改完成后，就可以开始安装了。安装软件我实测下来，是可以不使用root权限执行安装的，只需要安装在一个普通权限可以写入的文件夹里面即可。权限最小化，不轻易给出root权限！而且，直接不经包管理器修改/usr目录是不太好的。如你享受Windows上面那种套娃安装的操蛋感，那请执行:DS.SIMULIA.Suite.2022.Linux64/1/StartGUI.sh。他会一步一步引导你安装，记得勾选许可证服务器安装，用于验证：然后他就先给你吃一口屎：招笑完了，安装还…

绕过黑洞！利用VPC内网互通低成本实现DDoS攻击下网站高可用
type: item
date: 2025-09-29T11:34:00+08:00
description: VPC内网互通：让被黑洞的服务器仍能访问事情起因很简单，前段时间我的华为云服务器又被闲的蛋疼的人刷了DDoS礼物，也是成功地触发了EIP（弹性公网IP）黑洞封堵。喜报如下：尊敬的(Rin):感谢您使用华为云产品，非常抱歉打扰您。在北京时间2025/09/23 10:26，华为云监测到您的弹性公网IP(EIP)实例 发生EIP封堵事件。 详情：节点：亚太-新加坡实例名称：119.8.185.128实例ID：b002926d-60de-4951-a9e9-b337e3a550d8告警描述：{"reason_zh": 尊敬的Rin：华为云DDoS防护服务在2025-09-23 10:26:56检测到您的EIP 119.8.185.128 异常流量已超过DDoS防护峰值触发封堵，封堵时带宽为 79 Gbps, 您服务器的访问将受到限制，24小时后系统将自动为您解封。您可登陆官网购买DDoS高防服务提升防护能力，保障服务器稳定运行。, "reason_en": Dear Rin: HUAWEI CLOUD Anti-DDoS Service detects that your EIP 119.8.185.128 abnormal traffic has exceeded the DDoS protection peak at 2025-09-23 10:26:56 and triggers blocking. Bandwidth when blocking is 79 Gbps, Access to your server will be restricted, and the system will automatically unblock it for you after 24 hours. You can log in to the official website of HUAWEI CLOUD to purchase Advanced Anti-DDoS service to enhance protection capabilities and ensure stable server operation.}原因分析：尊敬的Rin：华为云DDoS防护服务在2025-09-23 10:26:56检测到您的EIP 119.8.185.128 异常流量已超过DDoS防护峰值触发封堵，封堵时带宽为 79 Gbps您服务器的访问将受到限制，24小时后系统将自动为您解封。您可登陆官网购买DDoS高防服务提升防护能力，保障服务器稳定运行。如有疑问，您可以登录华为云官网提交工单咨询，会有相应工程师为您核实查看。IP我就懒得打码了，反正就是这个网站域名平时解析的IP，有什么好打码的，ping一下就能看到了。我在之前的文章，就有说过一套抗DDoS的方案，并且已经付诸实践了（详见文章：《当网站遭遇DDoS：如何优雅地应对云服务器被封堵》）。很显然，并没有太大影响，在网站主服务器被打黑洞的三分钟后，脚本就自动切换服务器到备用服务器并且套上了Cloudflare的代理，无需我干预，唯一的不足就是在被DDoS期间网站访问变慢了。但是，当时我就有说过，那套方案是有缺陷的，也就是因为网站数据同步是单向的，在被攻击期间交互产生的数据，后面会被覆盖掉。好巧不巧，华为云又送钱了，我寻思着我之前开的华为云服务器已经续费十年多了，不如开个新的云服务器，搞VPC内网互通，彻底解决上述的痛点问题。这里说个题外话，我发现新开的华为云 Flexus L 实例相比于之前已经大幅缩水，网络回国优化没了，而且CPU性能只有原来的三分之一了，已经变得跟阿里云的轻量服务器一个水平了，而且价格还更高。除非你和我一样是白嫖的，否则真金白银买我是不推荐，因为差不多一样的东西，阿里云那边要大概便宜个10%-20%，买华为云真不划算了。现在华为云的 Flexus L 实例算是把华为手机的高价低配学过来了，难绷。但是老实例性能和网络那还是相当不错的。资源准备为了实现这个方案，你需要准备两台云服务器，并且两台服务器必须在同一个地域，以便进行VPC内网互通。虽然同一个地域就足够，但将两台服务器放在同一个可用区会获得更好的内网延迟（通常<1ms），而跨可用区的内网延迟可能会稍高（但通常也在1-5ms范围内）。这就是最重要的前提要求，日常访问的可以是两台服务器的任意一台，只需要它的性能可以满足业务要求。对于另一台服务器，那是作为网站流量跳板服务器，最低配即可，方便节约成本，因为只需要在上面运行一个代理流量程序，在主实例EIP被封堵时代理接管流量入口。因为本方案抗DDoS采用的是Cloudflare的CDN，所以跳板实例的网络可以差一点，只需要保证到Cloudflare的回源服务器线路通畅即可，国内访问…