FRP内网穿透(linux->windows)

使用背景

由于内网环境所在的电脑无法通过公网暴露访问,而使用类似于向日葵等其他代理工具,又存在一定的延迟卡顿。因此,决定待用Frp的内网穿透的功能,来实现借由公网服务器代理访问内网所在的电脑。

原理

frp 主要由 客户端(frpc)服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。

内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。

用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。

官方中文文档:https://gofrp.org/docs/

准备工作

  • 需要有一台带域名的公网服务器(我的是阿里云,如下为小编随机写的ip及域名)
    • 公网服务器IP:123.0.0.1
  • frp 服务端、客户端工具

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

由于我们服务器是linux的系统环境,因此在服务器上下载linux环境64位的包

而连接的客户端是win10的系统,因此在客户端方面下载windows环境64位的包

服务端 Linux 安装

  • 创建frp用户,使用指定用户安装frp服务端
groupadd frp
useradd -g frp -d /home/frp -s /bin/bash -m frp
passwd frp
  • 解压:tar -zxvf frp_0.39.1_linux_amd64.tar.gz
  • 配置服务端(公网服务器),首先删掉frpc、frpc.ini两个文件,然后再进行配置 frps.ini

配置如下

[common]
bind_port = 7000
bind_addr = 0.0.0.0

#客户端连接凭证,自定义且与客户端一致
privilege_token = password

#最大连接数
max_pool_count = 5

bind_udp_port = 7031
kcp_bind_port = 7032

#配置http代理端口,支持公网环境通过该端口访问web服务(例如:访问客户端内容ip:7001访问内网web服务)
vhost_http_port = 7001
vhost_https_port = 44001
#在公网服务器配备了域名解析的环境下,可以通过该配置项利用域名访问web服务
subdomain_host = remote.test.com

#服务器看板的访问端口
dashboard_port = 7500
dashboard_user = test
dashboard_pwd = test

#日志
enable_prometheus = true
log_file = ./frps.log
log_level = info
log_max_days = 3

token 说明
默认情况下只要知道 FRP 服务端开放的端口,任意 FRP 客户端都可以随意在服务端上注册端口映射,这样对于在公网上的 FRP
服务来说显然不太安全。FRP 提供了身份验证机制来提高 FRP 服务端的安全性。要启用这一特性也很简单,只需在 FRP 服务端和 FRP
客户端的 common 配置中启用 token 参数就行。启用这一特性后,只有 FRP 服务端和 FRP 客户端的 common 配置中的 token 参数一致身份验证才会通过,FRP
客户端才能成功在 FRP 服务端注册端口映射。

  •  启动frp服务

这里我们创建一个sh脚本frp_start.sh,并配置后台启动frp服务

nohup ./frps -c frps.ini &

 创建完成后,运行frp_start.sh

  •  FRP 服务端 Dashboard 监控台

通过 Dashboard 可以方便的查看 FRP 的状态以及代理统计信息展示,要使用这个功能首先需要在 FRP 服务端配置文件中指定 Dashboard 服务使用的端口,网页访问:http://ip:7500

  • 配置服务器入站端口(需登录云服务器配置入站规则)
  •  若开启防火墙,还需通过firewalld命令开启相应端口

客户端 windows 安装

首先,解压windows版本的压缩包,删除frps的相关文件

编辑修改frpc.ini

[common]
server_addr = 公网ip地址
server_port = 7000
#privilege_token需与服务端访问token一致
privilege_token = password
protocol = tcp

# 配置通过公网访问的web服务
[web]
type = http
# 内网本及 ip 
local_ip = 内网ip地址
# 内网要代理的端口,与 nginx 对应,用于监听
local_port = 7001
use_compression = 
use_encryption = 
# 公网域名
custom_domains = remote.test.com


#配置windows远程桌面访问
[RDP]
type = tcp
local_ip = 内网ip地址
local_port = 3389
# 远程连接的端口,即使用ssh连接时需要通过此端口进行连接,注意:需要开启云服务器的该端口
remote_port = 6000

配置完成后,在当前目录进入cmd,执行以下指令

frpc.exe -c frpc.ini

启动成功后,会输出两个代理运行成功的日志信息

 然后便可以通过远程桌面访问内网所在的电脑了,操作方式如下:

win+R,输入mstsc,进入远程桌面连接界面

至此,便可以连接上内网环境的电脑了。

常见问题

在进行远程连接的过程中,可能会出下以下问题:

在出现这个现象时,只需要执行以下操作即可:

  • win+R,输入gpedit.msc
  • 进入计算机配置-> 管理模板 -> Windows组件 -> 远程桌面服务 -> 选择远程桌面会话主机模块->安全->远程(RDP)连接要求使用指定的安全层

  • 修改安全层为已启用,并配置为RDP

 然后重新通过远程桌面就可以访问内网的电脑了

访问过程中,可能存在拒绝访问的情况,这有可能是因为电脑上存在第三方的安全管理的软件进行了拦截。

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值