内网穿透frp
内网穿透用途列举:
1、你想在家里办公,但需要上公司内网服务器(内网服务器能访问公网,但没有固定公网IP)。
2、公司项目一般上线前都要在内网环境测试,但部分功能需要外网才能完成测试,比如某些接口测试。
用frp工具完成内网穿透有如下要求:
1、需要有个公网服务器,将会在公网服务器上部署frp服务端,搭建完成后你访问的公网地址和端口就是这台服务器的。
2、内网服务器必须具备访问公网的能力,因为它作为frp的客户端,需要与frp服务端进行通信。
内网穿透分为多种,主要包括 TCP,HTTP,UDP。
其中TCP主要用来映射SSH端口,Socks通信端口,没有域名的HTTP服务器端口等。
HTTP主要用来映射有域名的HTTP服务器
UDP主要用来映射DNS查询端口等。
开始操作。。。
服务端部署:
1、下载frp安装包
地址:https://github.com/fatedier/frp/releases
2、安装
mkdir -p /usr/local/frp
cd /usr/local/frp
wget https://github.com/fatedier/frp/releases
tar -xzf frp_0.21.0_linux_amd64.tar.gz
cd frp_0.21.0_linux_amd64
#进入后查看到如下内容,由于是服务端,所以必须将客户端的程序和配置文件删除,不然无法正常使用
rm -rf frpc frpc.ini
客户端部署:
同服务端操作基本一致,只不过作为客户端需要将服务端的启动程序和配置文件删除,不然无法正常使用
rm -rf frps frps.ini
-------------------------------------------------------------------------------------------------------------------------
服务端(配置一)
[common] #服务端本地地址,如果有多个网卡,最好指定一个,若只有一个,如下即可 bind_addr = 0.0.0.0 #服务端和客户端通信端口 bind_port = 7000 #服务器端开放6080端口供外部http方式访问,对应客户端(配置一) vhost_http_port = 6080 #frp后台监控设置(可选) dashboard_port = 7500 #dashboard 用户名密码可选,默认都为 admin dashboard_user = admin dashboard_pwd = admin
前台启动方式命令:./frps -c ./frps.ini
后台启动方式命令:nohup ./frps -c ./frps.ini &
特殊说明:上面配置中vhost_http_port配置项,对应客户端设置域名的web服务(意思是指我们想访问内网服务器的web服务时必须是通过服务端域名www.xxx.com:6080的方式访问,即访问到下面客户端http通信方式的web)
客户端(配置一)
[common] #服务端公网地址 server_addr = 321.123.369.963 #服务器端通信端口 server_port = 7000 #服务命名,不限制命名 [ssh] #指定通信方式 type = tcp #客户端服务器本地地址 local_ip = 127.0.0.1 #指定ssh服务的端口 local_port = 22 #作用是:ssh登陆时用服务端公网地址加6000端口即可访问到客户端服务器 remote_port = 6000 [web] type = http local_port = 80 #http通信方式必须指定服务端的域名,访问方式即:www.xxx.com:6080 就可以访问到客户端的80端口 custom_domains = www.xxx.com [eureka] type = tcp local_ip = 127.0.0.1
#8761是客户端eureka监听端口,访问服务端321.123.369.963加7001端口即可访问到客户端的8761 local_port = 8761 remote_port = 7001
前台启动方式命令:./frpc -c ./frpc.ini
后台启动方式命令:nohup ./frpc -c ./frpc.ini &
-------------------------------------------------------------------------------------------------------------------------------
服务端(配置二)
[common] #服务端本地地址,如果有多个网卡,最好指定一个,若只有一个,如下即可 bind_addr = 0.0.0.0 #服务端和客户端通信端口 bind_port = 7000 #frp后台监控设置(可选) dashboard_port = 7500 #dashboard 用户名密码可选,默认都为 admin dashboard_user = admin dashboard_pwd = admin
前台启动方式命令:./frps -c ./frps.ini
后台启动方式命令:nohup ./frps -c ./frps.ini &
客户端(配置二)
[common] server_addr = 321.123.369.963 server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 [web] #与配置一不同的地方的是此处使用了tcp方式来访问web,主要是针对没有公网域名的方式时。 type = tcp local_port = 80 local_ip = 127.0.0.1 remote_port = 6080 [eureka] type = tcp local_ip = 127.0.0.1 local_port = 8761
前台启动方式命令:./frpc -c ./frpc.ini
后台启动方式命令:nohup ./frpc -c ./frpc.ini &
回头再看,配置一和配置二差异:
相同处:TCP通信方式的穿透设置都一样
不同处:
配置一:此配置访问web服务时,主要针对公网有可用域名,服务端配置了vhost_http_port = 6080这一项,
访问web时需要www.xxx.com(一、二级域名都可);
配置二:此配置访问web服务时,主要针对公网无可用域名,服务端配置少了vhost_http_port =这一项(其实
有也会被无视掉,但不影响使用),客户端配置是将web作为tcp方式请求。
再一个特殊说明:
所有需要对外提供访问的服务端口都记得开放防火墙或安全组(客户端不用说和服务端一定要记得)