Introduction
Frp 是一个 Go 写的内网穿透工具,由于 Go 良好的跨平台性以及静态编译的特带你,所以它非常容易部署。但它默认的方式是通过中转来实现的,所以需要一个外网服务器来部署 frps。
服务端部署
去 Frp Release 中下载对应版本的frp,解压后就能得到一个frps和frpc的可执行文件。frps.ini为frps的配置文件。具体配置细节可以参考官方文档
以内网穿透 ssh 为例,配置文件大概可以为:
1 2 3 4 5 6 7 8
| [common] bind_port = 7000 log_file = ./frps.log token = mytoken
dashboard_port = 7001 dashboard_user = your-username dashboard_pwd = your-passwd
|
配置好后,直接./frps -c ./frps.ini。
客户端部署
客户端的配置文件为frpc.ini:
1 2 3 4 5 6 7 8 9 10
| [common] server_addr = x.x.x.x server_port = 7000 token = mytoken
[ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 7022
|
配置好后,./frpc -c ./frpc.ini。
这样就可以通过服务器IP和 frpc 中定义的remote_port访问客户端了。
配置 stcp
上面的配置是使用 tcp ,会把端口直接暴露在公网中,所以可能会有些危险。frp 提供了一种更加安全的方式,即 stcp。stcp 要求连接的客户端也同样运行 frpc 连接到 frps,并且连接者和被连接者所使用的 sk 是相同的。
被连接者的 frpc 配置:
1 2 3 4 5 6 7 8 9 10
| [common] server_addr = 119.29.188.142 server_port = 7888 token = wuxiaobai24-frp
[stcp-ssh] type = stcp sk = mysk local_ip = 127.0.0.1 local_port = 22
|
连接者的 frpc 配置:
1 2 3 4 5 6 7 8 9 10 11 12
| [common] server_addr = x.x.x.x server_port = 7000 token = mytoken
[wsl] type = stcp role = visitor sk = mysk server_name = stcp-ssh bind_ip = 127.0.0.1 bind_port = 2222
|
Reference
- https://gofrp.org/docs/
- https://gofrp.org/docs/examples/stcp/
- https://gofrp.org/docs/examples/ssh/
One More Thing