热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

frp用于内网穿透的基本配置和使用

frp用于内网穿透的基本配置和使用今天是端午节,先祝端午安康!frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以

frp 用于内网穿透的基本配置和使用

今天是端午节,先祝端午安康!

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

本文就以 配置 frp,使得可以从外网访问内网远程桌面(端口号 3389)为最终目标 展开。使用的公网服务器操作系统为 CentOS 7.6,内网的机器操作系统为 Windows 10。访问 frp 的网站以下载对应操作系统和架构的程序。另外不要忘记在内网机器上设置“允许远程连接”哦。

frps

frp 的服务端,用于部署在公网的服务器上,与内网通信转发流量,下载程序后自带了配置文件 frps.ini

frp 配置文件如下:

[common]
bind_port = 7000
log_file = ./frps.log
token = nihaonihao123123

bind_port 表示监听在服务器本地的端口log_file 表示日志文件位置token 表示密码 (只有在 frpc 中配置相同的密码才能连接该 frps)

配置完成后可以使用 ./frps -c ./frps.ini 启动(如果没有执行权限,可使用 chmod a+x frps赋予其权限后再执行)

注册为 systemctl 服务

首先创建 systemctl 配置文件frps.service

[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
WorkingDirectory=/root/FRP
ExecStart = /root/FRP/frps -c /root/FRP/frps.ini

[Install]
WantedBy = multi-user.target

其中 WorkingDirectoryExecStart 要改为 frps 程序所在的路径。需要注意的是,由于在 frps 的配置文件中 log_file 使用了相对路径,因此需要要指定 WorkingDirectory。

执行如下命令以注册并启动 frps 服务:

cp /PATH_TO_FILE/frps.service /etc/systemd/system
systemctl enable frps
systemctl start frps

可以使用 netstat -lntup | grep 7000 (即 frp 配置文件中设定的端口)查看服务是否成功启动。

至此,服务器端的服务配置完成~

frpc

frp 的客户端,部署在需要穿透出去的内网机器上。启动后会与上面的服务端通信,告诉他该怎么转发我 frpc 的流量(也就是我们要做的配置了)。下载程序后自带了配置文件 frpc.ini(注意与上面的 frps.ini 区分)。

配置如下:

[common]
server_addr = 124.223.177.47
server_port = 7000
log_file = .\\frps.log
token = nihaonihao123123

[LBWNB]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6135

common 项中配置的是服务器端的信息,注意 Linux 和 Windows 下的路径分隔符不同,Windows 下由于 “\” 会转义因此需要两个 “\”

下面的一个项中是自定义的一个名字(不能与其它 frpc 重复),type 表示通信协议类型,local_ip 表示监听内网机器本地的地址(将数据转发到这个地址上),local_port 表示监听内网机器本地的端口号,remote_port告知远程服务器,我这个 frpc 要通过(服务器上的)这个端口与外界通信,请它在服务器上监听。

配置完成后可以使用 ./frpc -c ./frpc.ini 启动。

注册为 Windows 服务

起初使用了 sc create,不仅没有服务描述,还总是启动失败。感觉这个命令似乎有点过于简单,甚至有点过时了。后改用 WinSW。

WinSW 的配置文件命名比较奇怪。需要与可执行文件名一致,如我的 exe 文件为 WinSW-x64.exe,配置文件名就一定要为 WinSW-x64.xml。好处似乎是,可以将 WinSW-x64.exe 随意命名,如 NiHao.exe ,配置文件名为 NiHao.xml 即可。
本来以为第二个参数可以任意指定配置文件的名称,尝试了数次。最后参考了WinSW配置文件的官方文档,第二个参数为 path,只是路径,不是文件名,好吧。

将配置文件改为如下(自行替换为实际路径):


  my_frpc
  frpC
  frp 客户端程序,用于映射至外网
  C:\MY\PATH\TO\frpc\frpc.exe
  -c frpc.ini

似乎无需显式指定工作路径也可以正常打印日志,如需指定,可以使用 标签

执行一下 install 和 start 命令即可注册和启动 frpc 服务。

.\WinSW-x64.exe install
.\WinSW-x64.exe start

对应的,停止和删除可以执行 stop, uninstall。

可以使用 ```netstat -ano | findstr 7000`` 检查是否与服务端建立了连接(Linux 和 Windows 下的 netstat 参数也不太相同)。

至此,服务器端的服务配置完成~ 此时可以使用 远程桌面应用 在 互联网***问内网机器了。

后记

nssm 似乎也可以用来方便地注册 Windows 服务,没有尝试,可以参考文章:注册frpc为windows服务,可在未登录用户时启动、将frpc注册成windows系统服务。

可以在微软的远程桌面客户端页面对应跳转下载。居然还有 Android 或 IOS 的远程桌面应用,在紧急情况下用用吧QAQ。

没想到的是,周末刚刚部署好,现在就用上了——突然通知线上有个样式的问题。心想直接用这个试试吧。结果还是有点卡的(服务器带宽为6M,像是当前网络的问题)。直接远程写代码还是够呛,而且很多图标背景还是黑色,估计是文件资源管理器 explorer.exe 的bug了。最后在本地下载代码写好后,拷贝到远程再编译发布。最为诡异的是,我第二天回到公司打开电脑,右下角的图标还是模模糊糊的,就像前一天弱网环境下远程一样0.0。

后来尝试在网络环境较好的时候,体验还是不错的。

参考

frp中文站

windows下基于frp的内网穿透部署

frp 内网穿透远程桌面(Windows 10)配置

WINDOWS将FRP设置为服务并开机自启

如何在线下载Google Play里面的应用

apkpure(用于下载 Google Play 的 Android 应用)


推荐阅读
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
author-avatar
何cecilio
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有