对于没有公网IP地址,家里又有NAS之类的需要外网访问需求的可以实现的方法虽然有很多种,但是frp内网穿透是比较好的选择。
第一种方法是花生壳:花生壳虽然有免费的,但是免费的带宽只有1M,流量只有1G,而且只能映射两个端口,如果想增加端口,增加流量那也是要花钱的,而且费用也是比较高的。
第二种方法:群晖或者威联通之类自带的DDNS服务,虽然说这个没有端口没有流量的限制,但是速度是个问题。而且很多的黑群晖、黑威联通之类的根本没有办法使用。
第三种方法:这是我在研究内网穿透的时候发现的,那就是frp服务。而且frp这个软件是免费的,但是我在搭建的走了很多弯路,看了很多的文章最终搭建成功,现在将我的历程写下来供大家参考。
搭建frp服务器
这个是我在NAS云论坛里面看到了,别人写的有些地方说的不是很清楚,
相关文件:https://u16883951.ctfile.com/dir/16883951-32175217-2de4e3/
1、frps服务器搭建
下载如下文件,我下载的是0.23.2版本,根据自己的情况下载

解压出来,用winscp将里面frps文件夹拷贝至服务器的\usr\bin\文件夹下面

给frps文件夹赋予0755权限

服务器段代码如下,文本部分我只截取了有用的部分,完整部分我也截图放在下面了。
- [common]
- bind_addr = 0.0.0.0
- # 上面这一行不要修改,就用默认的,我当时看别的文章说改为自己的服务器IP地址,结果一直有问题,这个就用默认的就可以了
- bind_port = 7000
- # 这个是客户端和服务器端连接的端口,根据自己的情况进行修改,记得将服务器的这个端口放行。
- bind_udp_port = 7001
- kcp_bind_port = 7000
- dashboard_addr = 0.0.0.0
- dashboard_port = 7500
- dashboard_user = admin
- dashboard_pwd = admin
- #上面四行是服务器后台的管理地址、端口、账号、用户名,服务地址不用修改,端口、账号、密码根据自己的情况进行修改,记得服务器放行该端口
- log_file = /usr/bin/frps/frps.log
- # 这个是服务器的日子文件存放位置,可以自定义修改
- log_level = info
- log_max_days = 3
- #上面是日志保存的天数,自行修改
- token = 123456
- #这个是客户端和服务器端连接的密码,自行修改
- max_pool_count = 10
- #最大连接池数量,可以修改
- max_ports_per_client = 0
- tcp_mux = true

将解压缩出来的etc文件夹下的启动脚本frps文件用winscp上传至服务器的\etc\init.d\文件夹下面。并赋予0755权限


启动frps服务:在代码环境下输入下列命令:/etc/init.d/frps start,会提示Starting frps success,至此服务器就启动完毕,如果要停止服务器重启服务器,将start更换为stop和restar即可。服务器启动成功后,浏览器地址栏输入服务器ip:后台管理端口号,输入你设置的后台管理账号和密码得到如下界面。

设置服务器开机自启动该服务。有些文章里面写的是使用 chkconfig ,ubuntu新版本中已经没有这个命令,被 sysv-rc-conf替代 ,需要先安装此命令
- apt-get install sysv-rc-conf
将frps服务加入自启动行列
- sysv-rc-conf frps on
在执行上面的命令之前,现在命令行里面进入该服务所在文件夹/etc/init.d/里面再执行,或者这里输入完整的路径
至此服务器就搭建完毕
原作者还加了如何部署SSL证书,感兴趣的可以自己去琢磨一下:http://www.nasyun.com/thread-64353-1-2.html
2、客户端配置
客户端代码如下,文本部分我节选了有用的部分,完整的代码我截图在下面。客户端里面设置的端口记得在服务器里面将端口开放
- [common]
- server_addr = 0.0.0.0
- #这里是你服务器的外网IP地址,自行修改
- server_port = 7000
- #服务器设置的客户端连接端口
- log_file = /usr/local/frpc/var/frpc.log
- #这里是客户端日志存放的位置,这个一定要修改好,最好和你的配置文件在同一个文件夹 ,我当时用的默认的没有修改,导致日志保存失败,一直没有找到连不上的原因
- log_level = info
- log_max_days = 3
- #客户端日志保存类型和天数
- token = 123456
- #服务器连接密码,这个和服务器端的设置一样
- admin_addr = 127.0.0.1
- admin_port = 7400
- admin_user = admin
- admin_pwd = admin
- #以上四行是客户端后台挂历地址、端口、账号、密码,可以不修改
- pool_count = 10
- #连接池数量,和服务器端设置一样
- tcp_mux = true
- login_fail_exit = true
- protocol = tcp
- [dssh]
- type = tcp
- #因为服务器断端的http没有设置,这里连接类型就选择TCP,否则会连不上
- local_ip = 192.168.2.117
- #这里是需要访问服务的设备IP地址
- local_port = 22
- #这里是需要访问服务的设备的端口号
- remote_port = 6022
- #这是外网访问的端口号,服务器IP加这个端口就可以访问了
- subdomain = dssh
- [dsweb]
- type = tcp
- local_ip = 192.168.2.117
- local_port = 5000
- remote_port = 5000
- subdomain = dsweb
- [tpweb]
- type = tcp
- local_ip = 192.168.2.1
- local_port = 80
- remote_port = 6080
- subdomain = tpweb
- #前面两个是我的群晖的访问地址,这个是我的家里的主路由器的访问地址,这样在外面我就可以控制我家里的路由器了。

客户端的配置文件就介绍到这里,现在大家根据自己的情况选择客户端,如果是电脑,在官网下载对应版本https://github.com/fatedier/frp/releases,客户端的版本要和服务器的版本一致,否则有些时候会连接不上,记得 将客户端配置文件和客户端自行文件放在同一个文件夹。如果是群晖可以下载大侠提供的套件,直接安装就可以了。安装好之后,第一次服务是没有办法启动的,因为对位置文件进行修改。群晖利用winscp将配置文件上传至群晖的/volume1/@appstore/frpc/var/文件夹下面,如果你的群晖设置的安装套件的硬盘不同,在前面的硬盘这里可能会有所差别。

启动frpc套件

查看日志,里面有success就是启动成功了,查看服务器的后台管理端,应该显示在线了。
2019/02/16 15:11:50 [I] [service.go:206] login to server success, get run id [3bbe91d590baa750], server udp port [7001]
2019/02/16 15:11:50 [I] [proxy_manager.go:137] [3bbe91d590baa750] proxy added: [bdy ts tpweb dsphoto dssh dsweb rr qnweb]
2019/02/16 15:11:50 [I] [service.go:100] admin server listen on 127.0.0.1:7400
2019/02/16 15:11:50 [W] [control.go:141] [bdy] start proxy success
2019/02/16 15:11:50 [W] [control.go:141] [ts] start proxy success
2019/02/16 15:11:50 [W] [control.go:141] [tpweb] start proxy success
2019/02/16 15:11:50 [W] [control.go:141] [dsphoto] start proxy success
2019/02/16 15:11:50 [W] [control.go:141] [dssh] start proxy success
2019/02/16 15:11:50 [W] [control.go:141] [dsweb] start proxy success
2019/02/16 15:11:50 [W] [control.go:141] [rr] start proxy success
2019/02/16 15:11:50 [W] [control.go:141] [qnweb] start proxy success

至此服务端可客户端的搭建都完成了,希望大家可以举一反三
评论