杰者的备忘录

当前位置:   网站首页 >> 服务器

搭建frp反代国内服务器实现免备案节点的详细步骤

最近境外的服务器真是越来越不稳定了,无论搬瓦工、还是阿里云香港还是各种CN2各种中国直连各种亚洲优化线路,都是想抽风就抽风的状态。于是计划逐步把大部分网站服务器迁回国内。回到国内就不得不面对一个问题,那就是备案。有条件备案的自然问题不大,可是还是有一堆网站各种各样的原因没法备案啊。于是我计划把所有网站的后端服务器全部放腾讯云广州,只留一台阿里云香港在外面作为免备案的反代节点。由于腾讯云对所有端口都有备案检测,所以以往把网站后端服务器改成非80端口,前端服务器直接进行反代的做法行不通。只能先把两台服务器组成一个虚拟内网再反代了(这样两台服务器之间通讯的数据就是加密的,腾讯云就没法拦截了)。在看了ngrok、frp、n2n三种方式以后,选了最简单而且目前还有在更新的frp。


我的成本帐这么算,买几台境外低配的机器,成本高还老抽风,有时候想改点什么,遇到抽风真郁闷。
赶双12活动直接买腾讯云2核4G的机器加50G数据盘找代理拿85折一次性买三年才1500左右。再年付个低配的阿里云香港一年也就几百块。
国内机器正常不会抽风,即使抽风也就是访问慢了点,其他的不会受影响。frp应对网络不稳定的情况也还行(有自动重连机制),省事又省钱。就这么决定了。


虽然frp有中文文档
https://github.com/fatedier/frp/blob/master/README_zh.md
但是其实我看不太懂他在写什么,至少看完文档我还是晕乎乎的,找了两台测试服务器开始折腾吧。

frp的服务端是frps

客户端是frpc,

都同时支持windows跟linux,文件结构跟执行的命令也都一样。
我计划的模式是前端用centos  后端用windows

先下载需要的文件吧

https://github.com/fatedier/frp/releases
下载frp_0.14.0_linux_amd64.tar.gz 跟 frp_0.14.0_windows_amd64.zip


1、linux部分

解压缩tar包

用文本编辑器修改frps.ini

[common]
bind_port = 7000
[common]
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin


这份配置文件的意思是开放7000端口作为frps服务端端口,开放7500端口作为frps可以通过浏览器访问http://ip:7500/ 查看 frp 的状态以及代理统计信息展示。用户名密码,默认都为 admin
如果不需要这个,可以把[common]还有下面那些都删了。


把frps跟frps.ini两个文件传到centos服务器上的/root/frp/目录。
frps需要给执行权限。
然后防火墙需要开放7000跟7500端口。
然后通过ssh登录到服务器上

cd frp


进入frp目录,执行

./frps -c ./frps.ini


如果显示一堆蓝色的字符里面有 Start frps success 说明frps启动成功了。

 

2、windows部分

解压缩zip包

用文本编辑器修改frpc.ini

[common]
server_addr = 0.0.0.0 #这里要改成frps服务器的IP地址
server_port = 7000
[web1]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8080

这份配置文件的意思是通过7000端口连接到frps服务器,节点名web1通过tcp协议绑定本地IP的80端口到frps服务器的8080端口上。
(如果你有多台服务器作为frpc服务器的话,节点名称跟remote_port要改成不同的)。

然后把frpc.exe跟frpc.ini两个文件传到windows服务器上的D:\soft\frp\目录。
双击frpc.exe运行。

如果显示一堆字符里面有 start proxy success 说明frpc也启动成功了。


3、弄成服务开机启动

frps跟frpc都启动成功了,但是毕竟是服务器,这样按照默认的方式启动总不是事,得弄成服务实现开机启动才行。官方文档没有说到这方面的。于是就自己折腾了。

 

下载脚本并解压

frp_service.rar

 

linux部分:

把frps.sh传到centos服务器的/root/frp/目录,

给执行权限。
然后

./frps.sh

提示success就是成功了。重启一下机器。
等机器重启好,通过浏览器访问http://ip:7500/ 能通过第一步配置的用户名密码登录进去就是OK了。


注:平时可以通过这些命令
service frps start 启动服务
service frps stop 停止服务
service frps status 查看FRP工作状态


windows部分:

把frp弄成服务是利用Windows Service Wrapper来实现的,也就是winsw-1.9-bin
把frpc-service.exe 跟 frpc-service.xml 传到windows服务器上的D:\soft\frp\目录。
(如果你把frpc放在其他目录了,记得修改xml文件里的路径)
2003的直接打开CMD就行,2008以上的,直接在右下角开始菜单的图标上右键打开“命令行提示符(管理员)”
输入

D:\soft\frp\frpc-service.exe install

把frpc安装成服务。
去服务里手动启动frpc或者执行

frpc-service.exe start

启动服务都行。
(如果哪天要卸载frpc了,执行frpc-service.exe uninstall即可)

 

启动好centos跟windows的服务以后,点开刚才打开的浏览器里左边菜单Proxies的TCP,应该是可以正常看到frpc服务器已经连上来了。显示绿色的online。


4、反代
我的后端windows服务器已经有iis了,在服务器上的ie访问80端口也是可以正常访问到网站的。因为网站未备案所以在外网访问出现了备案拦截提示页面。
我的前端centos服务器已经有nginx了。在nginx添加一个站点用80端口反代127.0.0.1:8080。把域名解析到centos服务器的IP上。
访问域名就可以正常访问到windows上未备案的站点了。

 

至此折腾完毕。当然根据实际情况,你也可以反着来或者全部windows跟全部liunx都行。

 

网友评论3

  1. 来宾2018-05-03 09:18:07 回复

    请问,香港服务器想要解析到国内动态公网IP的话,可以参考你这个方法么?

    1. 林唯心2018-06-28 17:03:56 回复

      香港是固定的,国内的动态 frpc 链接端口链接 香港就好了。

  1. 孤江2019-01-07 20:29:01 回复

    是否可以利用FRP实现用香港服务器的不同二级域名访问不同端口?

发表我的评论

Hi,您需要填写昵称和邮箱!

  • 必填项