技术方案:frp内网穿透 + Trojan 代理 + Let’s Encrypt 证书(域名:*.yohal.cn)

目标:
在无公司 VPN 的情况下,让异地设备通过 Shadowrocket 连接 vps.yohal.cn:443,流量经阿里云转发至公司 Mac mini,最终以公司网络身份访问 Microsoft Teams 和 Outlook。
整体架构
[异地设备]
→ Shadowrocket 连接 vps.yohal.cn:443 (Trojan)
→ 阿里云服务器(公网 IP,绑定 vps.yohal.cn)
→ frp 服务端 (frps) 监听 7000
→ frp 将 443 端口 TCP 流量转发给公司 Mac
→ 公司 Mac mini (M4)
→ frp 客户端 (frpc) 接收流量
→ Trojan-go 服务端(监听 127.0.0.1:443,使用合法 TLS 证书)
→ 出站流量走公司内网 → Teams/Outlook 正常工作
前提条件
• 已备案域名:vps.yohal.cn,DNS A 记录指向阿里云公网 IP
• 阿里云 ECS 服务器(Linux,如 CentOS/Ubuntu),已安装 宝塔面板
• 公司 Mac mini 可访问外网(能连接阿里云)
• 异地设备(iOS/Mac)安装 Shadowrocket
• 阿里云安全组开放端口:443/TCP(公众)、7000/TCP(建议限制为公司出口 IP)
第一步:在宝塔面板申请 Let’s Encrypt 证书
- 登录 宝塔面板
- 进入「网站」→「添加站点」
- 域名:*.yohal.cn
- 根目录:任意(如 /www/wwwroot/vps)
- PHP 版本:纯静态
- 点击刚创建站点的「SSL」选项卡
- 选择「Let’s Encrypt」,勾选 *.yohal.cn,点击「申请」
(确保服务器 80 端口开放,用于 ACME 验证) - 申请成功后,记录证书路径:
• 证书文件(fullchain.pem):
/www/server/panel/vhost/cert/vps.yohal.cn/fullchain.pem
• 私钥文件(privkey.pem):
/www/server/panel/vhost/cert/vps.yohal.cn/privkey.pem
注意:宝塔会自动续期证书(每 60 天),但需手动同步到 Mac。
第二步:将证书复制到公司 Mac mini
在公司 Mac 终端执行(替换 your_aliyun_ip):编辑
1:mkdir -p ~/Documents/certs
2:scp root@your_aliyun_ip:/www/server/panel/vhost/cert/vps.yohal.cn/fullchain.pem ~/Documents/certs/
3:scp root@your_aliyun_ip:/www/server/panel/vhost/cert/vps.yohal.cn/privkey.pem ~/Documents/certs/
4:chmod 600 ~/Documents/certs/*.pem
提示:若 SSH 使用密钥,请确保本地有对应私钥;若用密码,临时开启阿里云 22 端口。
第三步:在公司 Mac 上部署 Trojan-go
- 下载 Trojan-go(ARM64 for macOS):cd ~/Downloads
curl -LO https://github.com/p4gefau1t/trojan-go/releases/latest/download/trojan-go-darwin-arm64.zip
unzip trojan-go-darwin-arm64.zip
mv trojan-go /usr/local/bin/ - 创建配置文件 ~/Documents/trojan/config.json:
{
"run_type": "server",
"local_addr": "127.0.0.1",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": ["your_strong_password_here"],
"ssl": {
"cert": "/Users/ $ (whoami)/Documents/certs/fullchain.pem",
"key": "/Users/ $ (whoami)/Documents/certs/privkey.pem",
"sni": "*.yohal.cn"
}
}
- 启动 Trojan-go(测试):trojan-go -config ~/Documents/trojan/config.json
第四步:部署 frp(内网穿透)
A. 在阿里云服务器部署 frps(服务端)
- 下载 frp(Linux x64):wget https://github.com/fatedier/frp/releases/latest/download/frp_0.58.1_linux_amd64.tar.gz
tar -zxvf frp_*.tar.gz && cd frp_* - 编辑 frps.toml:
[common]
bind_port = 7000
token = “your_secure_frp_token_here”
- 启动 frps:nohup ./frps -c frps.toml > frps.log 2>&1 &
B. 在公司 Mac 部署 frpc(客户端)
- 下载 frp for macOS ARM64:curl -LO https://github.com/fatedier/frp/releases/latest/download/frp_0.58.1_darwin_arm64.tar.gz
tar -zxvf frp_*.tar.gz
mv frpc /usr/local/bin/ - 创建配置文件 ~/Documents/frp/frpc.toml:
[common]
server_addr = your.aliyun.public.ip
server_port = 7000
token = "your_secure_frp_token_here"
[trojan]
type = tcp
local_ip = 127.0.0.1
local_port = 443
remote_port = 443
- 启动 frpc:frpc -c ~/Documents/frp/frpc.toml
第五步:配置 Shadowrocket(异地设备)
字段 值
| 类型: | Trojan |
| 服务器: | vps.yohal.cn |
| 端口: | 443 |
| 密码: | your_strong_password_here |
| SNI: | *.yohal.cn |
| TLS 指纹 | 留空 |
| Allow insecure | 不勾选(证书合法) |
开启代理后,访问 https://ip.cnIP应显示为公司公网出口 IP。
安全与维护建议
- 端口安全
• 阿里云安全组:- 入方向:443/TCP(0.0.0.0/0)
- 入方向:7000/TCP(仅限公司出口 IP,可选)
- 自启配置
建议使用 launchd 让 Trojan-go 和 frpc 开机自启(可提供配置文件)。 - 证书续期处理
宝塔自动续期,但 Mac 上的证书需更新:
a. 重新 SCP 下载证书
b. 重启 Trojan-go:
pkill trojan-go
trojan-go -config ~/Documents/trojan/config.json
最终验证清单
□ *yohal.cn 解析到阿里云公网 IP
□ 宝塔成功签发 Let’s Encrypt 证书
□ 证书已复制到 Mac 并被 Trojan-go 加载
□ frpc 成功连接 frps,日志显示 [trojan] start proxy success
□ Shadowrocket 连接无证书警告
□ 访问 https://ip.cn 显示公司公网 IP
□ Microsoft Teams / Outlook 可正常登录使用
附录:常用命令
生成强密码:
# Trojan 密码
openssl rand -base64 16
# frp token
openssl rand -hex 16
查看进程:
ps aux | grep trojan-go
ps aux | grep frpc
关闭服务:
pkill trojan-go
pkill frpc







暂无评论内容