Reminance's Studio.

使用fatedier/frp搭建内网穿透

字数统计: 1.2k阅读时长: 5 min
2019/08/31 Share

@TOC

使用fatedier/frp

使用fatedier/frp
github中文文档如下: https://github.com/fatedier/frp/blob/master/README_zh.md

fatedier/frp搭建:

linux服务端下载安装包:

服务端搭建在上一步准备的公网服务器上,因为服务器是 centos7 x64 的系统,因此,这里下载最新安装包版本为 linux_amd64 的 frp_0.29.0_linux_amd64.tar.gz 。

1
$ wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz

linux服务端解压安装包:

1
$ tar -zxvf frp_0.29.0_linux_amd64.tar.gz

linux服务端修改配置文件:

1
2
3
4
5
6
7
8
9
10
$ cd frp_0.29.0_linux_amd64
$ vim frps.ini

[common]
bind_port = 7000
vhost_http_port = 8904

dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

linux服务端 启动 frp

1
2
3
4
5
[root@izbp1ad1jbc6fvyx1vcon3z frp_0.29.0_linux_amd64]# nohup ./frps -c ./frps.ini &
[1] 14973
[root@izbp1ad1jbc6fvyx1vcon3z frp_0.29.0_linux_amd64]# 2019/08/31 17:35:34 [I] [service.go:139] frps tcp listen on 0.0.0.0:7000
2019/08/31 17:35:34 [I] [service.go:181] http service listen on 0.0.0.0:8904
2019/08/31 17:35:34 [I] [root.go:205] Start frps success

linux服务端 检查frp端口是否启动监听

1
2
3
4
5
[root@izbp1ad1jbc6fvyx1vcon3z frp_0.29.0_linux_amd64]# netstat -aptn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::7000 :::* LISTEN 14973/./frps
tcp6 0 0 172.16.52.147:7000 14.23.103.210:60848 ESTABLISHED 14973/./frps

如上代码所示 已经成功启动

windows frp 客户端搭建(其他平台同理一样 改配置):

windows客户端下载安装包:

https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_windows_386.zip
直接下载;

windows客户端解压安装包:

….

windows客户端修改配置文件:

修改E:\personal\工具\内网穿透\frp_0.29.0_windows_amd64\frp_0.29.0_windows_amd64\frpc.ini文件
修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 web 服务对应的端口, 绑定自定义域名 www.yourdomain.com:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 8904
custom_domains = www.yourdomain.com

[ssh-windows-pc1]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6000

windows客户端 启动 frp

直接到目录下打开cmd.exe

1
2
3
4
E:\personal\工具\内网穿透\frp_0.29.0_windows_amd64\frp_0.29.0_windows_amd64>frpc.exe
2019/08/31 16:38:02 [I] [service.go:234] login to server success, get run id [33602c113f49fb69], server udp port [0]
2019/08/31 16:38:02 [I] [proxy_manager.go:144] [33602c113f49fb69] proxy added: [web ssh]
2019/08/31 16:38:02 [I] [control.go:153] [web] start proxy success 2019/08/31 16:38:02 [I] [control.go:153] [ssh] start proxy success

至此,frp搭建完成

扩展使用, nginx反向代理(可搭配域名解析等场景使用)

nginx添加配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
location /callback/ {
proxy_pass http://127.0.0.1:8904/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
sendfile off;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_temp_file_write_size 64k;
proxy_http_version 1.1;
proxy_request_buffering off;
}

如果配置了https, 需要在https代理设置下同理配置相同内容;

重载nginx,使配置生效

1
nginx -s reload 

使用效果

GET: https://www.yourdomain.com/callback/hello

1
2
3
4
5
6
{
"result": true,
"code": "0",
"msg": "success",
"data": "demo"
}

扩展使用, 使用frp做远程连接(windows)

在需要接收外网远程连接的pc的frpc.ini中配置如下:

1
2
3
4
5
[ssh-windows-pc1]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6000

使用远程连接:remote_addr:6000即可

将BAT文件或exe文件注册为服务的方法

为了方便windows pc机快速启动, 可以注册frpc客户端为win系统服务, 参考网上的教程大致如下:

第一步:

下载微软系统小工具 instsrv.exe和srvany.exe至C:\Windows\System32(如果是64bit系统,则将其拷贝到C:\WINDOWS\SysWOW64)。

脚本之家下载:arvany

第二步:

进入dos界面,运行命令(这里以64bit系统为例,32位改为相应路径即可):
C:\Documents and Settings\administrator>C:\WINDOWS\SysWOW64\instsrv.exe MyService C:\WINDOWS\SysWOW64\srvany.exe
注:Myservice是自定义的服务的名称,可以根据应用程序名称任意更改。

第三步:

打开注册表,定位到下面的路径。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName
(同样的ServiceName是你刚才安装服务时自定义的服务名称。)
如果该服务名下没有Parameters项目,则对服务名称项目右击新建项,名称为Parameters,然后定位到Parameters项,新建以下几个字符串值。
名称 Application 值为你要作为服务运行的BAT文件地址。
名称 AppDirectory 值为你要作为服务运行的BAT文件所在文件夹路径。
名称 AppParameters 值为你要作为服务运行的BAT文件启动所需要的参数。
注:instsrv ServiceName remove 命令可删除服务。

扩展使用完成

CATALOG
  1. 1. 使用fatedier/frp
    1. 1.1. fatedier/frp搭建:
      1. 1.1.1. linux服务端下载安装包:
      2. 1.1.2. linux服务端解压安装包:
      3. 1.1.3. linux服务端修改配置文件:
      4. 1.1.4. linux服务端 启动 frp
      5. 1.1.5. linux服务端 检查frp端口是否启动监听
      6. 1.1.6. windows frp 客户端搭建(其他平台同理一样 改配置):
      7. 1.1.7. windows客户端下载安装包:
      8. 1.1.8. windows客户端解压安装包:
      9. 1.1.9. windows客户端修改配置文件:
      10. 1.1.10. windows客户端 启动 frp
      11. 1.1.11. 至此,frp搭建完成
  2. 2. 扩展使用, nginx反向代理(可搭配域名解析等场景使用)
    1. 2.1. nginx添加配置如下:
    2. 2.2. 重载nginx,使配置生效
    3. 2.3. 使用效果
  3. 3. 扩展使用, 使用frp做远程连接(windows)
    1. 3.1. 将BAT文件或exe文件注册为服务的方法
      1. 3.1.1. 第一步:
      2. 3.1.2. 第二步:
      3. 3.1.3. 第三步:
  4. 4. 扩展使用完成