无忧启动论坛
标题: 玩转群晖-第2篇-自建内网穿透,2级泛域名访问且不用加端口号 [打印本页]
作者: 110654 时间: 2020-6-26 12:20
标题: 玩转群晖-第2篇-自建内网穿透,2级泛域名访问且不用加端口号
本帖最后由 110654 于 2020-7-5 08:02 编辑
修改记录:2020-7-5修改nginx配置文件,以附件方式展示全部内容,配置文件所有内容都有中文翻译,以便于你理解其中的含义
群晖系统是基于BSD(linux)而制作的与我们常见的linux(centos ubuntu)是有区别,但两者有着相同的属性,还比如苹果mac os也是基于bsd而发展而来的。
关于安装群晖后要装什么样的软件才算有可玩性? 含重装系统疑问
手机端安装软件有ds file文件上传下载 , ds video视频观看 ,moments照片同步 ,ds audio音乐播放 4个必备常用,其他便签同步看个人需求
服务器端
docker镜像类有:
yinheli-docker-thunder-xware 支持迅雷官方账户远程下载,日志中查找THE ACTIVE CODEIS: 冒号后面的是激活码。打开
http://ycxz.xunlei.com 用迅雷帐号登入后点击添加智能设备
KMS-server windows激活服务 默认端口1688 外网能访问就能激活了,参考下面的教程
chrome 内网浏览器 默认端口8083 安装后局域网浏览器可访问这个端口,外网输入外网地址+端口访问,内网就是内网地址加端口
centos linux 你懂的
ubuntu linux 你大概也懂的额
docker 重装系统后之前安装过的数据会在你安装docker套件后自动出现
套件类有:
docker 不解释了,神器中的神器必装,部分镜像启动后不知道怎么使用可以在启动后双击,总览中查看端口,用浏览器访问这些端口。
Virtual Machine Manager 虚拟机安装后在存储菜单中添加选择原来的硬盘可以导入原来的数据
如果没有在首次安装的群晖系统没有选择btrfs文件格式,可额外的添加一个硬盘用于虚拟机运行,初始化为btrfs即可
cloud sync 支持百度云腾讯云网盘同步
audio station 音乐服务,下载自己喜欢的音乐存起来,配合手机APP效果还是可以的,至少没有广告
玩物下载 支持多重链接下载文件到NAS 可利用谷歌内网浏览器去在外网操作
office套件
文本编辑器
文本查看器
moments 手机下载APP后照片同步服务
video station 视频播放服务,建议同时手机安装VLC软件 用ds file 软件打开文件 选择vlc播放支持更多视频格式
媒体服务器 家庭局域网影院必备 远程不推荐使用,舍得花钱的推荐plex mediaserver 本地远程效果真好,格式全支持
重装系统操作方式: 不要怕,界面都是中文的很好理解,看到硬盘几的数据会被格式化慌不慌(其实它格式化只是针对没有创建群晖无法识别的分区格式才会把数据弄丢,如果已存在认识的,会自动跳过这个操作,但实际上不会显示它跳过了这操作,老版本会显示,新版本不再显示了,为了保险起见,建议把组RAID的盘先断开连接,用一个垃圾硬盘 数据不要的盘去安装群晖然后在把硬盘接上去,会自动识别之前的数据。
下载ubuntu20.04,如果你的硬件比较老是3代内存条那种,可以下载ubuntu12.04,以live cd模式启动,当前centos也行。
然后在里面用磁盘管理,分别格式化第一个,也就是2.6g大小的分区(其他版本未知,没有测试),每一个硬盘上都有,注意区分非NAS系统分区
然后重启选择grub2菜单的群晖菜单启动,用另外一个电脑或者手机(手机存好系统镜像文件大约250M大小左右),访问IP加端口就可以设置操作了,
暂时先写这么多,有兴趣的加d入群聊吧,一起折腾吧,下一篇更新路由器刷固件解锁更多姿势(知识,解锁VPN客户端与服务器,广告拦截,离线下载,翻墙插件,防火墙流量控制等超实用功能)
加口口群:493477345
经过实际应用发现还是ubuntu14.04 服务器版靠谱,很多关联的软件在centos 不停的在填充关联软件,去爬梯去搜索都吐了,最后在ubuntu14.04成功开启了,集成的软件源更全面一些。centos或许是适合高手的缘故吧。
关于群晖如何自建内网穿透,绑定顶级域名,实现2级泛域名解析到群晖的各种服务?例如:我的域名是abc.cn 1.abc.cn访问群晖主页,2.abc.cn访问人人影视,3.abc.cn用来KMS激活,依次类推
其最重要是访问的方式由abc.cn:5000这样域名加端口的方式变成了2级域名访问1.abc.cn
很明显这对访问的方式有极大的好处不用再记端口了,
举例说明:
群晖nas设备(也就是一个电脑)放在家里,家里的宽带是家用宽带没有公网IP,没有固定IP等于没有办法做DDNS,租用云服务器或利用有公网IP或固定IP的设备来做这一道桥。
恰好认识一个客户,或者朋友或者公司的服务器或电脑有固定IP,那么如何在它现有的机器添加呢,并且不影响它现有的80端口访问的网站或者其他服务呢。这就需要nginx(反向代理)来实现,连通家里的群晖需要frp(内网穿透)。
理解工作原理比直接抄答案有用:家里的群晖利用frp连接到(公司的服务器的frps服务端)的监听端口,并透过同一个http或者tcp等协议的端口共享实现跳转到家里群晖的不同端口。再利用nginx实现80端口监听,根据来自的域名或者ip访问者,分配到不同的端口,那么这里相当于等于域名进入服务器,nginx筛选一下,谁是谁家的端口,让它去对应的地方。当发现群晖的域名来了,分配给frp监听的端口,frp发现你的域名(或者2级域名)访问者再分配给家里群晖的不同端口。测试环境:
客户有一个固定IP,有一个防火墙带路由的网关设备(可以理解为有多功能控制进入口的路由器,但实际上都叫防火墙),路由器下面接了2个服务器,一个服务器上运行了2个网站(IIS服务,系统windows 2012),另一个服务器是备份服务器。现在就悄悄的利用他这个固定IP资源,把家里的群晖给穿透出来给自己悄悄的用。直接frp也行就是要记端口号,每一个端口对应你自己的一个应用,加一个反向代理服务nginx的话就不需要记端口了,只需要记2级域名就好了,看起来也美观一点,做个个人博客什么的贼有面子是吧。
改变前:服务器1的网站1绑定域名为11.def.cn端口80(外网访问就是abc.cn) 网站2绑定域名为22.def.cn端口80,IIS服务运行
改变后:修改windows2012 hosts文件路径c:\windows\system32\drivers\etc 记事本打开添加(其目的是windows hosts大于iis,大于nginx的规则让他优先处理让来自该设置的域名访问本地,以便于nginx快速识别到域名的访问。
127.0.0.1 adb.cn #用来访问群晖的域名
127.0.0.1 11.def.cn #网站1
127.0.0.1 22.def.cn #网站2
修改网站1绑定IP为本服务器192.168.9.4端口8111,网站2绑定IP为192.168.9.4端口8112 目的是为nginx让道,让他接管主接口端口80(因为80端口http服务不需要输入冒号80,谁都想抢。)
教程部分:
把你的域名(用来访问群晖的)解析到公司服务器(有公网或固定IP)的IP地址上(泛域名解析为主机A,记录*,地址为IP)
然后在公司服务器(linux的直接开干,windows不装虚拟机也可以直接运行nginx与frp服务,装虚拟机建议装linux毕竟功耗小,不费电).登录公司路由器或者防火墙,检查网关设备,查看NAT或者端口转发有哪些记录,哪些IP地址,哪些WEB网站服务记录下来,还有网站的文件存放路径。后面要用#注意:如果当然公司IIS或者其他服务运行了占用80端口的网站服务就修改到其他端口,如下面教程部分中的说明的网站1端口8111及网站2端口8222,它原来是11.edf.cn访问网站1(同时也是edf.cn访问网站,绑定了80端口),22.edf.cn访问网站2(绑定80端口),修改为当前服务器设备IP如下面教程部分中所指的环境为192.168.9.4为服务器,9.1是网关(也是一个防火墙带网关的设备,如h3c f100防火墙带路由的设备),
如果是centos的系统,这里安装的ubuntu,其原理都一样。windows版的也可以,配置文件一样,百度一下启动方式就行
apt-get install nginx 安装nginx centos使用yum install nginx安装,下面的就各自举一反三了。
vi /etc/nginx/nginx.conf 编辑配置文件,编辑完成后启动/etc/init.d/nginx start 或者输入这个 systemctl start nginx.service来启动
nginx -t来检查配置文件是否有错误,看不懂的就用百度翻译。大部分是多少行出现错误,注意检查。
ps -aux | grep nginx检查是否启动
pkill -9 nginx关闭进程
ps -ef | grep 80查看80端口占用情况
pkill -9 4444 关闭进程ID,(这里的4444表示占用80的端口进程ID)
配置文件说明:
由于配置文件内容太多,以附件方式查看吧
nginx.rar
(2.76 KB, 下载次数: 1)
#配置结束,多个就举一反三的方式添加注意大括号的对应,报错就nginx检查,如果域名很多可以采用if规则命令方式分配,该配置文件是windows版的nginx1.18版本,与linux几乎通用,要更改的就是日志路径以及进程ID支持文件的路径,参考官方文档即可完成修改。多注意使用nginx -t命令来检查配置文件是否正确,不确定时可以直接运行看错误,翻译的方式找寻答案,附件是abc.cn访问群晖,11.edf.cn访问公司网站1,22.def.cn访问公司网站2
注意这些都是在服务器上操作(也就是有公网IP的电脑,或者在有公网IP、固定IP的路由器或防火墙下面也可以)
配置完成后,启动nginx,后开始安装frp
下载地址https://github.com/fatedier/frp/releases
下载对应的版本,linux 下载amd64 windows的可以下载windows版(windows版就更简单了,下载好修改配置文件frps.ini,cmd命令到该目录,frps -c frps.ini运行)
这里说明linux操作
利用winscp软件把下载的文件上传到linux系统。
cd命令到对应的目录,ls命令查看该目录文件列表
tar -zxvf 文件名.tar.gz 解压
cd 进对应的文件夹,然后vi frps.ini编辑frp的配置文件
[common]
# frp监听的端口,用作服务端和客户端通信 ,如果本机在局域网中填写本机IP,如果本机直接连接的固定IP填写固定IP
bind_addr = 192.168.1.4
#监听的端口与第一条反向代理的跳转地址端口一致
bind_port = 7940
# 服务端通过此端口接监听和接收公网用户的http请求
vhost_http_port = 7970
#域名
subdomain_host = abc.cn
#frp控制台端口
dashboard_port = 7941
#控制台IP,如果本机在局域网中填写本机IP,如果本机直接连接的固定IP填写固定IP
dashboard_addr = 192.168.1.4
#控制台登录账户
dashboard_user = 123456
#控制台登录密码
dashboard_pwd = 123456
#日志保存位置路径名字
log_file = ./frps.log
log_level =error
#日志最大天数为3天
log_max_days = 3
#采用密码验证
authentication_method = token
#验证密码为123456
token = 123456
#最大连接数量0表示不限制
max_pool_count = 0
#是否开启端口同用 true表示开启
tcp_mux = true
如何使用vi命令参考这个帖子中的描述http://bbs.wuyou.net/forum.php?mod=viewthread&tid=421107&extra=page%3D1
./frps -c frps.ini启动frp服务端(在对应的目录执行)
vi /etc/rc.local 编辑在后面添加命令为开启启动,可先输入cd 命令到对应目录,再添加启动命令
ps -aux | grep frps检查是否启动
pkill -9 frps关闭进程
然后可输入公网ip加控制台端口访问frp的控制台监控连接情况
注意:以下内容在群晖家里操作
然后在ssh登录群晖(不会百度一下)
同样的方式把frp用winscp上传
然后解压,vi frpc.ini编辑(注意看是frpc不是ps,ps是服务端,pc是客户端)
[common]
#部署frp服务端的公网服务器的
server_addr = 你的公网IP
# 和服务端的bind_port保持一致
server_port = 7940
#服务端设置的对应验证密码
token = 123456
#第一个端口穿透名称
[http]
#指定通讯协议
type = http
#暴露给外网的本地web服务端口级地址,也就是你群晖访问的端口或其他服务端口
local_ip = 192.168.31.11
local_port = 5000
#子域名前缀,无需填完整,客户端的subdomain需和服务端的subdomain_host配合使用(这里的nas等于访问的时候是nas.abc.cn)
subdomain = nas
#第二个端口穿透名称 访问renren.abc.cn等于访问31.11里面的3001端口
[nas_renren]
type = http
local_ip = 192.168.31.11
local_port = 3001
subdomain = renren
./frpc -c frpc.ini启动
就可以开始使用了
晋级使用nginx:之IF命令变量筛选
server {
listen 80;
server_name *.abc.com;
if ($http_host ~* "^(.*?)\.abc\.com$") { #正则表达式
set $domain $1; #设置变量
}
location / {
if ($domain ~* "shop") {
proxy_pass http://abc.com:3001; #域名中有shop,转发到3001端口
}
if ($domain ~* "mail") {
proxy_pass http://abc.com:3002; #域名中有mail,转发到3002端口
}
tcp_nodelay on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上
-
2.png
(98.27 KB, 下载次数: 55)
作者: fswrx 时间: 2020-6-27 00:39
谢谢分享
作者: 2011goodluckwxl 时间: 2020-10-11 11:21
感谢您用心分享
欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) |
Powered by Discuz! X3.3 |