frp在windows环境部署

frpwindows环境部署

配置 frp 实现内网穿透

frp 中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md

一、frp 的作用

利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。

对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。

利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

二、安装 frp

  1. github下载地址:https://github.com/fatedier/frp/releases

公网、内网服务器都下载一份。

img

找到第一条,然后下载frp_windwos_amd64.zip这个(amd64是64系统,386是32位系统,现在电脑基本64位了),比如图片上的frp_0.33.0_windows_amd64.zip

2、将frp_0.33.0_windows_amd64.zip解压至任意目录

3、进入解压目录这里所有 frpc 开头的文件都是客户端文件,所以全部删了,我们服务器只需要 frps 开头的文件 img img

4、配置服务端(公网服务器) 我们打开frps.ini(我用的notepad++编辑器,记事本也可以) 注意配置文件不支持注释,请不要把汉字复制进去

[common]
bind_port = 7000           #与客户端绑定的进行通信的端口
vhost_http_port = 6081     #访问客户端web服务自定义的端口号

img

保存然后打开cmd进入当前目录(cmd不会用自行百度),输入:frps.exe -c ./frps.ini,此时会提示网络防火墙安全警告,点允许 img 提示 start frps success则服务启动成功 img 警告:云服务器一定要开放端口,不会开放自行百度,图中的7000是frp绑定的默认端口要打开,另外一个是http(用不到可以删了) img

至此服务端配置完成!

5、配置客户端(内网服务器),首先删掉 frps 开头文件文件,然后再进行配置,编辑 frpc.ini 注意配置文件不支持注释,请不要把汉字复制进去

[common]
server_addr = 155.94.169.143   #公网服务器ip
server_port = 7000            #与服务端bind_port一致

[yclj]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 # 3389是windows的远程连接端口
remote_port = 24567 # 远程服务器端口(自定义)

img 保存然后执行 windows 使用cmd或者powershell进入当前目录,执行

./frpc.exe -c ./frpc.ini

6、访问方式 (1) 远程连接windows bind_post要绑定3389,其他的不行 ip:155.94.169.143:24567 (这个是服务器开放的端口,映射本地的3389)

三、结尾

1.客户端连接服务端提示访问被拒绝,则需要服务端开放防火墙端口(学习的话全开就行了,生产环境除外)。

2.其他功能请阅读 frp 中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md

一:环境需求

一台有公网ip的机器,一台内网的机器(以树莓派为例)

使用软件:nginxfrp

frp软件地址:https://github.com/fatedier/frp

申请自己的域名,并将域名解析到公网ip(可以为三级或四级域名)

二:frp配置

我们首先需要根据自己的机型下载适合的版本,要注意的是服务器与客户端都要使用同一个frp版本

下载地址:https://github.com/fatedier/frp/releases

比如我使用的树莓派是arm系统的,就选择了最新版本的linux_arm版本,下载完成后解压,进入

服务器:

服务器修改的是frps.ini配置文件

 [common]
 bind_port = 7000  # 绑定本机的端口
 vhost_http_port = 7001  #http访问的端口
 subdomail_host = pi.liunaijie.top # 自己的域名
1234

然后后台启动即可:nohup ./frps -c ./frps.ini &

默认日志为nohup.out,可以查看这个文件查看frp是否正常启动

树莓派(或其他内网机器)

客户端修改frpc.ini配置文件

[common]
server_addr = x.x.x.x #公网的ip地址
server_port = 7000 # 服务器开启的端口

[ssh]  # 开启ssh
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 # 远程ssh端口

[web] # web服务
type = http 
local_port = 80 
custom_domains = pi.liunaijie.top  # 我们自己的域名,可以通过这个域名访问这个机器
1234567891011121314

然后后台启动服务nohup ./frpc -c ./frpc.ini &。要注意的是我们要先开启服务器的服务,不然本地是无法开启的。

三:nginx配置

如果按照官网的文档这样就配置完成了,但是我的服务器并不只是作为这个内网穿透的功能,还有其他的功能,并且是通过nginx进行转发,所以还需要配置ningx。

。。。其他设置。。。
server {
          listen 80; #监听http的80端口
          server_name pi.liunaijie.top;  # 这是我们设置的域名
          access_log  logs/pi_liunaijie.log  main; # 记录日志
          location / {
                  proxy_pass http://127.0.0.1:7001; # 转发到我们在frps.ini中设置的vhost_http_port端口
                  proxy_set_header    Host            $host:80;  #不添加这行时访问需要 域名:7001才能访问到内网的机器,如果加了就不再需要后面的端口,直接使用域名访问
                  proxy_set_header    X-Real-IP       $remote_addr;
                  proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
                  proxy_hide_header   X-Powered-By;
          }
  
}
。。。其他设置。。。
123456789101112131415

四:https配置

首先在frps.ini中进行添加https的配置

 [common]
 bind_port = 7000  # 绑定本机的端口
 vhost_http_port = 7001  #http访问的端口
 vhost_https_port = 7002 # https的端口
 subdomail_host = pi.liunaijie.top # 自己的域名
12345

frpc.ini中修改配置

...省略...
type = https 
local_port = 443 
custom_domains = pi.liunaijie.top  # 我们自己的域名,可以通过这个域名访问这个机器
1234

然后开启服务我们可以通过我们设置的域名加端口进行访问,例如以我上面的配置就需要https://pi.liunaijie.top:7002来进行访问。但是我不想使用后面的端口所以又进行修改了nginx的配置文件

...省略...
server {
	listen 443 ssl;
	server_name pi.liunaijie.top;
	charset utf-8;
	ssl_certificate /usr/local/nginx/cert/pi.liunaijie.top.pem;
	ssl_certificate_key /usr/local/nginx/cert/pi.liunaijie.top.key;
	access_log  logs/pi_liunaijie.log  main;
	location / {
		resolver 8.8.8.8;
		proxy_ssl_server_name on;
		proxy_pass https://$host:7002;
		proxy_set_header    Host            $host:$server_port;
		proxy_set_header    X-Real-IP       $remote_addr;
		proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_hide_header   X-Powered-By;
	}

}

1234567891011121314151617181920
其中有很重要的几条配置,一定要注意,不然还是没法不加端口进行访问
resolver 8.8.8.8; # 这个最重要 不加这个就是502,加了就好了 也不知道是为什么
1

我现在是http与https并存,如果只想使用https可以在nginx的80端口进行跳转

到此我们就完成了通过我们预定义的域名访问在内网中的机器。

全部评论