实现异地访问公司内网:通过公网IP + 公司终端

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

yidizuwang

目标:
在无公司 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 证书

  1. 登录 宝塔面板
  2. 进入「网站」→「添加站点」
    • 域名:*.yohal.cn
    • 根目录:任意(如 /www/wwwroot/vps)
    • PHP 版本:纯静态
  3. 点击刚创建站点的「SSL」选项卡
  4. 选择「Let’s Encrypt」,勾选 *.yohal.cn,点击「申请」
    (确保服务器 80 端口开放,用于 ACME 验证)
  5. 申请成功后,记录证书路径:
    • 证书文件(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

  1. 下载 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/
  2. 创建配置文件 ~/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"
}
}
  1. 启动 Trojan-go(测试):trojan-go -config ~/Documents/trojan/config.json

第四步:部署 frp(内网穿透)

A. 在阿里云服务器部署 frps(服务端)

  1. 下载 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_*
  2. 编辑 frps.toml:

[common]
bind_port = 7000
token = “your_secure_frp_token_here”

  1. 启动 frps:nohup ./frps -c frps.toml > frps.log 2>&1 &

B. 在公司 Mac 部署 frpc(客户端)

  1. 下载 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/
  2. 创建配置文件 ~/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
  1. 启动 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。

安全与维护建议

  1. 端口安全
    • 阿里云安全组:
    • 入方向:443/TCP(0.0.0.0/0)
    • 入方向:7000/TCP(仅限公司出口 IP,可选)
  2. 自启配置
    建议使用 launchd 让 Trojan-go 和 frpc 开机自启(可提供配置文件)。
  3. 证书续期处理
    宝塔自动续期,但 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

© 版权声明
THE END
喜欢就支持一下吧
点赞10
评论 抢沙发

请登录后发表评论

    暂无评论内容