frp内网 穿透映射使内网svn可外网访问
起因
公司svn目前部署在内网服务器上,现在想在家中也可以使用,因此需要外网访问内网的工具
经过
使用过几个产品:
上面两个工具都可以实现此功能,但是速度并不理想,经常卡住,所以就想用自己的服务器部署一个服务。
(除此之外还有花生壳,自己没有用过,但是见其他人用过,是在路由上映射端口什么的,目前是收费6元,速度貌似还可以)
frp
在搜索的途中经常看到有人提到frp,所以就直接选了frp来部署,github地址,作者貌似是国人,有中文文档。
部署准备
- 需要有一个带固定IP的服务器,用来服务端部署
- 如果想用域名访问的话,还需要准备一个域名,指向上方的服务端服务器。
- 从github中release中下载即可,写文章时,作者刚release一个新版本v0.23.0,linux和windows下载amd64(64位)或者386(32位),貌似还支持嵌入式arm版本什么的。
- 下载解压后主要有frps(服务端)和frpc(客户端)两种,可以根据教程进行部署了。
开始部署
目前服务器端用的linux,而客户端用的是windows,两者配置和命令基本一致:
服务端用到的是frps,修改frps.ini文件
[common]
#服务端绑定端口
bind_port = 7000
#服务端token
token = xxxxxx
#服务端设置https访问端口
vhost_https_port = 7000
token为服务端token,客户端需要与此一致,由于svn开的是8443https访问,所以当需要域名时则需要设置vhost_https_port(如果不用域名,此行可省略,或者用http的话就需要vhost_http_port参数)
客户端用到的是frpc,修改frpc.ini文件
- 用域名
[common]
#服务端IP
server_addr = xx.xx.xx.xx
#服务端端口
server_port = 7000
#与服务端token一致
token = xxxxxx
[svn]
#由于svn用的是https访问,这里设置为https
type = https
#由于svn的端口是8443,这里设置为8443
local_port = 8443
#此为绑定的域名
custom_domains = example.com
此时svn访问地址为:https://example.com:7000/svn/项目名称 ,需要注意的是7000是vhost_https_port代表的地址,它可以bind_port同用一个,所以为了少开放端口就用了一个。
- 用IP
[common]
#服务端IP
server_addr = xx.xx.xx.xx
#服务端端口
server_port = 7000
#与服务端token一致
token =xxxxxx
[svn]
#用IP访问所以设置为tcp
type = tcp
#由于svn的端口是8443,这里设置为8443
local_port = 8443
#此为绑定的域名端口,地址中是要带此端口而不是上方的7000端口
remote_port = 9000
此时svn访问地址为:https://xx.xx.xx.xx:9000/svn/项目名称
- 用域名
以上的配置仅仅是简单的配置,更多功能请查看官方文档,服务端启动命令就是在此目录下./frps -c ./frps.ini
,客户端同理./frpc -c ./frpc.ini
,都启动后,在家中的机器中直接checkout项目,输入上方的svn访问地址即可下载。
**特别需要要注意的是,请开放上述涉及到的7000端口,如果用IP,则还需要开放9000端口,否则checkout会卡住超时。
**
优化 后台执行
通过上方部署后,已经可以正常访问了,但是命令只能前台运行,所以我们需要将其部署到后台运行,否则太麻烦而且容易不小心关闭。分为linux和windows两平台。
linux端
由于是centos7,所以通过systemctl来后台运行:[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target [Service]
Type=simple
#这里是和上方的命令一致的,请按照自己的实际路径修改,如果你客户端是在linux中,将frps改为frpc即可
ExecStart=/home/xxx/frp/frp_0.22.0_linux_amd64/frps -c /home/xxx/frp/frp_0.22.0_linux_amd64/frps.ini [Install]
WantedBy=multi-user.target
此时通过
systemctl start frps
即可启动服务端,更多的命名请搜索systemctl相关用法。windows端
我这边采用的是WinSW来部署服务,安装步骤:- release中下载WinSW.NET4.exe和sample-minimal.xml这两个(电脑中有.net4.0所以选的4版本的),放到同一目录中。
- 将sample-minimal.xml修改为WinSW.NET4.xml,当然也可以将两个都改简短一些,但需要同名才行。
- 配置WinSW.NET4.xml如下:
<configuration>
<!--服务ID-->
<id>frpc</id>
<!-- 服务名称 -->
<name>frp Client (powered by WinSW)</name>
<!-- 服务描述 -->
<description>frp内网穿透客户端</description> <!-- 路径,请按照自己的路径配置,如果服务端在windows中,将frpc改为frps即可,%BASE%就是当前文件位置 -->
<executable>%BASE%\frp\frpc.exe</executable>
<arguments>-c %BASE%\frp\frpc.ini</arguments> </configuration>
- 用管理员权限运行cmd窗口,切换到WinSW文件所在的目录下,运行
WinSW.NET4 install
,即可生成服务,可以在管理工具-服务
中找到此服务,如果出错,也会在当前目录下生成错误日志,对照排查即可。
此时运行
WinSW.NET4 start
启动客户端服务,也可直接在管理工具-服务
中启动,更多的命令请搜索WinSW相关功能。
更多的后台运行方式可在frp项目issue中检索相关关键字。
结束
以上就是frp部署的全过程,测试使用还是挺快挺稳定的。
好久没写,发现默认编辑器变为markdown的了,但是没有预览功能还是挺蛋疼的,只能保存后查看。
frp内网 穿透映射使内网svn可外网访问的更多相关文章
- 内网穿透神器ngrok——将本地项目驾到外网
相信做Web开发的同学们,经常会遇到需要将本地部署的Web应用能够让公网环境直接访问到的情况,例如微信应用调试.支付宝接口调试等.这个时候,一个叫ngrok的神器可能会帮到你,它提供了一个能够在公网安 ...
- svn设置外网访问
1.设置路由器 默认协议为:https 端口号:443 服务器地址:https://主机名/svn/版本库 例:https://mleo-pc/svn/Share/ 也可就主机名用IP地址代替 如:h ...
- 基于frp的内网穿透实例4-为本地的web服务实现HTTPS访问
原文地址:https://wuter.cn/1932.html/ 一.想要实现的功能 目前已经实现将本地的web服务暴露到公网,现想要实现https访问.(前提:已经有相应的证书文件,如果没有就去申请 ...
- C#:使用UPnP来穿透NAT使内网接口对外网可见
在写完Object 672后,软件的一个致命问题暴露出来,如果服务器和客户端都在内网环境下,即双方都通过NAT来接触外网,那么此时客户端是无法直接和服务器交流的. 解决方案可以是: 1:把服务器部署在 ...
- udp内网穿透 两个内网互联
1,在有外网ip的机器上启动server. package udp; import java.net.DatagramPacket; import java.net.InetSocketAddress ...
- SVN搭建外网远程访问
准备条件 SVN服务器安装及配置 SVN服务端,客户端安装配置可以参考:http://www.cnblogs.com/mq0036/p/5250198.html 花生壳客户端下载,安装,注册(内网穿透 ...
- svn的外网设置访问方法
一.花生壳 1. 设置静态ip 选择 DHCP服务器 -> 静态地址分配,为内网内的机器分配静态ip 2.设置端口转发 选择 转发规则 -> 虚拟服务器,将外网对443端口的访问转发到安装 ...
- 阿里云ECS搭建SVN配置外网
阿里云ECS搭建SVN后,配置外网启动不了,检查云服务器没发现问题,后来发现是阿里云拦截,需要在阿里云控制台ECS安全组新增如下配置:
- Aliyun搭建svn服务器外网访问报错权限配置失败错误
搭建完后所有的配置如下 [root@iZuf655czz7lmtn8v15tsjZ conf]# pwd /home/SVN/conf [root@iZuf655czz7lmtn8v15tsjZ co ...
随机推荐
- 解决MyEclipse注册失败的问题
https://jingyan.baidu.com/article/acf728fd49519ff8e410a361.html
- Spring Cloud分布式微服务系统中利用redssion实现分布式锁
在非分布式系统中要实现锁的机制很简单,利用java.util.concurrent.locks包下的Lock和关键字synchronized都可以实现.但是在分布式系统中,如何实现各个单独的微服务需要 ...
- elasticSearch+spring 整合 maven依赖详解
摘自:http://www.mayou18.com/detail/nTxPQSyu.html [Elasticsearch基础]elasticSearch+spring 整合 maven依赖详解 Ma ...
- SSM-SpringMVC-17:SpringMVC中深度剖析HandlerAdapter处理器适配器底层
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先放一张图 很熟悉啊,之前就看过,我们之前已经把handlerMapping剖了个底朝天,顺着上次的进度,继 ...
- SSM-SpringMVC-16:SpringMVC中小论注解式开发之访问方式篇
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 访问方式可以指定,打个比方,你通过get方式进入登陆页面,通过post发送ajax数据库校验或者post提交 ...
- 第八章——降维(Dimensionality Reduction)
机器学习问题可能包含成百上千的特征.特征数量过多,不仅使得训练很耗时,而且难以找到解决方案.这一问题被称为维数灾难(curse of dimensionality).为简化问题,加速训练,就需要降维了 ...
- 分布式定时任务框架——python定时任务框架APScheduler扩展
http://bbs.7boo.org/forum.php?mod=viewthread&tid=14546 如果将定时任务部署在一台服务器上,那么这个定时任务就是整个系统的单点,这台服务器出 ...
- 21.app后端如何高效更新内容
在app的主页或通知栏,经常需要通过api取最新的数据.那么,怎么在这部分上做优化,使获取内容的效率更高呢?在本文中,通过推拉和增量更新,实现了一种高效获取数据的策略. 1.高效更新数据策略在app中 ...
- HTML5 CSS3 专题 :诱人的实例 3D展示商品信息
强化下perspective和transform:translateZ的用法.传统的商品展示或许并不能很好的吸引用户的注意力,但是如果在展示中添加适当的3D元素,~说不定效果不错哈~ 效果图: 说明一 ...
- hibernate关系映射
多对一:比如多个订单对应同一个用户,需要在订单表中添加一个用户的属性 订单类: private Integer orderId; private Date createTime; private Us ...