frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

一、服务端配置

1、安装及配置

这里以群晖 NAS 为例:

  1. 在 Docker 注册表里搜索 frps,安装 latest 版本(也可以安装指定版本);
  2. 在映像里创建容器,并进入高级设置;
  3. 在高级设置里启用自动重新启动;
  4. 在存储空间添加文件,装载路径为 /etc/frp/frps.ini
  5. 网络里勾选使用与 Docker Host 相同的网络;
  6. 启动容器。

image-20220707211357236

image-20220707211924033

image-20220707211655902

image-20220707211700736

image-20220707211739436

2、frps.ini 配置文件

[common]
bind_port = 7000
token = your_token
dashboard_port = 7500
dashboard_user = your_dashboard_user
dashboard_pwd = your_dashboard_pwd
vhost_http_port = 8000
vhost_https_port = 8001

二、客户端配置

1、安装及配置

同样以群晖 NAS 为例,安装及配置基本跟服务端相同,配置文件改为 frpc.ini 即可。

2、frpc.ini 配置文件

[common]
server_addr = your_server_addr
server_port = 7000
tls_enable = true
token = your_token

[ssh]
type = tcp
local_ip = 192.168.100.2
local_port = 22
remote_port = 8022
use_compression = true
use_encryption = true

[chevereto]
type = tcp
local_ip = 192.168.100.2
local_port = 8090
remote_port = 8090
use_compression = true
use_encryption = true

[WebDAV_https]
type = tcp
local_ip = 192.168.100.2
local_port = 5007
remote_port = 8007
use_compression = true
use_encryption = true

[WebDAV_http]
type = tcp
local_ip = 192.168.100.2
local_port = 5005
remote_port = 8005
use_compression = true
use_encryption = true

[dsm_http]
type = tcp
local_ip = 192.168.100.2
local_port = 5000
remote_port = 8000
use_compression = true
use_encryption = true

[http]
type = http
custom_domains = your_custom_domains
local_port = 5000
use_compression = true
use_encryption = true

[https2http]
type = https
custom_domains = your_custom_domains
local_port = 5000
plugin = https2http
plugin_local_addr = 127.0.0.1:5000

plugin_crt_path = /etc/frp/cert/your_custom_domains.pem
plugin_key_path = /etc/frp/cert/your_custom_domains.key
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp

三、Mac 远程访问

公司因安全原因,内网屏蔽了 TeamViewer、花生壳等远程桌面工具,而我时常需要在家里访问公司的 Mac 电脑。

一种方法是连接 VPN,然后通过 公司的 Mac IP 地址这种场景使用 frp 工具就非常好解决了。

1、Mac 屏幕共享设置

在 System Preferences -> Sharing -> 勾选 Screen Sharing

image-20220707210935005

2、Mac 安装 frpc

可以在 frp GitHub 下载 darwin 二进制包,使用 ./frpc -c frpc.ini 命令即可启动客户端,但是如果想要自启动,还得配置 launchctl。

我们可以直接使用 Homebrew 进行安装会更加方便,Homebrew 内置了 brew services 服务(Manage background services with macOS' launchctl(1) daemon manager.),我们就不用单独配置 launchctl。

// 安装
brew install frpc
// 编辑配置
vim /usr/local/etc/frp/frpc.ini
// 启动服务
brew services start frpc

frpc.ini 配置

[common]
server_addr = your_server_addr
server_port = 7000
tls_enable = true
token = your_token

[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 5900 // 本地 vnc 默认端口
remote_port = 8050 // 远程访问时使用的端口
use_compression = true
use_encryption = true

3、远程连接

可以安装 VNC Viewer 进行访问。

如果使用 macOS,

  1. 打开 Finder -> Go -> Connect to Server,或者使用快捷键 Command + K
  2. 输入 vnc://your_server_addr:8050,然后点击 Connect;
  3. 弹出输入框,输入 Mac 用户名及锁屏密码。

image-20220708104154647