frp 用于内网穿透的基本配置和使用
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
其中 WorkingDirectory 和 ExecStart 要改为 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,只是路径,不是文件名,好吧。
将配置文件改为如下(自行替换为实际路径):
<service>
<id>my_frpc</id>
<name>frpC</name>
<description>frp 客户端程序,用于映射至外网</description>
<executable>C:\MY\PATH\TO\frpc\frpc.exe</executable>
<arguments>-c frpc.ini</arguments>
</service>
似乎无需显式指定工作路径也可以正常打印日志,如需指定,可以使用 <workingdirectory> 标签。
执行一下 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。
后来尝试在网络环境较好的时候,体验还是不错的。
参考
apkpure(用于下载 Google Play 的 Android 应用)
frp 用于内网穿透的基本配置和使用的更多相关文章
- 使用FRP做内网穿透
Github地址:https://github.com/fatedier/frp 什么是FRP? frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 h ...
- 使用frp进行内网穿透,实现ssh远程访问Linux服务器
搭建一个完整的frp服务链需要: VPS一台(也可以是具有公网IP的实体机) 访问目标设备(就是你最终要访问的设备) 简单的Linux基础(如果基于Linux配置的话) 我这里使用了腾讯云服务器作为服 ...
- 疫情之下,使用FRP实现内网穿透,远程连接公司电脑进行办公
当前情况下,经常会有需要到公司电脑进行一些操作,比如连接内网OA,数据库或者提交文档.为了减少外出,将使用frp进行内网穿透的方法进行一个说明. 前提条件 1. 一台拥有公网 IP 的设备(如果没有, ...
- 基于frp的内网穿透实例4-为本地的web服务实现HTTPS访问
原文地址:https://wuter.cn/1932.html/ 一.想要实现的功能 目前已经实现将本地的web服务暴露到公网,现想要实现https访问.(前提:已经有相应的证书文件,如果没有就去申请 ...
- frp实现内网穿透
frp实现内网穿透 目标 通过外网访问内网设备,本文中实现通过手机的移动流量,可以访问到树莓派设备 设备准备 需要被访问的设备(本文中使用Raspberry Pi`).公网IP设备(本文中使用阿里云 ...
- frp+nginx内网穿透
frp+nginx内网穿透 背景:自己有台内网Linux主机,希望被外网访问(ssh.http.https): 准备工作 内网Linux主机-c,可以访问c主机和外网的主机-s(windows/lin ...
- 如何使用 frp 实现内网穿透
这有一个专注Gopher技术成长的开源项目「go home」 背景 作为一名程序员,家里多多少少会有一些落了灰的电脑,如果把闲置的电脑变成服务器,不仅有良好的配置,还能用来做各种测试,那就再好不过了. ...
- 分享下超实用的用skura frp做内网穿透的经验
操作目的: 使无公网ip的主机能被外网访问,实现ssh对服务器的远程管理 硬件准备: 1.服务端:skura frp主机(skura frp 免费提供,有待创建) 2.客户端:接在无线路由器(内网)上 ...
- 基于frp的内网穿透实例1-通过SSH访问内网机器
原文地址:https://wuter.cn/1804.html/ 老母鸡终于到了,作为一个能运行linux系统的四核1G硬件,它还是比较小巧的. FRP 全名:Fast Reverse Proxy.F ...
随机推荐
- UML与面向对象程序设计原则
[实验任务一]:UML复习 阅读教材第一章复习UML,回答下述问题: 面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明. 1. 关联关系 (1) 双向关联 (2) 单向关联 (3) ...
- java中Array(数组)的用法
8.Array(数组) 数组是作为对象来实现的.(really occupy the memopry,真实的占用内存 ) An array is a data structure that st ...
- sql server总结二
一些常用查询 Insert into 表(字段一,字段二,字段三,---) values(插入一,插入二,插入三,----) Update 表 set 字段= where 字段= Delete fro ...
- vue 多级组件数据传递
A包含B组件,B包含C组件 那么A 传递到C 组件可以通过 在B组件中绑定 $attrs 具体代码可以参见github: https://github.com/qiaoqiao10001/vueA ...
- JavaScript学习总结5-作用域
由于所有的全局变量都会绑定到window上,如果不同的JS文件,使用了相同的全局变量,会造成冲突,可以把自己的代码全部放入及定义的唯一空间中,减少全局命名冲突问题
- Vuecli版本调整
1.当前版本号查看 1.Windows+R打开命令提示符2.输入cmd3.vue --version或者vue -V(大写V) 2.版本操作 安装指定版本 情况一:目前处于3.0及以上 版本查看和卸载 ...
- Metalama简介3.自定义.NET项目中的代码分析
本系列其它文章 使用基于Roslyn的编译时AOP框架来解决.NET项目的代码复用问题 Metalama简介1. 不止是一个.NET跨平台的编译时AOP框架 Metalama简介2.利用Aspect在 ...
- 2021.08.03 BZOJ 疯狂的馒头(并查集)
2021.08.03 BZOJ 疯狂的馒头(并查集) 疯狂的馒头 - 题目 - 黑暗爆炸OJ (darkbzoj.tk) 重点: 1.并查集的神奇运用 2.离线化 题意: 给一个长为n的序列,进行m次 ...
- MATLAB R2019b超详细安装教程(附完整安装文件)
摘要:本文详细介绍Matlab的安装步骤,为方便安装这里提供了完整安装文件的百度网盘下载链接供大家使用.从文件下载到证书安装本文都给出了每个步骤的截图,按照图示进行即可轻松完成安装使用.本文目录如首页 ...
- -5.C++读入一行字符串
-5.C++读入一行字符串 cin.getline(char * str, int size_t, char delim) 头文件: #include<iostream> 参数1:字符数组 ...