黑群晖NAS无公网IP实现内网穿透

啃啃啃啃啃啃 2019-07-23 13:27:49

最近帮基友五喷子弄了台N54L,用于安装黑群晖。考虑到基友住的地方光猫获取不到管理员账号无法配置端口转发,而且也没办法改桥接。网上搜索了下决定使用frp实现内网穿透,理论上此方法可以用于转发任何服务。

准备工作

  • 一台有公网 IP 的服务器 (VPS、云主机),我是用自己的NAS(有公网IP)做测试的。
  • NAS (客户端)HP N54L

服务器端配置:

先从frp的github页面上下载适合你的版本,https://github.com/fatedier/frp/releases,我这里用的是 frp_0.27.1_linux_amd64.tar.gz

#从github上下载程序 root@lin:~# wget https://github.com/fatedier/frp/releases/download/v0.27.1/frp_0.27.1_linux_amd64.tar.gz
#解压缩
tar -zxvf frp_0.27.1_linux_amd64.tar.gz
#将文件夹改名为frps
mv frp_0.27.1_linux_amd64 frps
#进入frps目录
cd frps
# 删除不需要的客户端文件
rm -f frpcfrpc_full.inifrpc.ini
# 配置服务器端文件
vim frps.ini

#配置文件详解
[common] bind_port = 7000(frp的主服务端口,可自定义) vhost_http_port = 8080 (访问HTTP服务端口,可自定义) dashboard_port = 7500( dashboard 界面端口 ,可自定义) dashboard_user = 用户名 ( 登录 dashboard 用户名 ,可自定义) dashboard_pwd = 密码 ( 登录 dashboard 密码 ,可自定义) max_pool_count = 5 ( 最大连接池数量 ) authentication_timeout = 900 ( 超时验证时间 ) subdomain_host = ddns.net ( 自定义二级域名 ,根据需求更改) [ssh] listen_port = 6000 ( ssh 访问端口 ,可自定义) auth_token = 123456789 (和客户端 的token 对应,可自定义)

wq保存

服务器端配置结束,接下来启动服务

nohup ./frps -c ./frps.ini &

使用nohup可用于后台运行,如果要实现开机自启动可以编写一个脚本文件并添加到/etc/rc中,具体步骤如下

vim /root/frps.sh

在文件中加入如下内容

cd /root/frpc nohup ./frpc -c ./frpc.ini &

保存以后对脚本文件增加执行权限

chmod +x frps.sh

将脚本文件写入启动文件中

vim /etc/rc

在文件的倒数第二行(exit 0前面)添加脚本文件,可使用:$跳转到最后一行

/root/frps.sh&
exit 0

保存后使用reboot命令重启服务器验证能否自动启动。

客户端配置:

客户端可以是任何需要穿透的设备,PC、nas、路由器皆可,首先仍然是去github上下载相对应的程序,此处使用的是群晖NAS,首先需要去群晖上开启ssh登录

因为群晖默认是不能用root登录,使用自己创建的管理员用户登录以后可以使用sudo -i来提权到root,提权以后也可以更改/etc/ssh/sshd_config里面的permitrootlogin yes来开启root登录的权限

#从github上下载程序 root@lin:~# wget https://github.com/fatedier/frp/releases/download/v0.27.1/frp_0.27.1_linux_amd64.tar.gz
#解压缩
tar -zxvf frp_0.27.1_linux_amd64.tar.gz
#将文件夹改名为frpc
mv frp_0.27.1_linux_amd64 frpc
#进入frpc目录
cd frpc
# 删除不需要的服务器端文件
rm -f frpsfrps_full.inifrps.ini
# 配置客户端
vim frpc.ini

#配置文件详解

[common]
server_addr = XXX.ddns.net (服务器端的IP或者域名)
server_port = 7000(需要和前面服务器端配置的一致)
auth_token = 123456789(需要和前面服务器端配置的一致)
pool_count = 1
[ssh]
type = tcp
local_ip = 192.168.1.2(NAS的局域网IP)
local_port = 22(NAS的ssh端口,默认是22)
remote_port = 6000(服务器端的自定义ssh端口,需要和前面服务器端配置的一致)
[nas]
type = http
local_port = 5000(nas的HTTP端口,群晖默认是5000)
subdomain = XXX(XXX.ddns.net自定义的二级域名需要指向到服务器IP)

(需要免费的DDNS转发服务大家可以去no-ip.com去申请,免费版支持三个二级域名。)

保存以后客户端配置结束,接下来可以启动服务测试一下。

nohup ./frpc -c ./frpc.ini &

同样也可以编写一个脚本文件将此命令添加到自启动里

接下来可以在frps文件夹下面看到会生成一个nohup.out的文件,使用cat可以查看此文件,如果看到类似下面的内容表示连接服务器成功

2019/07/23 11:46:18 [I] [service.go:221] login to server success, get run id [236c210ce24daa0f], server udp port [0]
2019/07/23 11:46:18 [I] [proxy_manager.go:137] [236c210ce24daa0f] proxy added: [ssh nas]
2019/07/23 11:46:18 [I] [control.go:144] [ssh] start proxy success
2019/07/23 11:46:18 [I] [control.go:144] [nas] start proxy success

接下来可以进行ssh测试

ssh -p6000user@服务器ip或者域名(user为NAS的用户名)

群晖管理界面测试

浏览器里输入xxx.ddns.net:8080能打开群晖的登录界面表示穿透成功,以后就可以随时随地的在外面访问家里的NAS了。

注意事项

由于所有的流量都是走服务器端的,如果你租用的是VPS,最好不要在外面上传下载大体积文件。要不然服务器的流量很快就会爆掉。此办法也可以转发多个端口服务,具体的方法是在配置文件里添加相对应的端口即可。

啃啃啃啃啃啃
作者啃啃啃啃啃啃
97日记 42相册

全部回应 6 条

查看更多回应(6) 添加回应

啃啃啃啃啃啃的热门日记

豆瓣
免费下载 iOS / Android 版客户端