群晖NAS教程(二十四)、利用Docker安装frp进行内网穿透,访问群晖、chevereto图床等内网服务器

勤奋的凯尔森同学下班买菜

一、说明

由于在上海几乎每年都会搬家,从而导致我的联通宽带移机有点麻烦,所以想来搞一下内网穿透过渡一下。首先,你要有一台具有公网IP的服务器,比如阿里云、腾讯云等,我这里的是阿里云,使用的Ubuntu OS。为了更方便的访问还需要一个自己名下的一个域名。

frp分为服务端和客户端,二者通信进而通过公网设备进行转发到内网设备。比如公网IP+端口号的例子http://106.15.61.243:5000/,来自互联网的请求请求这台公网IP的地址,这台frps云主机就会解析到一台frpc客户端的机器上,frpc是安放在内网设备中的客户端,从而frpc把这个请求转发到对应的内网设备中。

           

           

二、frp文件下载

frp的下载地址如下:https://github.com/fatedier/frp/releases。因为我们的是Ubuntu系统,所以下载frp_0.47.0_linux_amd64.tar.gz这个。frp使用说明见https://github.com/fatedier/frp/tree/master

三、云服务器上安装frps

使用MobaXterm或者类似的ssh软件登录云服务器。把刚刚下载下来的frp文件上传到云服务器,或者在云服务器上使用wget获得也可以。

#解压文件            tar -xvf frp_0.47.0_linux_amd64.tar.gz                       #修改文件名            mv frp_0.47.0_linux_amd64/ frp/                       #进入frp目录            cd frp                       #查看目录            ll            root@iZuf6hx0enix3k8f5o337pZ:~/frp# ll            total 27900            drwxr-xr-x 2 1001 docker     4096 Feb 10 01:23 ./            drwx------ 9 root root       4096 Mar  5 13:20 ../            -rwxr-xr-x 1 1001 docker 12668928 Feb 10 01:18 frpc*            -rw-r--r-- 1 1001 docker    11345 Feb 10 01:23 frpc_full.ini            -rw-r--r-- 1 1001 docker      126 Feb 10 01:23 frpc.ini            -rwxr-xr-x 1 1001 docker 15851520 Feb 10 01:18 frps*            -rw-r--r-- 1 1001 docker     5907 Feb 10 01:23 frps_full.ini            -rw-r--r-- 1 1001 docker       49 Mar  1 15:00 frps.ini            -rw-r--r-- 1 1001 docker    11358 Feb 10 01:23 LICENSE            root@iZuf6hx0enix3k8f5o337pZ:~/frp#

frps.ini这个是frps服务端的配置文件,frpc.ini这个是frpc客户端的配置文件。现在我们先来修改frps.ini,修改为下面内容。token为密码,可根据自身情况进行更改。

#编辑文件            vim frps.ini                       [common]            bind_port = 2000            token = aliyunhep            #然后esc退出并保存                       #运行frps            nohup ./frps -c frps.ini >/dev/null 2>&1 &

四、阿里云服务器开放端口

这里开放2000、5000、7000、6391四个端口,2000用户frps和frpc进行通信,其余三个映射到我们对于的内网服务器,后面用。入方向和出方向都开放一下端口。

五、群晖docker安装frpc客户端

在docker注册表搜索chenhw2/frp,点击下载。

在映像中点击chenhw2/frp运行。

使用与Docker Host相同的网络。

容器名称随意,高级设置中,把环境变量ARGS改为frpc,代表客户端。

在群晖中提前准备好frpc.ini文件,文件内容如下:

[common]            server_addr = 106.15.61.243            server_port = 2000            token = aliyunhep                       [DS918]            type = tcp            local_ip = 127.0.0.1            local_port = 5000            remote_port = 5000                       [chevereto]            type = tcp            local_ip = 127.0.0.1            local_port = 6391            remote_port = 6391                       [wordpress]            type = tcp            local_ip = 127.0.0.1            local_port = 7000            remote_port = 7000

server_addr对应于云服务器的公网IP,server_port为设置的与frps的通信端口号。

items

explain

[DS918]

名称

type = tcp

连接类型

local_ip = 127.0.0.1

局域网ip,这里对应群晖的本地地址

local_port = 5000

本地端口,这里是群晖DSM端口

remote_port = 5000

外部端口,对应于云服务暴露外网的端口

把frpc.ini映射到docker容器,映射到容器的路径为/frp/frpc.ini。

完成即可。

六、外网访问群晖DSM

浏览器输入http://106.15.61.243:5000进行访问

chereveto也可以访问的,地址为http://106.15.61.243:6391/

如果在另外一个局域网中的设备也想加入到frp,那就在那个局域网安装一个frpc进行设置即可,这样就可以把多个不同地方的局域网都连接到frp中了。

七、域名访问

在域名解析中添加一条A类型的记录,记录值为云服务器公网IP地址。

把上面配置文件server_addr = 106.15.61.243改为server_addr = www.huerpu.cc,然后重启frps和frpc服务。

然后就可以通过http://www.huerpu.cc:5000http://www.huerpu.cc:7000http://www.huerpu.cc:6391进行访问啦。

大功告成,enjoy your frp。