进入目录中可以看到 frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE 这七个文件
frpc:客户端可执行程序
frpc_full.ini:客户端所有配置项(可以再此文件查看frp的所有的配置项)
frpc.ini:客户端配置项
frps:服务端可执行程序
frps_full.ini:服务端所有配置项(可以再此文件查看frp的所有的配置项)
frps.ini:服务端配置项
LICENSE:许可证
在服务端我们不需要客户端的可执行程序和配置,为了避免误操作,我们可以先删除掉所有客户端的配置
rm -rf frpc frpc_full.ini frpc.ini
接下来可以对服务端配置进行修改。
vi frps.ini
可以看到服务端的默认配置如下:
[common]
bind_port = 7000
默认的配置信息中只有一个绑定端口为7000,意思是我们在外网服务器中绑定7000端口和客户端进行通信。注:端口可以自定义,但是需要客户端和服务端进行统一。阿里云服务器需要在esc管理中配置安全组规则中添加7000端口
接着在服务端使用如下命令启动程序
./frps -c frps.ini
这行命令的意思是根据frps.ini这个配置文件去启动frps
看到外网服务器打印出如下信息,表示启动成功
image
但是这样退出启动控制台程序便中断了。于是我们通常选择后台启动。在linux中使用如下命令进行后台启动。然后运行的日志会输出到当前目录的nohup.log文件中
nohup ./frps -c frps.ini &
以上是外网服务器最基本的一个配置。十分简单
内网服务器SSH环境配置
内网服务器与外网服务器一样,首先将安装包上传到内网服务器的/usr/local/frpc目录下,然后删除掉我们不需要的服务端文件
rm -rf frps frps_full.ini frps.ini
接着修改我们的客户端配置文件frpc.ini
vi frpc.ini
可以看到客户端默认配置如下:
[common]
server_addr = 120.79.17.158
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[common]表示以下配置信息是一些公用配置信息
server_addr是我们服务端即外网服务器的公网访问ip
server_port是我们前面在服务端配置的frps.ini中bind_port中对应的端口。需保持两边一致
[ssh]表示以下配置信息是我们使用ssh连接内网服务器时需要的一些配置信息
type 是连接类型,ssh方式连接就用tcp
local_ip 是本机ip,直接使用127.0.0.1即可
local_port 是本地ssh端口,ssh默认端口为22
remote_port 是外网服务器请求过来的端口 注:阿里云服务器需要在esc管理中配置安全组规则中添加6000端口
了解了如上配置后,我们对配置进行相应的修改。修改为对应的信息后,既可以使用如下命令启动客户端程序
./.frpc -c frpc.ini
这行命令的意思是根据frpc.ini这个配置文件去启动frpc
看到内网服务器打印出如下信息表示启动成功:
启动成功后可以直接通过外网服务器ip加上内网服务器配置的remote_port进行ssh连接
如:
ssh 120.79.17.158 -p 6000
就可以发现我们可以直接通过公网ip登录内网服务器了
外网服务器HTTP配置
通常我们在开发的时候想让别人通过外网可以直接访问到我们的系统,以便于调试和测试,我是在做微信开发的时候需要使用到内网穿透的http服务,于是我们需要在frp中添加http服务的内网穿透配置
在外网服务器的frps.ini中添加http服务配置如下:
[common]
bind_port = 7000
vhost_http_port = 6001
bind_port和之前做ssh时是一个意思。也是为了和客户端建立通信的端口,只需要在之前的配置文件中添加上vhost_http_port = 6001,这个配置意思是让别人在访问我们的服务器6001端口时。frp将http请求转发到内网服务器
服务端的http请求配置到这里就结束了
内网服务器HTTP配置
内网服务器需要在frpc.ini中添加上如下内容:
[web]
type = http
local_port = 80
custom_domains = wannabe.fun
[web]表示我们的配置是一个web服务
type表示我们的请求方式是http方式
local_port表示我们的本地服务端口号为80
custom_domains表示配置为一个已经备案的域名(必填,并且需要域名可用,开始我认为这个不是必须的,于是花了很长时间,),并且域名解析配置为外网服务器ip
以上配置完成后,我们就可以使用wannabe.fun:6001访问到我们部署在内网服务器的80端口的服务了。
下面是在腾讯云服务端的配置和Window10客户端的配置
腾讯云服务端
[root@VM-4-10-centos frp_0.36.2]# ll
total 12892
-rwxrwxr-x 1 lighthouse lighthouse 13172736 Mar 22 15:00 frps
-rw-rw-r-- 1 lighthouse lighthouse 5051 Mar 22 15:02 frps_full.ini
-rw-rw-r-- 1 lighthouse lighthouse 172 Apr 4 19:15 frps.ini
-rw-rw-r-- 1 lighthouse lighthouse 11358 Mar 22 15:02 LICENSE
drwxrwxr-x 2 lighthouse lighthouse 4096 Mar 22 15:02 systemd
frps.ini文件配置:
[common]
bind_port = 7000
dashboard_port = 7001
dashboard_user = admin
dashboard_pwd = admin123
vhost_http_port = 80
privilege_token = 随机一个uuid
bind_port是服务端与客户端之间通信使用的端口号,默认就可以。
token用于验证连接,只有服务端和客户端token相同的时候才能正常访问。
配置supervisor 服务
[root@VM-4-10-centos supervisor]# cat my_service.conf
[program:frp]
directory = /opt/frp_0.36.2
command = /opt/frp_0.36.2/frps -c /opt/frp_0.36.2/frps.ini
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = root ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
stdout_logfile = /var/log/frps_out.log ;日志文件
(base) [root@VM-4-10-centos supervisor]#
Windows10 客户端配置,
将下载的WinSW.NET4.exe 重命名为winsw.exe 和frpc.exe放在同一个文件夹里
[common]
server_addr = 101.101.16.12
server_port = 7000
privilege_token = password123
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7002
custom_domains = 101.101.16.12
winsw.xml
<service>
<id>frp</id>
<name>frp</name>
<description>frp service</description>
<executable>frpc</executable>
<arguments>-c frpc.ini</arguments>
<logmode>reset</logmode>
</service>
image
以管理员的身份cmd到该文件夹下,执行如下命令
首先执行安装:
winsw install
然后启动服务:
winsw start
这样就安装完成了
可以使用Microsoft Remote Desktop 访问远程Windows10。
附:winsw 常用命令
winsw uninstall 卸载服务
winsw start 启动服务
winsw status 查看服务状态
winsw stop 停止服务
winsw restart 重启服务
网友评论