1.前因后果

1.1弃用ngrok

为节约服务器成本,花了500多块买了一个华为云得1G 1核心 5M得云服务器.然后用ngrok来穿透内网.一直用得还  但是今天在弄nginx得时候发现 ngrok没有带客户请求的真实IP带过来.

看了以下ngrok的源码库,发现2.0以后的版本才支持. 但是2.0已经商用了.github上只有1.0的源码,并且没有维护了

ngrok1 源码地址 https://github.com/inconshreveable/ngrok

1.2选择frp

github地址:https://github.com/fatedier/frp

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。(摘自项目主页)

2.开始在服务端安装frp

2.1下载源码安装

cd /usr/local/src

wget https://github.com/fatedier/frp/releases/download/v0.25.3/frp_0.25.3_linux_amd64.tar.gz

tar -zxvf frp_0..3_linux_amd64.tar.gz

mv frp_0..3_linux_amd64 /usr/local/frp

2.2 目录简单的说明

目录中frps 开始的是服务端用的  frpc是客户端用的。  在服务器端口可以删除frpc开头的目录和文件.不删也可以

2.3编辑服务器端的配置文件

frps_full.info是开发团队提供的一个比较完整的配置示例.(当然也不是全部,最全的是项目文档.有中文文档)

我们这里编辑编辑 frps.ini 就可以了

[common]
bind_port =
vhost_http_port = 

配置很简单吧,来简单说明以下

bind_port:是frp监听客户端请求的端口(服务器和客户端需要通过TCP建立一个连接),需要注意  要在云主机上打开这个端口。否则...  客户端肯定连不上啊vhost_http_port:是http的请求端口,这里使用80端口.否则用户在访问的时候需要加端口.    不加这个参数.客户端也无法使用http服务 

2.4测试启动一下

在frp目录下执行命令: ./frps -c ./frps.ini 来启动服务, -c 是指定配置文件路径

如果看到以下输出,标识服务器已经开始监听.客户端可以开始连接了

[root@ecs-fa43 frp]# ./frps -c ./frps.ini
// :: [I] [service.go:] frps tcp listen on
// :: [I] [service.go:] http service listen on
// :: [I] [root.go:] Start frps success

2.5 添加开机自启动

在2.4中可以在shell中启动服务了,但是如果shell窗口关闭了,服务也就停止了

我们编辑/etc/rc.local  添加如下配置(具体视你的安装路径和配置文件路径而定)

/usr/local/frp/frps -c /usr/local/frp/frps.ini

重启一下服务器,看看7000已经被frp监听了

3.配置客户端

frp 采用go语言编写,但是跨平台的.

我这里内网机器是windows,所以下载windows客户端

3.1 下载windows客户端

下载地址:https://github.com/fatedier/frp/releases   注意版本最好和服务器用的版本一样.

3.2解压并根据业务需要编辑配置文件

按照服务器端的安装套路,frps开头的可以删掉   然后我们还是编辑frpc.ini文件

这里给出一个配置文件示例, 更多的配置可以参考项目文档

[common]
server_addr = 这里是你云服务器的地址
server_port = 

#ssh端口
[ssh50128]
type = tcp
local_ip = 192.168.161.128
local_port =
remote_port = 

[ssh50129]
type = tcp
local_ip = 192.168.161.129
local_port =
remote_port = 

[ssh50200]
type = tcp
local_ip = 192.168.161.200
local_port =
remote_port = 

[ssh50201]
type = tcp
local_ip = 192.168.161.201
local_port =
remote_port = 

[ssh50202]
type = tcp
local_ip = 192.168.161.202
local_port =
remote_port = 

[ssh50220]
type = tcp
local_ip = 192.168.161.220
local_port =
remote_port = 

[ssh50221]
type = tcp
local_ip = 192.168.161.221
local_port =
remote_port = 

[ssh50222]
type = tcp
local_ip = 192.168.161.222
local_port =
remote_port = 

#rabbitmq tcp端口
[tcprabbitmq]
type = tcp
local_ip = 192.168.161.129
local_port =
remote_port =
custom_domains = tcp.domain.site

#web 站点
[webmqweb]
type = http
local_ip = 192.168.161.129
local_port =
use_encryption = false
use_compression = false
custom_domains = a.domain.site

3.3使用nssm 把客户端安装为windows服务

ps:对于不提供windows服务运行的程序都可以这么玩  比如kibana 你也可以这么玩

nssm下载地址:   http://www.nssm.cc/download

 .\nssm.exe install frp

最后具体业务,查看是否能正常运行

4.开发团体提供的项目文档

https://github.com/fatedier/frp/blob/master/README_zh.md

实际上frp,不仅仅提供内网穿透.还支持认证  反向代理等。 具体可以看文档

1.使用frp穿透内网的更多相关文章

  1. frp穿透内网使用vsftpd服务

    本篇文章将会介绍如何使用frp穿透内网以及如何在centos8环境下安装和使用vsftpd,最后在公网通过frp穿透内网使用ftp. 一.内网穿透神器frp frp 是一个专注于内网穿透的高性能的反向 ...

  2. 疫情之下,使用FRP实现内网穿透,远程连接公司电脑进行办公

    当前情况下,经常会有需要到公司电脑进行一些操作,比如连接内网OA,数据库或者提交文档.为了减少外出,将使用frp进行内网穿透的方法进行一个说明. 前提条件 1. 一台拥有公网 IP 的设备(如果没有, ...

  3. frp端口映射穿透内网

    前言 frp 是一个高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务,支持 TCP.UDP.HTTP.HTTPS 等协议类型,并且 web 服务支持根据域名进行路由转发. Github: ...

  4. 基于frp的内网穿透实例4-为本地的web服务实现HTTPS访问

    原文地址:https://wuter.cn/1932.html/ 一.想要实现的功能 目前已经实现将本地的web服务暴露到公网,现想要实现https访问.(前提:已经有相应的证书文件,如果没有就去申请 ...

  5. frp实现内网穿透

    frp实现内网穿透 目标 通过外网访问内网设备,本文中实现通过手机的移动流量,可以访问到树莓派设备 设备准备 需要被访问的设备(本文中使用Raspberry Pi`).公网IP设备(本文中使用阿里云 ...

  6. frp+nginx内网穿透

    frp+nginx内网穿透 背景:自己有台内网Linux主机,希望被外网访问(ssh.http.https): 准备工作 内网Linux主机-c,可以访问c主机和外网的主机-s(windows/lin ...

  7. 使用frp进行内网穿透,实现ssh远程访问Linux服务器

    搭建一个完整的frp服务链需要: VPS一台(也可以是具有公网IP的实体机) 访问目标设备(就是你最终要访问的设备) 简单的Linux基础(如果基于Linux配置的话) 我这里使用了腾讯云服务器作为服 ...

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

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

  9. C#用UPnP穿透内网

    参考了网上的一篇文章,由于时间长了,具体地址不知道了. 引入了一个DLL: Interop.NATUPNPLib.dll,实现穿透局域网,进行Socket通信. using System; using ...

随机推荐

  1. ajax中 XmlHttp的open( )方法

    博客分类:  Ajax XML  open 创建一个新的http请求,并指定此请求的方法.URL以及验证信息 语法 oXMLHttpRequest.open(bstrMethod, bstrUrl, ...

  2. Android Touch 事件总结

    ---恢复内容开始--- 1.Touch事件传递机制 过程有点儿类似于栈, ViewGroup的子类有都继承它的以下3个方法: public boolean dispatchTouchEvent(Mo ...

  3. 对SOA架构思想的一些说明(转)

    出处:http://kb.cnblogs.com/page/510698/ 从纵向到横向 传统业务系统的构建更多的是竖井式的纵向思想,这个主要是从单个业务系统孤立来看都是垂直应用.那么SOA架构的视角 ...

  4. (转)打造一套UI与后台并重.net通用权限管理系统

    原文地址:http://www.cnblogs.com/LRBPMS/p/3425997.html 一.前言 从进行到软件开发这个行业现在已经有几年了,在整理出这个套开发框架之前自己做了不少重复造轮子 ...

  5. toolbox类

    新建Qt  应用,项目名称为“c”,基类选择“QWidget”,取消“创建界面”复选框的选中状态. 添加该工程的提供主要显示界面的函数所在的文件,在“c”项目名上单击鼠标右键,在弹出的快捷菜单中选择“ ...

  6. 正则表达式(javascript)

    在开发过程中要要把一个css中的平移的x,y提取出来 ,正好把正则表达式学习了一下 'fsdfsdfsdf300pxfdsfd200pxfsdfsdf100px'  找出里面 px前面的数字: 经查资 ...

  7. 团体程序设计天梯赛L2-003 月饼 2017-03-22 18:17 42人阅读 评论(0) 收藏

    L2-003. 月饼 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不 ...

  8. 彻底的卸载SQL Server2005

    昨天不小心把SQL Server 2005弄坏了.所以,对彻底卸载他进行了研究.在这里记录一下,嘿嘿~ 1.首先在控制面板中卸载所有与SQL Server 2005相关的程序,要记得最后一个卸载Mic ...

  9. 我眼中的SAML (Security Assertion Markup Language)

    提到SAML (Security Assertion Markup Language), 很多人都会联想到单点登录SSO.那么Saml到底是什么,它跟sso到底有什么联系?这里给大家分享一下我在读完了 ...

  10. 键盘控制背景边框平滑移动(jquery)

    今天同事让我看了一个动画效果,是由键盘控制背景边框平滑移动,我感觉挺cool,所以我自己也动手制作了一个.目的是为了锻炼自己,看自己是否也能在短时间内实现. 先上图: 一.html代码 <!DO ...