群晖NAS教程(二十四)、利用Docker安装frp进行内网穿透,访问群晖、chevereto图床、worldpress等内网服务器
一、说明
由于在上海几乎每年都会搬家,从而导致我的联通宽带移机有点麻烦,所以想来搞一下内网穿透过渡一下。首先,你要有一台具有公网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:5000 、 http://www.huerpu.cc:7000 、 http://www.huerpu.cc:6391 进行访问啦。
大功告成,enjoy your frp。