这篇文章上次修改于 356 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
使用反向代理的起因,只是当年一直在用的远程维护工具受限了。
只好自己动手,使用FRP搭建反向代理,远程维护目标电脑了。
FRP中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md
FRP下载地址:https://github.com/fatedier/frp/releases
使用FRP的TCP反向代理方式
服务端部署
我用的是CentOS6.5系统的VPS,下面介绍的是Linux下的部署方法。
Windows下方法更简单,可以参考后面的客户端部署。
下载FRP
下载对应32/64位linux版本的FRP。,放到目录/root/frp下。
编辑服务端配置文件
我因为不太会用Linux上的编辑器,只好用FTP工具连接SSH端口。先下载配置文件,再编辑上传的笨办法,来修改配置文件。
编辑服务端配置文件:frps.ini
[common]
# 绑定端口
bind_port = 9000
# 允许连接的端口
allow_ports = 9001-9050
# 控制台用户名
dashboard_user = user
# 控制台密码
dashboard_pwd = password
# 控制台端口
dashboard_port = 9100
这之后还要设置一下iptables,允许这些端口的外部访问。
设置自启动
编辑文件/etc/rc.d/rc.local文件,添加一行:
nohup /root/frp/frps -c /root/frp/frps.ini >/root/frp/log.txt 2>&1 &
最后重启VPS。
使用浏览器访问控制台(IP:9100),如果可以访问,就表示配置成功了。
客户端部署
客户端的系统是Windows。
下载FRP
下载对应32/64位windows版本的FRP。
编辑配置文件
编辑配置文件:frpc.ini
[common]
# 服务端IP
server_addr = 1.2.3.4
# 服务端端口
server_port = 9000
# 自定义名称 这里用于远程桌面
[mstsc]
# 模式 TCP反向代理
type = tcp
# 客户端端口 这里设置的远程桌面端口3389
local_port = 3389
# 服务端端口
remote_port = 9001
启动FRP客户端
可以用命令行启动,也可以新建一个批处理文件。启动命令:
frpc.exe -c frpc.ini
我用的方式,在frpc.exe的同目录下,创建一个批处理文件,用于启动FRP客户端并隐藏控制台窗口。
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
frpc.exe -c frpc.ini
双击执行该批处理文件,任务管理器里能看到frpc进程就表示成功了。
批处理文件还可以放到启动文件夹下,开机启动。
使用反向代理
启动远程桌面,远程服务端IP+远程端口号(如:1.2.3.4:9001),就可以远程目标电脑了。
使用FRP的STCP方式
直接使用FRP的TCP反向代理的模式。
优点是访客端不用额外运行程序,直接访问即可。
缺点是安全性不高,客户端的远程桌面端口相当于暴露再公网上了。这种方式更适合于发布网站。
并且,服务端需要消耗双倍的流量,所有交互都经过服务端中转。
FRP还提供了STCP的方式,使被控端(后面称为客户端)和主控端(后面称为访客端)可以点对点直接连接。
访客端也需要配置并运行FRP,安全性相对高了一点。
服务端配置
[common]
# 绑定端口
bind_port = 9000
# 允许连接的端口
allow_ports = 9001-9050
# 绑定UDP端口 STCP模式要用到
bind_udp_port = 9051
# 口令密码
token = token
# 控制台用户名
dashboard_user = user
# 控制台密码
dashboard_pwd = password
# 控制台端口
dashboard_port = 9100
# 日志文件
log_file = ./frps.log
# 日志级别
log_level = info
# 日志保存天数
log_max_days = 3
客户端配置
[common]
# 服务端IP
server_addr = 1.2.3.4
# 服务端端口
server_port = 9000
# 口令密码
token = token
# 自定义名称 这里使用内网的远程桌面工具NoMachine
[NoMachine]
# 模式 stcp
type = stcp
# 密码
sk = password
# 本机IP
local_ip = 127.0.0.1
# 绑定端口
local_port = 4000
访客端配置
[common]
# 服务端IP
server_addr = 1.2.3.4
# 服务端端口
server_port = 9000
# 口令密码
token = token
# 自定义名称
[NoMachine_VISITOR]
# 模式 stcp
type = stcp
# 角色 访客端
role = visitor
# 客户端设置的名称
server_name = NoMachine
# 密码
sk = password
# 本机IP
bind_addr = 127.0.0.1
# 绑定端口
bind_port = 4100
其中,server_name和sk要与客户端配置的一致。
使用
使用STCP方式,需要服务端、客户端、访客端的FRP都运行。
客户端可以反代本机端口(如远程桌面端口)或局域网非本机的端口(如远程数据库的IP和端口)。
访客端只要对应软件访问已设定的本机端口就可以了。
没有评论