frp 使用

安装 frp

搭建 frp 还需要一台能够在外网访问的机器。
https://github.com/fatedier/frp/releases 下载 frp 执行文件。
frps 和 frps.yaml 放在具有公网 ip 的机器上。
frpc 和 frpc.yaml 放在内网环境的机器上。

基于 frp 实现内网穿透

frp 最大的使用场景是内网穿透。
比如下图,家里的 Nas 是在家庭局域网的,别人无法访问,可以借用一台有公网 IP 的 VPS 实现从任何地方访问家里的 Nas。
image.png

我们需要分别启动两个服务

  • 一个在有公网的机器上,叫 frp server,配置文件是 frps.yaml
  • 一个在内部的机器上,叫 frp client,配置文件是 frpc.yaml
# frps.yaml
bindPort: 10001 # 用于被 frp client 连接
vhostHTTPPort: 8080 # 用于访问,比如让 nginx 把一些域名的请求代理过来
auth: # 鉴权方式
  method: token
  token: abcabc # token 相当于密码,自己定义
# frpc.yaml
serverAddr: "<frps-domain>" # frp server 的域名或 ip
serverPort: 10001 # frp server 监听的端口,就是上面的 bindPort
auth:
  token: abcabc # 密钥
proxies: # 穿透的代理配置
# 这是一个最常见的内网穿透配置,表示 test1.laily.net 这个域名的请求会被转发到本机的 8081 端口。
  - name: "test1" 
    type: "http"
	localIP: 127.0.0.1
	localPort: 8081
	customDomains = ["test1.laily.net"]
	
# 另一种有意思的用法,它会在 frp server 的机器上的 10086 端口上开启一个 socks5 代理,通过这个代理可以访问到本机
  - name: socks
    type: tcp
    remotePort: 10006
    plugin:
      type: socks5
      username: <username>
      password: <password>

启动,分别在机器上启动 ./frps -c ./frps.yaml./frpc -c ./frpc.yaml 就好了。
然后配置好域名(或者直接用 ip + port)就可以访问了。