本次部署的目的是利用本地高性能的计算资源和云服务器畅通无阻的公网,实现无公网环境也可正常部署业务。
本文所用到的技术如下
| 名称 | 作用 | 软件 |
|---|---|---|
| 单向异地组网 | 将云服务器和本地服务器组成局域网,因本地服务器没有公网,所以由云服务器建立UDP连接实现组网 | WireGuard |
| 反代 | 将对云服务器发起的访问根据配置的业务转发到本地服务器进行处理 | Nginx |
| 网络转发 | 配合wireguard实现对网络流量的路由和转发,确保组网的通畅 | iptables |
单向异地组网
2025.2.18补充:组网成功后大概十几分钟,被运营商墙了,太狗了,因为wireguard走的是UDP协议,被运营商检测到了。目前有两个思路,找运营商加个公网IP或者想其他办法组网
2025.2.18 10:55记录思路:使用udp2raw将UDP流量封装到TCP流量中,并伪装成HTTPS
2025.2.18 10:57补充,尝试udp2raw能打通后先用着,如果再次被封则换为xtls-rprx-vision透明代理UDP流量,实现最强HTTPS伪装
| 特性 | udp2raw |
xtls-rprx-vision |
|---|---|---|
| 工作原理 | 把 UDP 伪装成 TCP 或 ICMP,进行 NAT 穿透 | 通过 Xray Vision 协议将流量伪装成 HTTPS/TLS |
| 支持协议 | 任何 UDP 流量(WireGuard、IPSec、OpenVPN等) | 任何 TCP/UDP 流量(支持 UDP over TCP) |
| 流量伪装 | 可伪装为 TCP(HTTPS、SSH)或 ICMP | 伪装成合法 HTTPS 流量 |
| 加密方式 | XOR、AES(轻量级加密,防止 DPI 识别) | XTLS(高级 TLS 伪装,难以被识别) |
| 端口 | 可伪装成 443(HTTPS)等,但仍是伪 TCP | 直接监听 443 端口,真实 HTTPS 伪装 |
| 数据包特征 | 模拟 TCP,但仍然是 UDP 数据包封装 | 真实 HTTPS 流量,运营商难以检测 |
| 防 DPI | 基本防御,部分 DPI 仍能检测出伪 TCP | 最高级别防御,难以被识别 |
| 延迟 | 低,基本无影响 | 略高,取决于 TLS 处理开销 |
| 适用场景 | 适用于 UDP 被封但 TCP 可用的环境 | 适用于 DPI 严格的环境,如中国大陆或企业网络 |
| 是否需要证书 | 不需要 | 需要 TLS 证书(Let’s Encrypt 等) |
| 稳定性 | 高,几乎无性能损耗 | 高,但 TLS 可能增加 CPU 负担 |
| 适合长期使用 | 可以,但可能被进一步分析 | 更适合长期使用,难以封锁 |
服务器部分
1 | 安装wireguard |
在/etc/wireguard/下创建一个配置文件,例如wg0.conf,按如下所述写入配置:
1 | [Interface] |
1 | 编辑完配置文件后启动服务 |
内网服务器部分
1 | 与服务器一致,生成公钥私钥,只是名称是client开头 |
在/etc/wireguard/下创建一个配置文件,例如wg0.conf,按如下所述写入配置:
1 | [Interface] |
1 | 编辑完配置文件后启动服务 |
共同配置部分
在内网和云服务器均开启转发
1 | echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf |