Step1:下载
下载安装frp https://github.com/fatedier/frp/releases
Step2:准备
准备两台计算机,一台具备公网ip,一台能正常访问网页即可,将下载后的frp文件拷贝到两台电脑并解压。
目录文件解释:
.
├── frpc # 客服端可执行文件
├── frpc_full.ini # 客服端配置文件全部解释
├── frpc.ini # 客服端配置文件
├── frps # 服务端可执行文件
├── frps_full.ini # 服务端配置文件全部解释
├── frps.ini # 服务端配置文件
├── LICENSE
└── systemd # 服务文件
├── frpc.service
├── frpc@.service
├── frps.service
└── frps@.service
Step3:简单示例
- 在具备公网IP的电脑上(服务端)配置文件 frps.ini ``` Path: frp_0.35.1_linux_amd64/frps.ini
[common] bind_port = 7000
注:需要服务器防火墙放行7000端口
2. 在需要内网穿透的电脑上(客户端)配置文件 **frpc.ini**
Path: frp_0.35.1_linux_amd64/frpc.ini
[common] server_addr = x.x.x.x # x.x.x.x为上方有公网IP电脑的公网IP地址 server_port = 7000
[ssh] type = tcp local_ip = 127.0.0.1 # 配置为本地需要暴露到公网的服务地址和端口 local_port = 22 remote_port = 6000 # 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口
<a name="zwIxU"></a>
### Step4:运行
1. 在具备公网IP的电脑上(服务端)执行命令
- 前台执行:`./frps -c frps.ini`
- 后台执行:`nohup ./frps -c frps.ini >/dev/null 2>&1 &`
2. 在需要内网穿透的电脑上(客户端)执行命令
- 前台执行:`./frpc -c frpc.ini`
- 后台执行:`nohup ./frpc -c frpc.ini >/dev/null 2>&1 &`
说明:>/dev/null 2>&1 &,表示丢弃。
<a name="2Lewp"></a>
### Step5:运行结果
1. 服务端
![image.png](https://cdn.nlark.com/yuque/0/2021/png/1404781/1614679453502-c16954f1-f3c8-47e7-92b7-4981ceba1b86.png#height=202&id=XTtHu&margin=%5Bobject%20Object%5D&name=image.png&originHeight=404&originWidth=1426&originalType=binary&ratio=1&size=610535&status=done&style=none&width=713)
2. 客户端
![image.png](https://cdn.nlark.com/yuque/0/2021/png/1404781/1614679440273-6972cadc-507e-47d7-b234-869ea172f898.png#height=156&id=sSTWn&margin=%5Bobject%20Object%5D&name=image.png&originHeight=311&originWidth=1426&originalType=binary&ratio=1&size=465480&status=done&style=none&width=713)
<a name="S1Pag"></a>
### 官方示例
<a name="2N8DO"></a>
#### 通过自定义域名访问内网的 Web 服务
这个示例通过简单配置 HTTP 类型的代理让用户访问到内网的 Web 服务。<br />HTTP 类型的代理相比于 TCP 类型,不仅在服务端只需要监听一个额外的端口 `vhost_http_port` 用于接收 HTTP 请求,还额外提供了基于 HTTP 协议的诸多功能。
1. 修改 frps.ini 文件,设置监听 HTTP 请求端口为 8080:
[common] bind_port = 7000 vhost_http_port = 8080
2. 修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,`local_port` 为本地机器上 Web 服务监听的端口, 绑定自定义域名为 `custom_domains`。
[common] server_addr = x.x.x.x server_port = 7000 [web] type = http local_port = 80 custom_domains = www.yourdomain.com [web2] type = http local_port = 8080 custom_domains = www.yourdomain2.com ```
- 分别启动 frps 和 frpc。
- 将
www.yourdomain.com
和www.yourdomain2.com
的域名 A 记录解析到 IPx.x.x.x
,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。或者可以通过修改 HTTP 请求的 Host 字段来实现同样的效果。 - 通过浏览器访问
[http://www.yourdomain.com:8080](http://www.yourdomain.com:8080)
即可访问到处于内网机器上 80 端口的服务,访问[http://www.yourdomain2.com:8080](http://www.yourdomain2.com:8080)
则访问到内网机器上 8080 端口的服务。常见错误
- 程序运行失败:检查文件是否具有执行权限
- 程序运行成功但无法访问:服务器端口未放行
- 端口被占用:切换为未使用端口
- 配置文件中[ ]内名字不能重复