frp 内网穿透 实现MAC远程桌面

起因
2019-10月的某天,我在公司加(hua)班(shui),媳妇从家里发来消息
媳妇:家里电脑怎么登陆不了谷歌邮箱?
(因为在国庆期间,vps被封,现在已经从Shadowsocks转到V2Ray,家里电脑未能及时配置梯子)
我:翻墙软件更改了,我把客户端软件发给你,你安装后配置下
媳妇:好麻烦呀,你能不能远程操作?
我:呃。。。这个。。。不能。。。
媳妇:
媳妇:
我:。。。。。。
准备
因为家里的电脑和公司的电脑处于不同的局域网,无法直接使用VNC进行屏幕共享,
所以需要内网穿透,使家里的电脑能够被外网访问。
frp 是一个可用于内网穿透的高性能的反向代理应用,支持
tcp,udp协议,为http和https应用协议提供了额外的能力,且尝试性支持了点对点穿透。
准备工作:
- 可访问的公网 IP
 - 处于家庭局域网的 Mac
 - 处于公司局域网的 Mac
 
frps 服务端 (ubuntu-16.04-x86_64)
在具有公网 IP 的服务器上搭建服务端
- 
    
确定frp版本
github releases 页面可查看支持的版本,我使用的是 frp_0.29.1_linux_amd64.tar.gz
 - 
    
下载安装
mkdir frp cd frp wget https://github.com/fatedier/frp/releases/download/v0.29.1/frp_0.29.1_linux_amd64.tar.gz tar -zxvf frp_0.29.1_linux_amd64.tar.gz cd frp_0.29.1_linux_amd64.tar.gz - 
    
配置 frps.ini
[common] bind_port = 7000 - 
    
启动 frps
./frps -c ./frps.ini - 
    
配置后台运行
- 
        
安装 supervisor
sudo apt-get install supervisor - 
        
配置 frp.conf
vi /etc/supervisor/conf.d/frp.conf - 
        
frp.conf 内容
[program:frp] command = /root/frp/frp_0.29.1_darwin_amd64/frps -c /root/frp/frp_0.29.1_darwin_amd64/frps.ini autostart = True autorestart = True - 
        
supervisorctl 启动
supervisorctl update - 
        
supervisorctl 查看状态
supervisorctl status 
 - 
        
 
frpc 客户端 (MacOS Mojave)
在处于家庭局域网的 Mac 上搭建客户端
- 
    
确定frp版本
MAC 需要使用
darwin_amd64结尾的版本,我使用的是 frp_0.29.1_darwin_amd64.tar.gz - 
    
下载安装
mkdir frp cd frp wget https://github.com/fatedier/frp/releases/download/v0.29.1/frp_0.29.1_darwin_amd64.tar.gz tar -zxvf frp_0.29.1_darwin_amd64.tar.gz cd frp_0.29.1_darwin_amd64.tar.gz - 
    
配置 frpc.ini
server_addr配置为可访问的公网IPserver_port和服务端(frps.ini)的bind_port一致local_port为VNC的默认端口号5900remote_port为屏幕共享时所输入的IP地址的端口号[common] server_addr = xx.xx.xx.xx server_port = 7000 [vnc] type = tcp local_ip = 127.0.0.1 local_port = 5900 remote_port = 35900 use_encryption = true use_compression = true - 
    
启动 frps
./frps -c ./frps.ini 
测试连接
使用处于公司局域网的 Mac 测试连接
- 
    
使用快捷键
command + k唤出连接服务器页面 - 
    
输入 公网 IP 和
remote_port指定的端口号例如:
vnc://182.185.42.38:35900
 - 
    
输入用户名和密码进行连接即可

 - 
    
连接成功
