frp内网 穿透映射使内网svn可外网访问

公司svn目前部署在内网服务器上,现在想在家中也可以使用,因此需要外网访问内网的工具

经过

使用过几个产品:

utools,一个小巧的windows下的工具,内网映射只是它的一个小功能,支持tcp,http等多种映射。

ngrok,比较出名的工具,目前只用过它提供的在线服务,而不是本地部署。

上面两个工具都可以实现此功能,但是速度并不理想,经常卡住,所以就想用自己的服务器部署一个服务。
(除此之外还有花生壳,自己没有用过,但是见其他人用过,是在路由上映射端口什么的,目前是收费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=http://www.likecs.com/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>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgdgzz.html