Unraid 篇二:Unraid使用frp内网穿透为docker应用配置远程访问,实现公网访问
创作立场声明:把最近的对外网访问的研究方案分享出来,针对与Unraid这一个Nas系统平台,和大家探讨交流。
使用Unraid的Nas系统已有一个多月,对其强大的可定制能力以及对虚拟机和docker的各种硬件直通,喜爱不已。在Unraid系统中搭建了各种Docker:FileBrower私有云、Jellyfin媒体中心、typecho博客、MySQL数据库、TransmissionPT下载器、Nginx代理服务器Docker、Lychee相册。其中在Nginx的Docker下实现了我的个人小站、导航页、可道云、归档管理。搭建之后,不满足局域网中使用,便找一套能实现公网访问一些控制页面的方案。
Frp内网穿透是一款非常优秀的局域网穿透软件,其原理是,通过有公网ip的服务器作中转,将数据转递给局域网中的各种服务,实现外网访问局域网中的各种服务。家里没有IPV4公网IP(IPV6有公网ip,但是目前没有折腾),无法使用DDNS的方案,便考虑内网穿透的方式,内网穿透的方式有很对,其中FRP配置简单,有比较好的稳定性和可靠性,因此确定了以FRP为主的内网穿透。在Unraid平台下,实现内网穿透功能的方案:Unraid+OpenWrt旁路由+Frp插件。此方案分为三步:1.unraid下安装原版OPenwrt虚拟系统作为旁路由;2.在OpenWrt里安装中文包和frp插件;3.配置frp;
在上一篇文章里,集中探讨了Unraid下安装Openwrt虚拟机,以及对OpenWrt的初始配置,使其正常访问外网。
在此基础上,本文主要阐述Frp客户端插件的安装,以本地事先搭建的Piwigo相册为例,对frp客户端进行配置,从而实现了对Piwigo相册的外网访问,此方法可扩展到任意本地的docker应用,不仅仅限制于http/https通信协议,也适用于tcp/udp协议的外网远程访问。
必要的准备
1. 参考第一篇文章搭建好OpenWrt虚拟机
2. 下载OpenWrt的frp插件包:百度网盘:re1v
3. 使用工具:WinSCP(如果没有,百度下载一个)
注册免费的Frp服务账号
由于Frp内网穿透需要配合有公网的服务端使用,因此,找一个稳定的frp服务器是很关键的。推荐一家使用过的免费的Frp服务端,作为入门使用。
Sakura Frp 内网穿透 是一家免费提供Frp内网穿透服务的网站,目前处于测试阶段,其下拥有十几个国内和国外的机房,普通用户可以免费创建5条frp隧道,每条拥有10Mbps的上行和10Mbps的下行,也就是平均1M/s多的上传和下载的速度,这带宽只要用来跑视频类,绰绰有余。初始有5g的流量,每天签到随机1~5g。流量用完之后。会限制到4mpbs,而且没有流量限制,跑个网站、图片类的远程访问,稳稳地没问题。 链接此进行注册 Sakura Frp
1. 注册完成之后,登录进去,点击'每日签到'获取流量,点击'创建隧道'来创建一条frp隧道,用于后面使用。
2. 该网站有十几台服务器,由于国内的服务器如果走http或这https的流量(包括Tcp下的http
/Https流量),是需要实名的才能正常使用,而实名需要大概5元的人工费,国外的服务器没有这个限制,不需要实名。因此,建议选择国外的服务器作为初次尝试。考虑到香港和日本的服务器并不稳定,建议使用'俄勒冈'的服务器。
3. 选好服务器之后,接下来按图所示进行配置。其中隧道名称自己任意填写,本文以实现piwigo相册为例,此处填写'MyPiwigo'; 隧道类型有5种,其中TCP的配置最简单,而且Http/Https都是以TCP为基础的,因此TCP隧道适用于常见的大多数服务,例如远程桌面、SSH、访问Unraid的后台管理界面、piwigo相册的界面、OpenWrt软路由的界面等;'本地地址和本地端口'填写的是自己局域网中要访问设备的内网ip和设备的内网端口。例如,本文piwigo相册的内网ip是:192.168.5.101,端口是:80,对应的http访问(如果是https访问,对应的端口是443)。'远程端口'是上一个步骤选的'俄勒冈'的服务器的端口,这个端口是有一个可选的范围:10240~65535,这个端口自己任选,但不能和已有的重复,尽量大一点。本文使用:20485;'绑定域名'不填。如下图所示:
4. 继续配置'高级设置',其中'加密方式和压缩数据'默认;'URL 路由、Host 重写、请求来源'都不填;'访问密码',自己任意输入一段字符串即可,最后点击'完成创建'。如下图所示:
5. 点击'配置文件',选择'俄勒冈'服务器,查看生成好的配置文件,此网页不要关闭,放到一边,后面要用。如下图所示:
至此,注册免费的Frp服务账号及配置隧道完成。
OpenWrt旁路由安装Frp插件
1. 解压之前下载好的frp插件包(百度网盘:re1v)
解压后的frp插件包有一个文件夹和两个'ipk'为后缀的文件。其中两个'ipk'文件是OpenWrt的插件,frp程序包文件夹里是frp的核心程序。两个'ipk'文件中,其中'luci-app-frpc_1.2.1-1_all.ipk'是Frp在OpenWrt的UI管理插件,'luci-i18n-frpc-zh-cn_1.2.1-1_all.ipk'是这个UI插件的中文包。核心程序需要有两类,一类以'amd64'标识,一类以'386'标识;一般来说,intel平台且OpenWrt版本是32位的用'386'标识的frp程序,后面要用。不过具体是哪一种,后面可以尝试。
2. 打开之前创建好的OpenWrt后台管理界面,安装frp插件。在菜单栏依次点击'系统'->'SofeWare'->'Upload Package...'进行手动安装frp插件。
点击'浏览',找到两个'ipk'文件的位置,依次安装这两个'ipk'文件。首先安装'luci-app-frpc_1.2.1-1_all.ipk',点击'install'。遇到下面所提示的错误不同担心,刷新一下页面继续安装。然后安装'luci-i18n-frpc-zh-cn_1.2.1-1_all.ipk'。
3. 然后刷新一下页面,在菜单栏依次点击'服务'->'FRP',出现下图所示:
[提示]如果此处报错,提示:'/usr/lib/lua/luci/dispatcher.lua:938: module 'luci.cbi' not found:'字样,经测试有可能是使用国内源更新Openwrt造成的,建议使用下面更新源恢复到原来的,然后点击'Update Lists...'重新更新。如果还不起作用,建议参考第一篇,重新安装OpenWrt虚拟机,然后不使用国内源!!!(猜测那个国内源是64版本的,而这个Openwrtshi 32版本的,不兼容造成的)
src/gz openwrt_core http://downloads.openwrt.org/releases/19.07.1/targets/x86/generic/packages
src/gz openwrt_base http://downloads.openwrt.org/releases/19.07.1/packages/i386_pentium4/base
src/gz openwrt_luci http://downloads.openwrt.org/releases/19.07.1/packages/i386_pentium4/luci
src/gz openwrt_packages http://downloads.openwrt.org/releases/19.07.1/packages/i386_pentium4/packages
src/gz openwrt_routing http://downloads.openwrt.org/releases/19.07.1/packages/i386_pentium4/routing
src/gz openwrt_telephony http://downloads.openwrt.org/releases/19.07.1/packages/i386_pentium4/telephony
打开刚刚安装'Frp'管理界面,由于在OpenWrt系统的'/usr/bin/'目录下并没有'frpc'的核心程序,会提示'客户端文件无效',因此接下来操作是将核心程序导入到这个路径下。
4. 打开软件'WInSCP', 按下图所示创建一个会话链接。其中'文件协议'选择'SCP','主机ip'填写OpenWrt的ip,'端口'默认22,'用户名'为'root','密码'是OpenWrt的后台登录密码。点击保存然后登录。
5. 在WinSCP找到目录'/usr/bin/', 然后将之前解压的frp核心程序frp_0.31.1_linux_386文件夹里的'frpc'程序复制到'/usr/bin/'下。
返回OpenWrt的Frp的UI管理页面,查看有没有显示出版本号。如果没有显示版本号,尝试解压'frp_0.31.1_linux_amd64.tar.gz', 将其中的'frpc'程序复制到'/usr/bin/'下.
至此OPenWrt中安装frp客户端插件完成。接下来阐述如何配置frp客户端,实现外网访问。
frp客户端插件的配置
1. 打开之前创建'俄勒冈'服务器的frp隧道,生成好的配置文件,放在一边。然后打开OPenWrt中的'服务'->'FRP'->'服务端',点击'添加',按下图所示进行配置:其中,服务器的名字任意,此处为'PiwigoServer'。
按图全部配置之后点击'保存',然后显示如下:
2. 打开OPenWrt中的'服务'->'FRP'->'规则',点击'添加',按下图所示进行配置:其中,'代理名字',点击自定义,然后输入任意字符,按回车确定。未标注红框的按图默认填写。
按图全部配置之后点击'保存',然后显示如下:
4. 打开OPenWrt中的'服务'->'FRP'->'设置',点击'常规选项',按下图进行配置。其中,勾上'已启用',服务端选择之前创建的'PiwigoServer'。最后配置完成之后,点击'保存并应用'。
至此,frp客户端插件的配置完成,接下来进行外网测试吧~
外网访问测试
在浏览器中输入'俄勒冈'服务器:远程端口,本文的地址为:'35.160.49.136:20485',如下图所示:
回车,测试连接情况。
成功了~~~
至此,实现了外网访问本地'piwigo'相册的目的。大家可以尝试其他隧道线路,以及给其他本地的docker应用设置外网访问,只需要在OPenWrt中的frp插件里添加'代理规则'。
值友96
校验提示文案
灬慕容
校验提示文案
番薯杰
校验提示文案
BiN12Ni
校验提示文案
朝天在活
校验提示文案
一弯秋水
校验提示文案
blue小白
校验提示文案
铁茄子
校验提示文案
朝天在活
校验提示文案
BiN12Ni
校验提示文案
番薯杰
校验提示文案
铁茄子
校验提示文案
灬慕容
校验提示文案
blue小白
校验提示文案
一弯秋水
校验提示文案
值友96
校验提示文案