首页
留言
导航
统计
Search
1
追番推荐!免费看动漫的网站 - 支持在线观看和磁力下载
777 阅读
2
PVE自动启动 虚拟机 | 容器 顺序设置及参数说明
472 阅读
3
一条命令,永久激活!Office 2024!
444 阅读
4
优选 Cloudflare 官方 / 中转 IP
324 阅读
5
[Windows] MicroSoft Office LTSC Professional Plus 2024 官方安装部署工具
323 阅读
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
登录
Search
标签搜索
Java
小程序
Redis
SpringBoot
docker
Typecho
Cloudflare
虚拟机
WordPress
uni-app
CentOS
docker部署
Vue
Java类库
群晖
Linux命令
防火墙配置
Mysql
脚本
计算机网络
流年微醺
累计撰写
255
篇文章
累计收到
8
条评论
首页
栏目
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
页面
留言
导航
统计
搜索到
49
篇与
的结果
2025-07-05
用虚拟IP扩容服务器端口池
最近遇到一个棘手的问题:服务器的 WebSocket 服务在高并发场景下,客户端连接数达到一万多时,服务器的端口资源被耗尽了。导致后面的任何请求都没响应。通过 netstat 查看连接情况,发现所有连接的本地端口都是从 32768 开始的,即使我已经将系统的端口范围设置为 1024-65535[root@server ~]# cat /proc/sys/net/ipv4/ip_local_port_range 1024 65535但实际分配的端口还是从32768开始,导致高位端口很快被耗尽,新连接无法建立。问题分析经过一番调研,发现这个问题在 Linux 系统中很常见。虽然设置了 ip_local_port_range 为 1024-65535,但实际上如下:glibc的默认行为:很多Linux发行版的glibc硬编码了临时端口分配的起始值为32768内核版本限制:老版本内核(如3.10)没有 ip_unprivileged_port_start 参数历史遗留问题:这是Linux系统的"正常"行为,不是配置错误我的服务器环境: 内核:3.10.0-1127.19.1.el7.x86_64glibc:2.17系统:CentOS 7.6解决方案探索方案一:升级系统(不推荐)升级glibc和内核到新版本可以支持更灵活的端口分配,但在生产环境中风险极高,容易导致系统崩溃。方案二:虚拟IP扩容(推荐)通过在同一台服务器上添加多个虚拟IP,每个IP都拥有独立的端口池,从而成倍扩容端口资源。虚拟IP方案实施第一步:查看网络环境首先确认服务器的网卡和IP配置:[root@server ~]# ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:3e:1f:ee:09 brd ff:ff:ff:ff:ff:ff inet 1.2.3.17/20 brd 11.22.33.255 scope global dynamic eth0可以看到主IP是 1.2.3.17/20 ,子网掩码是 /20。第二步:添加虚拟IP根据主IP的网段,添加几个虚拟IP:ip addr add 1.2.3.100/20 dev eth0 ip addr add 1.2.3.101/20 dev eth0 ip addr add 1.2.3.102/20 dev eth0这里的ip后三位可以随便写。ip个数最好是100个以内,多了会影响性能。验证添加成功:ip addr show eth0显示出刚才添加的ip就是没问题的第三步:配置Nginx负载均衡修改Nginx配置,将流量分发到不同的虚拟IP:upstream websocket_backend { server 1.2.3.100:38088; server 1.2.3.101:38088; server 1.2.3.102:38088; } server { listen 80; server_name xx.com; location /请求上下文 { proxy_pass http://websocket_backend/请求上下文; proxy_redirect default; proxy_pass_header Server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; } }第四步:重启服务重启 WebSocket服务端 和 Nginx ,让配置生效:nginx -t nginx -s reload效果验证查看连接分布使用 ss 命令查看连接是否被正确分发到不同虚拟IP:ss -tnp | grep 38088输出显示连接确实被分发到了不同IP:CLOSE-WAIT 1 0 1.2.3.100:38088 169.24.13.2:36294 CLOSE-WAIT 1 0 1.2.3.101:38088 169.24.13.2:57430 CLOSE-WAIT 1 0 1.2.3.102:38088 169.24.13.2:37558这里的169.24.13.2不用管,这是我的nginx用的docker镜像的原因端口资源扩容效果之前:所有连接都占用 1.2.3.17 的端口池(32768~65535)现在:连接分散到3个虚拟IP,每个IP都有独立的端口池效果:端口资源扩容3倍,极大缓解端口耗尽问题注意事项1. 子网掩码的确定添加虚拟IP时,子网掩码必须和主IP一致。查看方法很简单:ip addr show eth0看输出中的 inet 1.2.3.17/20,直接使用 /20 即可。2. 虚拟IP的持久化临时添加的虚拟IP重启后会失效,需要写入启动脚本:# 编辑 /etc/rc.local ip addr add 1.2.3.100/20 dev eth0 ip addr add 1.2.3.101/20 dev eth0 ip addr add 1.2.3.102/20 dev eth0 # 赋予执行权限 chmod +x /etc/rc.d/rc.local3. 网络架构要求Nginx 和 WebSocket服务端 必须在同一台服务器虚拟IP必须在同一网段内,不能和其他机器冲突如果是云服务器,可能需要先在控制台申请辅助私网IP总结通过 虚拟IP + Nginx 负载均衡的方案,成功将端口资源扩容了 3倍,有效解决了高并发 WebSocket 场景下的端口耗尽问题。这个方案的优势:实施简单:只需添加虚拟IP和配置Nginx风险较低:不需要升级系统内核效果显著:端口资源成倍扩容扩展性好:可以根据需要继续添加虚拟IP对于高并发WebSocket、短连接等场景,这是一个非常实用的解决方案。
2025年07月05日
3 阅读
0 评论
0 点赞
2025-05-16
远程桌面控制软件-rustdesk-附docker部署脚本
客户端程序 1.4.0 版本官网地址:https://github.com/rustdesk/rustdesk/releases/tag/1.4.0{cloud title="rustdesk-1.4.0" type="lz" url="https://wwtt.lanzouy.com/b02djvq20f" password="9dwl"/}自建中继服务器Docker脚本试过很多远程软件,最后还是觉得 rustdesk 最适合,如果家里有nas,那就更完美了,可以自建中继服务器,不过官方的不带账号功能,需要配合rustdesk-api才能实现账号管理,有大神整合了API功能,以下yaml文件直接实现,IPV6也是可以的,要双方都有IPV6,我域名绑定的IP6地址,没有卡顿,画质清晰。networks: rustdesk-net: external: false services: rustdesk: ports: - 21114:21114 - 21115:21115 - 21116:21116 - 21116:21116/udp - 21117:21117 - 21118:21118 - 21119:21119 image: lejianwen/rustdesk-server-s6:latest environment: - RELAY=<server[:21117]> - ENCRYPTED_ONLY=1 - MUST_LOGIN=Y #是否必须登录 - TZ=Asia/Shanghai - RUSTDESK_API_RUSTDESK_ID_SERVER=<server[:21116]> #21116 - RUSTDESK_API_RUSTDESK_RELAY_SERVER=<server[:21117]> #21117 - RUSTDESK_API_RUSTDESK_API_SERVER=http://<server[:21114]> #21114 - RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub - RUSTDESK_API_JWT_KEY=xxxxxx # jwt key volumes: - /data/rustdesk/server:/data #将server的key挂载出来 - /data/rustdesk/api:/app/data #将数据库挂载 networks: - rustdesk-net restart: unless-stoppedkey 在 Docker 运行后在 日志 中查看将自己的IP或者域名替换以上<>,如: - RELAY=<server[:21117]> 替换成 - RELAY=8.8.8.8:21117 或者 - RELAY=http://baidu.com:21117客户端设置客户端只需要配置网络,有4个设置项,其中3个必填,如果需要登录就需要设置API服务器ID服务器:域名或者IP:21116中继服务器:域名或者IP:21117API服务器:http://域名orIP:21114key,从日志中查看实测公网IPV6绑定域名,只要双方都有IPV6也能流畅访问。
2025年05月16日
18 阅读
0 评论
0 点赞
2025-03-06
PVE重装后恢复虚拟机
在 PVE(Proxmox Virtual Environment) 重装后,恢复虚拟机的关键在于提前备份好虚拟机的配置文件和磁盘映像。备份虚拟机配置文件首先,备份虚拟机配置文件,这些文件通常位于 /etc/pve/qemu-server/ 目录下。每个虚拟机都有一个独立的配置文件,文件名格式为 .conf 。手动备份cp /etc/pve/qemu-server/<VMID>.conf /path/to/backup/自动备份脚本#!/bin/bash BACKUP_DIR=/path/to/backup/ mkdir -p $BACKUP_DIR cp /etc/pve/qemu-server/*.conf $BACKUP_DIR恢复虚拟机配置文件将备份的配置文件复制回PVE服务器的对应目录。手动恢复cp /path/to/backup/<VMID>.conf /etc/pve/qemu-server/自动恢复脚本#!/bin/bash BACKUP_DIR=/path/to/backup/ cp $BACKUP_DIR/*.conf /etc/pve/qemu-server/备份和恢复虚拟机磁盘映像磁盘映像通常存储在PVE的存储池中,位于 /var/lib/vz/images/ 目录下。手动备份磁盘映像cp /var/lib/vz/images/<VMID>/*.qcow2 /path/to/backup/自动备份脚本#!/bin/bash BACKUP_DIR=/path/to/backup/ mkdir -p $BACKUP_DIR cp /var/lib/vz/images/*/*.qcow2 $BACKUP_DIR手动恢复磁盘映像cp /path/to/backup/*.qcow2 /var/lib/vz/images/<VMID>/自动恢复脚本#!/bin/bash BACKUP_DIR=/path/to/backup/ cp $BACKUP_DIR/*.qcow2 /var/lib/vz/images/<VMID>/使用CLI工具进行恢复使用 qmrestore 命令从备份中恢复虚拟机。恢复虚拟机磁盘映像qmrestore /path/to/backup/<VMID>.qcow2 <VMID>检查并启动虚拟机qm list # 查看所有虚拟机状态 qm start <VMID> # 启动恢复的虚拟机通过以上步骤,可以确保在 PVE 重装后,虚拟机能够正常恢复和运行。
2025年03月06日
69 阅读
0 评论
0 点赞
2025-03-06
推荐31个docker应用,每一个都很实用
推荐的这些 docker 应用都是我自己常用的,同时也有自己的一些偏好在里面,每个人的需求不同,对应用的要求也不同。还有很多优秀的 docker 应用我没有用过,所有没有推荐的并不代表不优秀。所有的 docker 应用布署都比较简单,只有少量的会需要在数据库和权限的配置上研究一下。排名不分先后Memos 笔记记事功能强大的笔记应用,支持多用户,笔记支持私有,工作区和公开https://github.com/usememos/memosWbo-Boards 共享白板非常好的白板应用,支持多人共享,一人在白板上画图写字,其他在线用户可以实时看到https://github.com/lovasoa/whitebophirVaultWard 密码管理BitWard的轻量版,密码管理,可以在电脑和手机上自动填写用户和密码,实现自动登陆注意:此应用不支持IP:Port访问,安全原因,只支持https连接https://github.com/dani-garcia/vaultwardenMoments 极简朋友圈微信朋友圈风格,支持多用户,可以发贴和记事,比起各博客应用更简单易用https://github.com/kingwrcy/momentsGhost 博客本人最喜欢的博客应用,轻松发博,只是对中文版支持不是太好https://github.com/TryGhost/GhostTypecho 博客简单的博客,发博时稍烦所,不如Ghost强大,简单易用不如极简朋友圈,看个人的需求https://github.com/typecho/typechoEasyImage 图床本人自用的主力图床https://hub.docker.com/r/ddsderek/easyimageLsky-pro 图床图床不多说了,感觉功能易用性和EasyImage差不多https://hub.docker.com/r/dko0/lsky-pro/Lychee 相册漂亮且功能强大的相册,支持多用户和相册分享注意:如果不能上传图片,检查一下目录的权限https://github.com/LycheeOrg/LycheeFileBrowser 网盘简单易用,适合个人自用,当然也支持多用户和文件分享https://github.com/filebrowser/filebrowserCloudreve 网盘强大的网盘,虽不如Nextcloud强大,但是速度更快更好用,支持多用户和文件分享https://github.com/cloudreve/CloudreveFileCodeBox 文件文字加密分享简单易用,支持访客分享,让小白分享文件更简单更安全用户通过简单的方式分享文本和文件,接收者只需要一个提取码就可以取得文件,就像从快递柜取出快递一样简单https://github.com/vastsa/FileCodeBoxJellyfin 视频流媒体服务器不用多说了,和Emby一样的功能,但这个是开源免费的https://github.com/jellyfin/jellyfinAllinOne IPtv可以在线看央视和其他地方卫视。https://www.nodeseek.com/post-176265-1Navidrome 音乐服务器音乐收藏和流媒体服务器,里面没有音乐,要自己上传音乐文件https://github.com/navidrome/navidromeMeTube 视频网站下载器可以从YouTube下载视频,或直接下载音频,支持视频列表下载。同时还支持从其他上百个视频网站下载https://github.com/alexta69/metubeqBittorrent 下载工具大家都应该用过吧https://github.com/qbittorrent/qBittorrentDosGame DOS老游戏Dos游戏中文版,可以用浏览器在线玩dos游戏,包含40几个经典游戏https://hub.docker.com/r/oldiy/dosgame-web-docker/LinkAce 书签管理网址网页收藏管理,支持多用户,书签支持私有,内部和公开https://github.com/Kovah/LinkAceOneNav 书签管理强大且简洁高效的浏览器书签管理器,个人单用户适用https://github.com/helloxz/onenavSlash 短域名跳转如果自己拥有短域名,可以设置短域名跳转服务注意:开源版有些限制,码佬可以自己改一下https://github.com/yourselfhosted/slashActualBudet 记账应用功能不错,但本人只用过一些简单功能,好像暂时没有中文版本https://github.com/actualbudget/actual-serverTimeTagger 时间记录时间记录打卡,很适合小朋友练琴和学习的时间记录,支持标签https://github.com/almarklein/timetaggerStirling-PDF PDF编辑转换PDF编辑转换工具,功能超级强大,再也不用花钱买PDF软件了https://github.com/Stirling-Tools/Stirling-PDFit-tools IT常用工具各种IT常用工具。https://github.com/CorentinTh/it-toolsSpeedTest 网速测试网速测试应用,简单易用,也可以用作docker测试应用https://github.com/librespeed/speedtestUptime-Kuma 监测工具实时监测工具,可以对IP,网站,DNS等服务进行实时监测,并可发送警报信息https://github.com/louislam/uptime-kumaSmokeping 网络延迟监测自定义IP点,监测网络延迟,并可以显示延迟图https://github.com/linuxserver/docker-smokepingServerStatus 探针本人的主力探针,简单易用,支持一键脚本布署https://github.com/cppla/ServerStatusMyNodeQuery 探针本人的备用探针,简单易用,支持一键脚本布署https://hub.docker.com/r/jaydenlee2019/mynodequery/Adminer 数据库管理工具强大易用的数据库管理工具,支持MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, MongoDB等各种数据库。本人原来一直用phpmyadmin管理MySQL数据库,现在已改用Adminer了。https://github.com/vrana/adminer
2025年03月06日
261 阅读
0 评论
0 点赞
2024-12-21
Docker Registry镜像及自建方法
自建流程首先需要一台装有 Docker 的境外服务器,执行此命令docker run -d --name registry --restart always \ -p 5000:5000 \ -v /data/registry:/var/lib/registry \ -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \ registry:2然后用Nginx反代5000端口,我的配置文件如下:#PROXY-START/ location ^~ / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_http_version 1.1; proxy_read_timeout 900; } #PROXY-END/使用方法1、使用加速拉取镜像命令# 原拉取镜像命令 docker pull library/alpine:latest # 改为加速拉取镜像命令 docker pull docker.domain.cn/library/alpine:latest2、配置镜像加速器创建或修改 /etc/docker/daemon.json 配置文件sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://docker.domain.cn"] } EOF # 重载systemd管理守护进程配置文件 sudo systemctl daemon-reload # 重启 Docker 服务 sudo systemctl restart docker最后放一波目前可用的docker镜像仓库"https://docker.registry.cyou", "https://docker-cf.registry.cyou", "https://dockercf.jsdelivr.fyi", "https://docker.jsdelivr.fyi", "https://dockertest.jsdelivr.fyi", "https://mirror.aliyuncs.com", "https://dockerproxy.com", "https://dockerpull.org", "https://docker.1panel.live", "https://dockerhub.icu", "https://docker.1panel.dev", "https://docker.1ms.run", "https://docker.1panelproxy.com", "https://proxy.1panel.live"
2024年12月21日
12 阅读
0 评论
0 点赞
2024-11-05
将云服务器IP绑定到本地服务器或OpenWrt,彻底告别家宽没有公网IP的痛!
通过VPN将云服务器IP绑定到本地服务器或OpenWrt之前看到有某某某云服务器商有售卖家庭宽带IP购买的服务,宣称是可以给家庭宽带增加一条静态IP,出于好奇,我购买了一个月进行尝试。在客服使用 SSH 连接将 IP 链接到我本地的Linux服务器后,我通过查询系统进程和网络接口的方式发现,其实所谓增加静态 IP 不过是使用 WireGuard 将公网IP绑定到设备上,于是我产生了一个大胆奇妙的想法,能不能将自己手边吃灰的云服务器IP绑定到本地,甚至绑定到OpenWrt上,经过一番摸索和与GPT的深入交流,成功将云服务器IP绑定到了本地服务器,这种绑定和frp有所不同,所有访问到云服务器IP的请求,都将转发到本地服务器,甚至包括Ping请求。正如上图所示,我使用的是腾讯云北京的服务器,正常在北京节点对其ip进行ping命令,得到的延迟应该在5ms以内,但是现在ping的延迟增加了从腾讯云北京到我家里的时间。并且现在通过这台服务器的IP可以直接访问到我家里的设备。下面是详细的部署流程。公网服务器部署WireGuard安装WireGuardsudo apt update sudo apt install wireguard生成秘钥对# 生成公网服务器的密钥对 wg genkey | tee server_privatekey | wg pubkey > server_publickey # 生成无公网服务器的密钥对 wg genkey | tee client_privatekey | wg pubkey > client_publickey密钥对文件保存在当前命令行路径下的 server_privatekey 和 server_publickey 文件,以及 client_privatekey 和 client_publickey,其中 server_privatekey 和 server_publickey 为公网服务器的私钥与公钥,client_privatekey 和 client_publickey 为无公网服务器的私钥与公钥,这两对秘钥需要在妥善保存后删除。下文中将以以下代称称呼代称秘钥文件名称<公网服务器的私钥>server_privatekey<公网服务器的公钥>server_publickey<无公网服务器的私钥>client_privatekey<无公网服务器的公钥>client_publickey配置WireGuard创建并编辑配置文件 /etc/wireguard/wg0.confsudo vi /etc/wireguard/wg0.conf添加以下内容[Interface] Address = 10.1.0.1/24 PrivateKey = <公网服务器的私钥> ListenPort = 51820 [Peer] PublicKey = <无公网服务器的公钥> AllowedIPs = 10.1.0.2/32将 <公网服务器的私钥> 替换为你生成的 privatekey,将 <无公网服务器的公钥> 替换为无公网服务器生成的 publickey。启动WireGuardsudo wg-quick up wg0无公网服务器部署 WireGuard这里先以普通Ubuntu服务器为例,如果想在OpenWrt上部署,本节主要查看配置WireGuard小节即可。配置WireGuard创建并编辑配置文件 /etc/wireguard/wg0.confsudo vi /etc/wireguard/wg0.conf添加以下内容[Interface] Address = 10.1.0.2/24 PrivateKey = <无公网服务器的私钥> [Peer] PublicKey = <公网服务器的公钥> Endpoint = <公网服务器的IP>:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25或者填写[Interface] Address = 10.1.0.2/24 PrivateKey = <无公网服务器的私钥> [Peer] PublicKey = <公网服务器的公钥> Endpoint = <公网服务器的IP>:51820 AllowedIPs = 10.1.0.1/32 PersistentKeepalive = 25启动 WireGuardsudo wg-quick up wg0配置端口转发本节内所有操作均在公网服务器上执行,并建议彻底关闭云服务器上的网络防火墙。配置IP转发在公网服务器上启用 IP 转发sudo sysctl -w net.ipv4.ip_forward=1如果需要永久生效,需编辑 /etc/sysctl.conf 并取消 net.ipv4.ip_forward=1 的注释或添加 net.ipv4.ip_forward=1。配置防火墙规则在公网服务器上使用 iptables 将流量转发到无公网服务器sudo iptables -t nat -I PREROUTING -p udp --dport 51820 -j ACCEPT sudo iptables -t nat -A PREROUTING -d <公网服务器的IP> -j DNAT --to-destination 10.1.0.2 sudo iptables -t nat -A POSTROUTING -j MASQUERADE注意!!! 这里 <云服务器的IP> 有很多大厂的服务器,使用 ip addr 命令查询到的网卡绑定IP与实际公网IP不同,这里一定要使用 网卡实际绑定的 ip 而不是 公网IP 。为了确保规则在重启后仍然有效,保存规则sudo apt install iptables-persistent sudo netfilter-persistent save验证配置1、确认 WireGuard 隧道连接已建立sudo wg show2、通过公网 IP 测试连接,确保请求能够转发到无公网服务器。注意 确保公网服务器和无公网服务器的防火墙配置正确,允许必要的端口和协议通过。OpenWrt部署WireGuard1、首先确保 OpenWrt 上安装以下插件2、插件安装完成后,必须重启路由器,否则无法再接口处查看到 WireGuard 接口。3、网络-> 接口-> 添加新接口 输入名称 wg0 和选择 WireGuard VPN协议4、编辑接口-> 导入配置,粘贴无公网服务器部署 WireGuard 一节中配置 WireGuard 中的配置文件即可。5、将新建接口加入到 wan 防火墙区域6、完成后即可把服务器 IP 当做 OpenWrt 的一个 wan 口接入使用,相当于给你的宽带绑定了一条 公网IP 。如果遇到绑定 OpenWrt 后无效的情况,将 AllowedIPs 从 0.0.0.0/0 修改为公网服务器 ip 即可,例如:10.1.0.1/32 。
2024年11月05日
90 阅读
0 评论
0 点赞
2024-06-18
Cloudflare橙色云启用后 Nginx Proxy Manager的IP白名单和黑名单配置指南
在使用Cloudflare的橙色云(即启用CDN功能)后,许多用户发现Nginx Proxy Manager中的Access Lists(IP地址白名单/黑名单)失效。这通常是因为Cloudflare的代理服务器屏蔽了真实的客户端IP地址,导致Nginx无法直接获取客户端的真实IP,而只能看到Cloudflare的IP地址。本文将介绍如何配置Nginx,以便它能够正确识别和使用Cloudflare传递的真实客户端IP地址,从而确保访问控制列表的正常工作。配置Cloudflare的真实IP头要解决这一问题,首先需要在Nginx中配置,以便它能够识别Cloudflare传递的真实客户端IP地址。Cloudflare通常通过CF-Connecting-IP或X-Forwarded-For头传递真实的客户端IP。以下是具体步骤:在Nginx配置文件中添加以下内容# Cloudflare IPv4 addresses set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22; set_real_ip_from 103.31.4.0/22; set_real_ip_from 104.16.0.0/13; set_real_ip_from 104.24.0.0/14; set_real_ip_from 108.162.192.0/18; set_real_ip_from 131.0.72.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 162.158.0.0/15; set_real_ip_from 172.64.0.0/13; set_real_ip_from 173.245.48.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 190.93.240.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; # Cloudflare IPv6 addresses set_real_ip_from 2400:cb00::/32; set_real_ip_from 2606:4700::/32; set_real_ip_from 2803:f800::/32; set_real_ip_from 2405:b500::/32; set_real_ip_from 2405:8100::/32; set_real_ip_from 2a06:98c0::/29; set_real_ip_from 2c0f:f248::/32; real_ip_header CF-Connecting-IP;CloudflareIP 范围 https://www.cloudflare.com/zh-tw/ips/这些IP段是Cloudflare的代理服务器IP地址,通过set_real_ip_from指令,Nginx将信任这些IP地址,并从CF-Connecting-IP头中获取真实的客户端IP。更新Nginx Proxy Manager配置确保Nginx Proxy Manager能够正确使用上述配置。如果Nginx Proxy Manager允许自定义Nginx配置片段,将上述配置片段添加到相应位置。调整访问控制列表确保你的访问控制列表(白名单/黑名单)中的IP地址策略基于真实的客户端IP,而不是Cloudflare的IP地址。实际使用场景访问控制公司A希望只允许公司内部IP地址访问其网站。他们启用了Cloudflare的CDN加速,但发现所有访问请求的IP地址都显示为Cloudflare的代理服务器IP,导致访问控制列表失效。通过上述配置,Nginx能够正确识别真实的客户端IP,从而确保只有公司内部IP地址能够访问网站。日志记录和分析公司B使用Nginx记录访问日志以进行流量分析和安全监控。在启用Cloudflare CDN后,访问日志中显示的IP地址都是Cloudflare的代理服务器IP。通过上述配置,Nginx能够记录真实的客户端IP,从而提供准确的流量分析和安全监控数据。防止DDoS攻击公司C遇到DDoS攻击,攻击流量通过Cloudflare的代理服务器进入,导致Nginx的防护措施失效。通过正确配置Nginx以识别真实的客户端IP,公司C可以更有效地应用防火墙规则,识别并阻止攻击IP,从而提升防护效果。结论通过正确配置 Nginx 以识别 Cloudflare 传递的真实客户端IP地址,可以解决因启用 Cloudflare CDN 功能导致的访问控制列表失效问题。这不仅能确保访问控制列表的正常工作,还能提升日志记录、流量分析和安全防护的准确性。希望本文对你配置 Nginx Proxy Manager 以支持 Cloudflare CDN 功能有所帮助。
2024年06月18日
143 阅读
0 评论
0 点赞
2024-01-29
使用Ubuntu|Debian的 UFW 禁止 ICMP 协议访问(禁 ping)
打开 UFW 配置文件vim /etc/ufw/before.rules修改配置允许 ping-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT禁止 ping-A ufw-before-input -p icmp --icmp-type echo-request -j DROP让配置生效ufw reload
2024年01月29日
22 阅读
0 评论
0 点赞
2024-01-29
Termux 使用教程 #2 - 打造手机上的最强终端
前言虽然 Termux 下载安装后就直接可以使用了,但是为了让它用起来更顺手、看起来更顺眼,我进行了一系列的客制化操作。自定义扩展功能按键默认的功能按键实在是太简陋,连左右方向键都没有,使用起来并不方便。好在可以通过 ~/.termux/termux.properties 这个配置文件对按键进行定制。如果想设置成这样,可以在配置文件中添加如下内容:extra-keys = [['ESC','/','-','HOME','UP','END','PGUP','DEL'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN','BKSP']]作为一个懒人,通常我都会一键操作:mkdir -p ~/.termux && echo "extra-keys = [['ESC','/','-','HOME','UP','END','PGUP','DEL'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN','BKSP']]" > ~/.termux/termux.properties最后输入以下命令重载配置,或者关闭应用再打开。termux-reload-settings更换国内软件源默认情况下软件包下载的速度非常慢,可以通过更换国内的软件源来加快软件包下载速度。为了防止修改出错,先备份源列表文件:cp $PREFIX/etc/apt/sources.list $PREFIX/etc/apt/sources.list.bak出错还原方法:cp $PREFIX/etc/apt/sources.list.bak $PREFIX/etc/apt/sources.list使用 sed 命令一键修改:sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux stable main@' $PREFIX/etc/apt/sources.list也可以输入 apt edit-sources 手动编辑源文件。将默认的官方源替换为清华大学的镜像源 https://mirrors.tuna.tsinghua.edu.cn/termux 。检查修改:$ cat $PREFIX/etc/apt/sources.list # The main termux repository: #deb https://dl.bintray.com/termux/termux-packages-24 stable main deb https://mirrors.tuna.tsinghua.edu.cn/termux stable main最后更新一下:pkg up如果卡进度条了,退出 Termux 的进程,重新打开,并运行 dpkg --configure -a 即可修复。安装常用工具安装一些基本的常用工具,方便后续的折腾。pkg i -y git curl wget tree vim nano tmux htop安装和配置 Oh My ZshOh My Zsh will not make you a 10x developer...but you may feel like one.上面那句话来自 Oh My Zsh README ,意思是 “装逼是第一生产力”。我使用 Oh My Zsh 倒不是为把终端搞得花里胡哨去装逼,作为一个实用主义者,我非常喜欢自动建议、补全和代码高亮功能,这极大的提高了终端的输入效率。所以不管什么平台,都会安装 Oh My Zsh 。安装 zshpkg i -y zsh安装 Oh My Zsh使用 curl 下载安装sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"使用 wget 下载安装sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"Oh My Zsh 安装完成后会提示你设置 zsh 为默认 sehll 。如果没有提示,输入下面的命令进行设置:chsh -s zsh修改 Oh My Zsh 主题Oh My Zsh 有很多内置主题,只需要修改配置文件即可启用。也可以选择安装 外置主题 。我使用的主题是 ys ,简单实用,不花里胡哨。使用 sed 命令一键修改:sed -i '/^ZSH_THEME=/c\ZSH_THEME="ys"' ~/.zshrc修改后输入下面的命令刷新配置就可以看到效果:source ~/.zshrc安装 Oh My Zsh 插件安装 zsh-syntax-highlighting (代码高亮)git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting安装 zsh-autosuggestions (自动建议)git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions安装 zsh-completions(自动补全)git clone https://github.com/zsh-users/zsh-completions $ZSH_CUSTOM/plugins/zsh-completionszsh-completions 插件还需把 autoload -U compinit && compinit 添加到 .zshrc 。输入命令可一键添加:[ -z "`grep "autoload -U compinit && compinit" ~/.zshrc`" ] && echo "autoload -U compinit && compinit" >> ~/.zshrc把需要启用的插件写入到配置文件中,使用 sed 命令一键操作。sed -i '/^plugins=/c\plugins=(git z zsh-syntax-highlighting zsh-autosuggestions zsh-completions)' ~/.zshrc如果你有自己想添加的插件,写在括号内即可,插件名称用空格隔开。最后应用配置source ~/.zshrc修改终端配色修改配色需要安装 Termux:Styling 这个插件,安装好后长按屏幕,进入 More... 菜单,选择 Style 就可以对配色和字体进行设置。这在上篇文章中介绍菜单和选项时有提到过。选择好你自己喜欢的配色和字体,设置好后会在 ~/.termux 目录中生成配色文件 colors.properties 和字体文件 font.ttf ,可以把这两个文件进行备份,以后只需要导入即可,就不再需要安装这个插件了。$ tree ~/.termux /data/data/com.termux/files/home/.termux ├── colors.properties ├── font.ttf ├── shell -> /data/data/com.termux/files/usr/bin/zsh └── termux.properties修改启动页面的问候语刚接触 Termux 时这些信息会对使用有帮助,但随着对 Termux 的深入了解,和人类本能的控制欲,肯定会想把它换掉,我发现多数小伙伴都会使用自己的 ID 以大字体的方式呈现。vi $PREFIX/etc/motd而对于我这种崇尚极简主义的人来说,选择让它不显示。touch ~/.hushlogin最后Termux 给我的第一印象是好难用,连左右方向键都没有,差点就卸载了。因为最近在研究路由器,于是就尝试在 Termux 中输入 pkg install iperf3 来安装 iPerf3 ,没想到装上了,然后就拿着手机满屋子测 WiFi 吞吐量。这也使我对它产生了兴趣,后来慢慢开始深入了解,一发不可收拾,也促使我进行了客制化的尝试。
2024年01月29日
282 阅读
0 评论
0 点赞
2024-01-29
Termux 使用教程 #1 - Android 手机安装 Linux
前言Termux 是一个 Android 下的终端模拟器,可以在手机上模拟 Linux 环境。它是一个手机 App,可以从应用商店直接下载安装,打开就能使用,它提供一个命令行界面,让用户与系统交互。它支持 apt 软件包管理,可以十分方便安装软件包,而且完美支持 Python 、 PHP 、 Ruby 、 Go 、 Nodejs 、 MySQL 等工具。随着智能设备的普及和性能的不断提升,如今手机、平板等设备的硬件标准已经直逼入门级桌面计算机,使用 Termux 完全可以把手机变成一个强大的小型服务器。你甚至可以使用 Termux 通过 Nmap、Sqlmap、BBScan、subDomainsBrute、Hydra、RouterSploit 等工具实现端口扫描、注入检测、子域名爆破、多协议弱口令爆破、路由器漏洞检测框架多种功能,把手机打造成一个随身携带的渗透神器,成为现实版的艾登・皮尔斯。下载安装官方推荐从 F-Droid 和 Google Play 这两个平台下载,安装完打开就是下面这个样子。基本操作俗话说” 会跑之前,要先学会走 “,先了解基本操作,以后搞一些骚操作就轻而易举了。选项和菜单长按屏幕会出现可选择的复制光标,同时会显示 Copy(复制)、Paste(粘贴)、More...(更多)这几个选项。点击 More... 进入到下一级菜单。长按屏幕├── COPY: 复制├── PASTE: 粘贴├── More: 更多 ├── Select URL: 选择 URL └── Share transcipt: 传输当前会话的所有输出(通过Android api) └── Reset: 重置 └── Kill process: 杀掉当前终端会话进程 └── Style: 风格配色(需安装 Termux:Styling 插件) └── Keep screen on: 保持屏幕开启 └── Help: 帮助文档(Termux Wiki)从左侧屏幕边缘向右滑动可以拖出导航栏,在这里可以新建、切换、重命名会话 (session) 和调出输入法。常用快捷键在使用终端时,需要使用到 Alt、Ctrl、Esc 等键,但手机上并没有这些键。Termux 中可以使用音量减按钮来模拟 Ctrl 键。例如,音量减 +L 相当于在键盘上按下 Ctrl+L。以下是一些在终端中常用的快捷键,同样适用于 Termux 中。Ctrl+A -> 光标移动到开始位置Ctrl+E -> 光标移动到最末尾Ctrl+K -> 剪切此处至末尾的所有内容Ctrl+U -> 剪切此处至开始的所有内容Ctrl+W -> 剪切此处到左边的单词Ctrl+Y -> 粘贴由Ctrl + U、Ctrl + D、Ctrl + W剪切的单词Ctrl+L -> 相当于clear命令,清屏Ctrl+C -> 终止进程/命令Ctrl+D -> 关闭终端Ctrl+Z -> 挂起(发送 SIGTSTP 到)当前进程音量加按钮可以作为产生特定输入的特殊键,可以粗略的理解为笔记本电脑上的 Fn 键。音量加+E -> Esc键音量加+T -> Tab键音量加+1 -> F1键(音量增加 + 2相当于F2,以此类推)音量加+0 -> F10键音量加+B -> Alt+B,使用readline时返回一个单词音量加+F -> Alt+F,使用readline时转发一个单词音量加+X -> Alt+X音量加+W -> 向上箭头键音量加+A -> 向左箭头键音量加+S -> 向下箭头键音量加+D -> 向右箭头键音量加+L -> |(管道字符)音量加+H -> 〜(波浪号字符)音量加+U -> _(下划线字符)音量加+P -> Page Up键(上一页)音量加+N -> Page Down键(下一页)音量加+. -> Ctrl +\(SIGQUIT)音量加+V -> 显示音量控制音量加+Q -> 显示额外的按键视图音量加+K -> 同上扩展功能按键前面提到 Termux 可以使用音量键来实现快捷键操作,个人感觉使用音量键不是很不方便。Termux 还提供屏幕扩展功能按键。可以使用音量加 +Q 或者音量加 +K 可以显示和隐藏。此外,功能按键向左滑动可以调出文本输入框,可以更方便的粘贴和对待输入的指令进行更精细的修改。软件包管理Termux 除了支持 apt 命令外,还在此基础上封装了 pkg 命令,pkg 命令向下兼容 apt 命令。官方建议使用 pkg 命令,因为它会在安装或升级包时会自动更新 apt 列表,也就是说执行 pkg upgrade 相当于执行了 apt update && apt upgrade,简化了操作流程。命令 作用pkg search 搜索包pkg install 安装包,简写pkg ipkg uninstall 卸载包pkg reinstall 重新安装包pkg update / pkg upgrade 升级软件包,简写pkg uppkg list-all 列出可供安装的所有包pkg list-installed 列出已经安装的包pkg shoe 显示某个包的详细信息pkg files 显示某个包的相关文件夹路径Termux 与标准 Linux 目录结构的区别与大多数 Linux 发行版不同,Termux 不遵循文件系统层次结构标准,你无法在标准路径找到 /bin、/etc、/usr、/tmp 等目录。为了方便,Termux 提供了一个特殊的环境变量: PREFIX ,它相当于 /usr 目录。$ tree -d -L 1 $PREFIX /data/data/com.termux/files/usr ├── bin ├── etc ├── include ├── lib ├── libexec ├── share ├── src ├── tmp └── var此外用户主目录也在非常规位置。$ echo $HOME /data/data/com.termux/files/home由于没有 root 权限,想对根目录进行操作是不可能的。$ ls / ls: cannot open directory '/': Permission denied对此可以安装 proot ,并使用 termux-chroot 命令可以模拟 root 环境与标准的 Linux 目录结构。$ pkg i -y proot $ termux-chroot $ ls / bin data dev etc home lib proc root sbin share storage system tmp usr var vendor $ ls /usr bin etc include lib libexec share src tmp var这对某些必须要用到标准路径的一些程序会非常有用。root 权限前面提到的 proot 毕竟是模拟的方式,会有一定的局限性。如果手机已经 root ,在 Termux 中使用 su 虽然可以切换为 root 用户,但是会有一些 Termux 的命令无法正常使用,毕竟这不是一个标准的 Linux 环境。解决方案是安装 tsu 来获取 root 权限,tsu 是 Termux 中的 su 替代方案。安装 tsu:pkg i -y tsu使用 root 权限执行命令:tsudo command切换到 root 用户:tsu在 root 用户下,输入 exit 命令或者按 Ctrl+D 可以回到普通用户。访问外部存储Termux 默认只能访问自身内部的数据,如果要访问手机中其它的数据,输入下面的命令后,手机弹出对请求权限的窗口,允许即可。termux-setup-storage这个操作将创建 $HOME/storage 目录,此目录中的子目录将通过符号链接到手机存储中的一些常用目录。$ tree storage storage ├── dcim -> /storage/emulated/0/DCIM ├── downloads -> /storage/emulated/0/Download ├── movies -> /storage/emulated/0/Movies ├── music -> /storage/emulated/0/Music ├── pictures -> /storage/emulated/0/Pictures └── shared -> /storage/emulated/0此外还可以通过 /sdcard 来访问外部存储的根目录。SSH 连接作为 Linux 终端或者服务器,SSH 都是必须的。不管你是 SSH 连接到 Termux ,还是使用 Termux 去连其它主机,都需要先安装 openssh 。pkg i -y opensshTermux 使用 SSH 连接其它主机基本操作,ssh 命令:ssh User@Host -p PortSSH 连接到 Termux手机操作起来毕竟束缚太多,在电脑上通过 SSH 连接再进行操作是一件非常优雅的事情。设置密码:passwd查看用户名:whoami由于 Termux 是单用户环境,所以这个步骤不是必须的。使用任何用户名都可以进行登录。启动 SSH 服务端:sshdSSH 服务端程序默认是不启动的,且每次应用关闭再打开也需要再次启动。后面会讲如何自启 SSH 服务端。集齐 SSH 三要素,现在可以在电脑终端中输入 ssh 命令或者使用其它 SSH 客户端进行连接了。需要注意的是 Termux 的 SSH 端口是 8022 。ssh User@Host -p 8022执行 ssh 命令后,输入密码就可以连上了,然后就可以在电脑上方便的进行各种骚操作了。SSH 服务端(sshd)自启如果不想每次 ssh 连接 Termux 前去输入 sshd 命令可以设置自启。sshd 自启分两种情况,一种是打开 Termux 应用时自启,还有一种是手机开机后自启。打开应用时自启 SSH 服务端把 sshd 命令添加到 Shell 配置文件中即可,比如我使用的是 zsh ,那么就添加到 ~/.zshrc 中。如果是 bash ,那么就添加到 ~/.bashrc 。echo "sshd" >> ~/.zshrc手机开机后自启 SSH 服务端首先安装 Termux:Boot 插件,安装后给予该插件开机启动的权限,这样 Termux 就可以在开机后自启了。创建 ~/.termux/boot/ 目录(这个目录中放置的脚本会在开机启动 Termux 后执行)。mkdir -p ~/.termux/boot/在该目录中新建一个脚本,命名为 start-sshd ,把 sshd 命令添加到这个文件中即可。echo 'termux-wake-lock; sshd' > ~/.termux/boot/start-sshdtermux-wake-lock 命令可防止手机休眠导致 Termux 应用的进程被冻结。设置完成后,手机开机会自动启动 Termux ,并开启 SSH 服务端。
2024年01月29日
288 阅读
0 评论
0 点赞
1
2
...
5