ESXi 入门指南

什么是 ESXi

VMware ESXi 是由 VMware 开发的用于部署和服务虚拟计算机的企业级 1 类管理程序。作为 Type-1 虚拟机管理程序,ESXi 不是操作系统上安装的软件应用程序;相反,它包括并集成了重要的 OS 组件,例如内核。在 4.1 版之后,VMware 将 ESX 重命名为 ESXi。

摘自维基百科英文版翻译

简单的说,ESXi 就是一个虚拟机。但是与 VMware Workstation、VirtualBox 等工具却又有些不同。更具体的说,VMware Workstation 等工具是运行在操作系统之上的一个软件,如果没有对应的操作系统(Windows、macOS、Linux)等,它自身是无法运行的,操作系统不让它做的事情它也做不了,这种虚拟机我们一般叫 “Type 2” 虚拟机。

既然有 Type 2,那也是有 Type 1 的,所谓 Type 1 虚拟机,就是它本身就是一个操作系统,直接运行在裸机上。ESXi 就属于这种。

“人傻钱多戴,美帝良心想”

提到戴尔,我相信绝大部分人的印象都是这家伙不是卖笔记本、卖显示器,还卖服务器的吗?

哦好吧,其实 VMware 是 DELL 的子公司。是这样的,VMware 被 EMC 收购了,DELL 又把 EMC 收购了。

ESXi 硬件要求

ESXi 的硬件要求很低,总结来说大概如下:

  • 至少双核 CPU
  •  至少 4G 内存
  • 以太网控制器

除此之外,最好再支持硬件虚拟化 Intel VT-x 或 AMD RVI

具体详细硬件配置可以查看官网的文档 ESXi 硬件要求

相信大家的配置绝对足够跑 ESXi 了,不过有几点需要注意的地方

  • ESXi 本身不支持无线网卡,但是我们可以把无线网卡直通给虚拟机
  •  “不支持”Realtek 螃蟹?️网卡,VMware 因为商业化原因移除了对 Realtek 的支持,但是可以找办法添加回去的

使用什么设备运行 ESXi

很简单,用旧的笔记本,各种服务器…… 好吧,对于个人使用来说,服务器还是算了,那个耗电和噪音受不了的。

对于个人使用来说, 淘汰的笔记本(配置足够的话)、各种迷你主机是比较好的选择。

比如说 Intel NUC 就是很不错的选择,但是 NUC 价格又有些贵;所以最终我选择的是占美主机,便宜省电呀…… 如下图所示

ESXi入门指南

只不过这个无线网卡,被我拆了卖咸鱼了。

由于 NUC 这类都是不带内存硬盘的,所以咱要自己买。推荐的话,既然都跑虚拟机了,起步 16G 为佳。存储的话,自然是 M2 NVME 或者 mSATA 的固态了。SATA 接口建议还是别插固态,SATA 接口留给普通的机械硬盘,做备份存储之类的用途。土豪直接上 1T 的固态那就不算啦!

ESXi入门指南

这个功耗很低吧,一个月下来也就是三四块钱的电费

ESXi 安装镜像调整(打补丁)

判断网卡类型

前面说过,ESXi 不支持?️网卡(有好些网卡都是不支持的,所以可以参考上面的硬件要求链接),所以这里需要先判断下自己的机器上什么网卡?如果是螃蟹卡的话,那么需要对安装镜像进行调整。具体判断方法,拆开看芯片,看产品介绍,Live CD 下 lspci 什么的都可以

下载 ESXi 镜像

ESXi 介绍页面

https://www.VMware.com/products/vsphere.html

ESXi 下载

https://my.VMware.com/en/web/VMware/info/slug/datacenter_cloud_infrastructure/VMware_vsphere/6_7

我们就点击页面上的 VMware vSphere Hypervisor (ESXi) 6.7U3 下载就可以了。

镜像有两种类型

ESXi入门指南

第一种的 ISO,直接能启动;第二种下载回来说一个 zip 包,我们可以用它来打补丁。如果你是?️卡,那就选第二种吧

ESXi 打补丁

这个网上文章真的是太多了,基本上就是用 ESXi-customer-PS 之类的把网卡驱动添加进去

ESXi-customer-ps 官网

https://www.v-front.de/p/ESXi-customizer-ps.html

需要先安装 powercli,下载页面

https://code.VMware.com/web/tool/11.2.0/VMware-powercli

网卡补丁,根据自己的型号下载 offline-bundle,避免网络问题

https://vibsdepot.v-front.de/wiki/index.php/List_of_currently_available_ESXi_packages

如何打补丁可以自己搜索下,我这里贴上来两篇

https://www.smbinn.com/vmnetwork.html
https://rexzhang.com/post/cf06a796-44d5-11e4-9bb5-f23c9150b910

简单描述是这样的,打开 powershell,切换到对应的目录

  1. # 取消可能的系统限制
  2. Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
  3. Set-ExecutionPolicy Unrestricted
  4.  
  5. # 离线打补丁 official.zip是ESXi的offline bundle,drivers目录包含了vib文件的目录
  6. .\ESXi-Customizer-PS-v2.6.0.ps1 -izip .\official.zip -pkgDir C:\Users\abc\Dropbox\ESXi\drivers
  7.  
  8. # 在线打补丁,依赖比较好的网络环境
  9. .\ESXi-Customizer-PS-v2.6.0.ps1 -v67 -vft -load net55-r8168
  10.  

支持 Realtek 8168/8111/8411/8118 的成品

如果你的网卡也是 Realtek 8168/8111/8411/8118 的话,并且信任我,可以考虑用我的现成的(点我下载

ESXi 安装

把 iso 写到 U 盘中,比如说使用 rufus 这种,然后启动插 U 盘启动电脑,哦对了还要有个显示器和 HDMI……

安装过程很简单,接受,输入密码,下一步,下一步……

小提示:没有显示器怎么办?

靠着虚拟机、网卡指示灯、硬盘灯摸索着来吧。

哦当然了,ESXi 要插网线直接连到网络设备(如路由器)的,要不玩什么呀!

ESXi 管理

ESXi 安装完成之后,会直接显示它的 IP 地址,直接在浏览器输入这个地址就可以访问了(需要注意的是这个地址是用https,而不是http)。

使用 ESXi 网页端管理虚拟机

界面很简洁,看着就会用

ESXi入门指南

使用 VMware Workstation 管理虚拟机

如果你的电脑上装有 VMware Workstation 的话,文件 – 连接到服务器,输入 IP 用户名(root)、密码也是可以进行简单的管理的

进一步的管理:Vcenter

ESXi 本身的管理功能比较基础,甚至连克隆、迁移等功能都没有。为了做到这点,可以开个虚拟机安装 vcenter。

什么是注册虚拟机

ESXi 创建虚拟机方法

ESXi 的使用非常简单,只要是用过虚拟机的人应该就是十分清楚的,傻瓜化操作

直接创建虚拟机

ESXi入门指南

从 ovf 部署虚拟机

从 VMware Workstation 和 virtualbox 导出的文件都可以导入进来的

ESXi入门指南

注册虚拟机

假如已经有了虚拟机的 vmdk 文件,并且这个文件在 datastore 中,那么我们可以直接注册虚拟机的。方法太简单了,不说了。

使用 cloud image

作为非常爱惜硬盘的我,如果从 Ubuntu Server 安装一个服务器版 Ubuntu 的话,不仅浪费时间,需要手工干预安装,而且还很占用硬盘。所以 ubuntu 官方维护了一个云镜像,其中包含各种环境使用的镜像,可以直接导入。

下面这个链接是每日构建的,点进去选一个日期,下载对应的 ovf/ova 文件就可以了

https://cloud-images.ubuntu.com/bionic/

这个链接是发布版的,同样下载 ovf/ova 文件

https://cloud-images.ubuntu.com/releases/
ESXi入门指南

下载回来直接导入就可以了

但是这个 cloud image 的 root 密码是什么呀!别怕,随机密码。开机按 shift 进 grub,选择 recovery mode 破个密码就好了。然后再 parted 或者 fdisk 弄下分区,完美。Cloud image 安装完占用硬盘不到 1G 哦~

ESXi 虚拟机设置

CPU 资源限制

如下图所示,我们可以为此虚拟机预留一定的 CPU 资源、限制 CPU 资源(虚拟机不会使用超过这个频率的 CPU)、份额,以及常见的硬件虚拟化、性能计数器等。

ESXi入门指南

份额这个概念比较特殊,详细解释如下:

份额指定虚拟机(或资源池)的相对重要性。如果某个虚拟机的资源份额是另一个虚拟机的两倍,则在这两个虚拟机争用资源时,第一个虚拟机有权消耗两倍于第二个虚拟机的资源。

份额通常指定为高、正常或低,这些值将分别按 4:2:1 的比例指定份额值。还可以选择自定义为各虚拟机分配特定的份额值(表示比例权重)。

举个例子,

一台聚合 CPU 容量为 8 GHz 的主机上运行着两个受 CPU 约束的虚拟机。它们的 CPU 份额设置为正常,因此各得 4GHz。

现在打开了第三个受 CPU 约束的虚拟机的电源。它的 CPU 份额设置为高,这意味着它拥有的份额值应该是设置为正常的虚拟机的两倍。新的虚拟机获得 4GHz,其他两个虚拟机各自仅获得 2GHz。如果用户为第三个虚拟机指定的自定义份额值为 2000,也会出现相同的结果。

内存资源限制

与 CPU 资源限制类似,内存也是可以进行限制的,道理类似

ESXi入门指南

硬盘资源限制

同理,可以限制硬盘写入,所以知道怎么做石头盘了吧!

ESXi入门指南

添加其他设备

前面提过,ESXi 不支持无线网卡,但是我们可以把无线网卡直接分配给虚拟机,那么就要用到网卡直通。具体方法就是编辑虚拟机设置,添加其他设备 – PCI 设备 / USB 设备

ESXi入门指南

虚拟机引导选项

和 VMware Workstation 的设置基本差不多,一看就懂

ESXi入门指南

ESXi 控制台连接

我们可以直接通过网页端访问控制台端口,也可以通过下载 VMware Remote Console,或是 VMware Workstation 访问。

数据存储管理

要装虚拟机,自然就要用 ISO 镜像,那 ISO 镜像自然就要上传到 ESXi 中…… 具体就是使用数据存储功能。

左侧导航栏直接点进去存储

ESXi入门指南

数据存储管理器

点击数据存储管理器,太简明易懂了…… 上传就是了。

ESXi入门指南

添加存储

ESXi 默认会识别接驳的硬盘等设备,但是我们也可以添加网络存储,比如 NFS,点击新建数据存储,选择 NFS

ESXi入门指南

相应的添加就好了

ESXi 网络设置之物理网卡

熟悉 VMware Workstation 可能知道,VMware Workstation 的网络可以分为桥接、NAT、host only 等,那么 ESXi 呢…… 对不起,ESXi 天生桥接。

在 ESXi 的网络设置中……

物理网卡的概念很好理解,就是真实接线的网卡,ESXi 本身是支持多网卡的,利用多网卡可以玩出很多花样,比如软路由……

ESXi入门指南

ESXi 网络设置之虚拟交换机

交换机这个概念,对于不是搞网络的人来说,可能很生疏。路由器、交换机、集线器这三者究竟有啥区别啊?这不是本文讨论的重点。

ESXi 中的虚拟机交换机的概念很简单,简单的说就是连到虚拟机的那个 “设备”,由 ESXi 的内核提供,只有二层桥接的功能,不像真实的交换机,又能配 ACL 又能配这配那的。比如我们看下下面的这个图

ESXi入门指南

这么多台虚拟机都 “连接” 到了这一虚拟交换机上,然后这个虚拟交换机用两条真实的网线连接到了我的路由器上。

虚拟交换机有啥意义呢?比如我有两块物理网卡,一块是 192.168.1.0/24,另一块是 192.168.2.0/24,那么我们就可以通过添加两个 vSwitch,然后不同的虚拟机就可以属于不同的网段啦。

添加 vSwitch

虚拟交换机这东西,由于是内核虚拟的,自然也可以自己添加。方法也很简单,直接点击添加,起个名字,选择绑定到哪块物理网卡,确定就可以了。如下图所示

ESXi入门指南

当然了需要注意的是,一块网卡一旦属于某个虚拟交换机,那它就不能属于其他的虚拟交换机了。

虚拟交换机、添加上行链路

俗话说,狡兔三窟。一个虚拟交换机,如果增加网线作为备份线路,那也是有备无患的。

所以编辑 vSwitch,添加另外一条上行链路作为冗余。这样当你拔掉一条网线,虚拟机们还能无缝切换(真的是无缝,可能连 TCP 丢包都没有),一点不受影响。

添加方法很简单,直接编辑,添加另一条物理链路就好了

另外,假如你的 ESXi 不接网线,那么属于同一个 vSwitch 之间的虚拟机还是能通信的,而且是万兆网卡哦!只是流量不能往外走,要不怎么叫上行链路呢。

虚拟交换机 网卡绑定

所谓网卡绑定,就是当你为一个虚拟交换机添加多条上行链路的时候,想让 ESXi 怎么调度啊?类似链路聚合,你是想 round-robin,还是 active backup,还是 load balance 呢?网卡绑定就是干这个事情的。

ESXi入门指南

ESXi 的这四种模式,对应的意义如下:

  • 基于源端口 ID 的路由(默认):则根据流量进入虚拟交换机的虚拟端口选择上行链接。

基于 IP 哈希的路由:根据每个数据包的源和目标 IP 地址的 Hash 选择上行链接。对于非 IP 数据包,会使用位于这些偏移上的任何内容计算 Hash。

  • 基于源 MAC 哈希的路由:根据源以太网的 Hash 选择上行链接。
  • 使用明确故障切换顺序:始终使用 “活动适配器” 列表中位于最前列的符合故障切换检测标准的上行链路。(本图就是 vmnic0)

虚拟交换机 流量调整

买 VPS 的时候…… 你这个口不是独享的!好吧,ESXi 也能针对虚拟交换机进行流量限制,如下图所示

ESXi入门指南

ESXi 网络设置 端口组

实际上呢,虚拟机并不是直接连到 vSwitch 的。虚拟机上直接连接到端口组上的。不同的虚拟机可以属于不同的端口组。

端口组与虚拟机网络设置

ESXi入门指南

添加端口组

ESXi入门指南

ESXi VMkernel 网卡

ESXi 本身是通过网络管理的,那么自然也要有一个对应的 “网卡”,这里就是 vmk 网卡。可以把它理解成一个特殊的端口组,主要就是提供管理相关的访问。

ESXi入门指南

有的时候,我们可能希望,所有虚拟机使用某一段的 IP,但是管理使用另一段 IP,这里就可以通过添加 VMKernel 网卡做到。

ESXi入门指南

比如我们希望 ESXi 的管理 IP 能够有多个,做个备份,那么添加 vmkernel 也能做到

添加之后的结果

ESXi入门指南

此时 Vmkernel 的拓扑

ESXi入门指南

ESXi 常见玩法(可以选择单个或者多个组合)

  • NAS:装个黑群晖;
  • Windows 7:用来下载115,百度网盘,迅雷、远程桌面等等;
  • Centos 7:安装宝塔,架设个人博客,群晖导航网站等等;
  • 软路由:OPENWRT、ROS、爱快、高恪,可以根据自己实际情况做主路由或者主路由+旁路由。

总结

ESXi 真是太强大了,开虚拟机随便玩,部分硬件可以直通到虚拟机中;甚至可以给 ESXi 主机开 ssh,然后可以执行一些 ssh 命令,甚至可以运行 Python,吼。

群晖安装一个管理Docker的神器—Portainer中文可视化面板

Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。群晖的套件中心有Docker套件,但是这个管理工具功能太少,所以很多人喜欢用Portainer来管理,但是官方的Portainer只有英文版,今天来教大家安装一个中文的Portainer。

先来讲一下我的群晖环境:

1、群晖型号:DS3617xs

2、版本:6.22up4

3、已开启root权限

4、已安装docker套件

一、下载  Portainer中文可视化面板  到电脑上;

二、登录群晖系统,打开File Station,在docker文件夹下,右键把刚才下载的文件public.rar上传到群晖;

三、把上传的public.rar解压出来;

四、保留解压出来的public的文件夹,删除public.rar这个压缩包;

五、以root用户登录群晖的SSH,我这里使用的是xshell这个软件;

六、输入下面的命令(这里需要使用群晖的9999端口,输入本命令之前,请确认群晖的9999端口没有被占用):

docker run -d --restart=always --name=portainer -p 9999:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /volume1/docker/public:/public portainer/portainer

七、文件在下载中,需要说明的是:下载等待的时间跟你的网络有关,有可能几分钟,也有可能几个小时。。。如果你做了Docker加速,下载等待的时间就很快,几分钟就可以下好。

八、下载完成后会回到命令行的状态,这样就是下载好了的,就可以把xshell关掉了;

九、回到群晖系统,打开Docker,在容器这里,看到portainer已经在运行了;

十、在浏览器输入http://群晖的IP地址:9999,登录portainer,首次登录需要设置一个8位的密码,点创建用户;

十一、我们这是管理群晖的docker,所以选Local,点Connect继续;

十二、好了,中文版的Portainer安装完成

十三、在容器这,可以看到Portainer正在运行

Aria2 无法下载磁力链接、BT种子和速度慢的解决方案

前言

BT 下载并不是一个人的事,比如你在下载一部生理卫生知识教学影片时,背后其实是有一群和你下载同样影片的人在为你上传,同时你也在为他人上传,这个影片下载的人越多,给你上传的人就会越多,速度就会越快。但如果找不到这些人,你就可能无法下载。那么如何才能找到和你下载同样影片的人呢?

开放端口

在未开放端口的情况下,Aria2 无法与外界进行数据交换。所以开放端口是进行 BT 下载的首要条件。

如果是在 VPS 上使用 Aria2 下载,最简单粗暴的办法是关闭防火墙。如果你不想这么做,那么首先要知道端口号,这也许是你自己设置的,也许是默认的,总之打开 Aria2 配置文件就知道了。以下是 Aria2 完美配置中的端口信息:

# BT监听端口
listen-port=51413
# DHT网络监听端口
dht-listen-port=6881-6999

知道端口号后让防火墙放行这些端口即可。

如果是在本地电脑或者 NAS 上使用 Aria2 下载,需要在路由器上设置端口转发,Aria2 暂不支持 UPnP。

添加 BitTorrent tracker

Bit­Tor­rent tracker 是帮助 BT 协议在节点与节点之间做连接的服务器,俗称 BT 服务器、tracker 服务器(以下简称为 tracker )。BT 下载一开始就要连接到 tracker ,从 tracker 获得其他客户端 IP 地址后,才能连接到其他客户端下载。在传输过程中,也会一直与 tracker 通信,上传自己的信息,获取其它客户端的信息。所以 tracker 在 BT 下载中起到了至关重要的作用。

每个 BT 种子都会内置 tracker ,但可能因为不可抗力而导致连接困难或者速度不理想,这就意味着很难找到下载相同资源的人。好在这个问题可以通过添加额外 tracker 来解决,这样你遇到和你下载同样资源的人的机会就更多,就更容易找到给你上传的人,速度自然就会快了。

trackerslist 是一个提供 tracker 列表的项目,几乎每天都会更新。列表还分为 udp、http、ws…… 小孩子才做选择,所以直接选择 trackers_all 这个包含所有服务器的列表。然后更改格式,tracker 之间用 , 隔开,再添加到 Aria2 配置文件中,就像下面这样:

bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.leechers-paradise.org:6969/announce,udp://tracker.opentrackr.org:1337/announce,udp
://9.rarbg.to:2710/announce,udp://9.rarbg.me:2710/announce,udp://tracker.internetwarriors.net:1337/announce,udp://tracker.openbittorrent.com:80/announc
e,udp://exodus.desync.com:6969/announce,udp://open.demonii.si:1337/announce,udp://tracker.tiny-vps.com:6969/announce

当然这种重复的事情,用脚本来做才是正确的方式:

  • 在终端内执行以下命令可直接获取 Aria2 可用格式的 tracker 列表。
bash <(curl -fsSL git.io/tracker.sh) cat
  • 在 Aria2 配置文件(aria2.conf)所在目录执行以下命令即可获取最新 tracker 列表并自动转换为 Aria2 可用格式添加到配置文件中。
bash <(curl -fsSL git.io/tracker.sh)
  • 此外还可以指定配置文件路径,比如配置文件在/root/.aria2/aria2.conf
bash <(curl -fsSL git.io/tracker.sh) "/root/.aria2/aria2.conf"

对于使用 Aria2 一键安装脚本的小伙伴,直接打开自动更新 BT-Tracker 功能即可。

获取 DHT 数据

由于 tracker 对 BT 下载起到客户端协调和调控的重要作用,所以一旦被封锁会严重影响 BT 下载。早年中国大陆对 tracker 的封锁,曾一度导致 BT 下载销声匿迹,这也促使了 DHT 网络的诞生。

DHT 网络由无数节点组成,当接触到一个节点,通过这个节点又能接触到更多的节点,接触的节点越多,你获取资源的能力就越强,下载的速度也就越快。即使在完全不连上 Tracker 服务器的情况下,也可以很好的下载。以下是 Aria2 配置文件中一些与 DHT 相关的功能选项:

# DHT(IPv4)文件
dht-file-path=/root/.aria2/dht.dat
# DHT(IPv6)文件
dht-file-path6=/root/.aria2/dht6.dat
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=true
# DHT网络监听端口, 默认:6881-6999
dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true

和其他 BT 下载工具一样,Aria2 有个 dht.dat 文件(开启 IPv6 还有个 dht6.dat),里面记录了 DHT 节点信息。但是!文件本身是不存在的,需要手动创建。如果你在 Aria2 第一次运行的时候直接下载磁力链接或者冷门种子,因为文件内没有任何数据,就无法获取到 DHT 网络中的节点,所以就会遇到无法下载的情况。

第一个解决方案是找有数据 DHT 文件。比如 Aria2 完美配置中就有(所以使用 Aria2 一键安装脚本安装的小伙伴无需担心这个问题)。

第二个解决方案是生成 DHT 数据。找几个热门种子下载,比如 Ubuntu 镜像的种子。下载后做种几个小时,你会发现 dht.dat 从空文件变成有数据了。

尾巴

经过以上的一波操作,也许下载并没有多么的快,但至少正常了。可能有些非常老而且冷门的资源不会一直有人在做种,所以还是会遇到无法下载的情况。如果把无法下载的种子放到百度或者 115 进行离线下载,你会看到那虚假的进度条比你正常用 BT 下热门资源还要快(毕竟资源已经在服务器上存在了,进度条只是给你一种下载速度快的幻觉)。现实就是这么的残酷,更残酷的最后还是会用 Aria2 加速下载或者转存到国际网盘。所以为什么不一开始就直接用网盘离线下载呢?

IPTV 与互联网融合

前言

依赖

  • 需要一个能够刷 OpenWrt 的路由器(需具有数据包镜像和 udpxy 功能/插件)用于抓包和后续的使用,因为其功耗较低且价格比较便宜 Newifi D2 拼多多 100 以下就可以拿下
  • 能够正常播放节目的 IPTV 机顶盒,如果自己家里都没有能用的那就没有融合一说了

环境

因为不同地区网络环境不同,我这里是四川电信,但是可能在同一个省环境都会不一样,所以并不一定在其他地区可用。

设备型号软件
光猫TEWA-500E
主路由Newifi-D2Lean OpenWrt R9.6.1
AP腾达 AC6
网络结构拓扑图

无需电信 IPTV 机顶盒,也可在任何设备上通过 http 链接直接播放直播节目。下图分别为 PotPlayer(PC) 和 超级直播(Android) 播放节目效果图。

PC PotPlayer
Android 超级直播

iGMP 与 RTSP

在 IPTV 中常见的两种用于播放直播节目的协议分别为 IGMP 和 RTSP,他们之间的差异如下。

协议节目类型可用时间鉴权
IGMP直播长期强制
RTSP直播/回放/点播短期非强制

IGMP

网路群组管理协议(英语:Internet Group Management Protocol,缩写:IGMP)是用于管理网路协议多播组成员的一种通信协议,有时候我也会将其称为组播

在电信这边,组播地址通常很少变化,但是很重要的是它只能看直播不能看回放。又因为它的地址是内网地址,所以你必须要获取到电信的内网IP才能正常播放。我比较倾向于使用组播地址,因为电视节目回放有啥可看的,一般都是爱奇艺什么的了,而且最重要的是它的地址很少变化,这样就给不会倒腾的家人减少了很多麻烦。

原理上组播和广播(给网络里的所有人都发送一个消息)有点相似,但是组播会划分一个更小的范围,并且这个范围里面设备的名单会同时由客户端和主机端进行维护,路由器会根据不同的组别来转发不同的数据。

下面假装这个网络里面,有 3组 人正在分别在看 3个 节目。

IGMP1

正在收看 CCTV-251 的朋友说,这太假了。我想看点正能量的、让人血脉喷张的。然后请求换到 正在播放 CCTV-1 的 igmp://239.93.22.133:9260

IGMP2

路由器随后听到了这位朋友的呼唤,然后就将它放进了 CCTV-1 的组里。

IGMP3

通过上面的例子你大致能了解到 IGMP 协议的工作原理,可以简单的总结为 IGMP 就是 一对多,下面的一个例子则是和 IGMP 相反。

RTSP

实时流协议(Real Time Streaming Protocol,RTSP)是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体服务器。该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端发布VCR命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录音)的媒体流,有时候我也会将其称为时移

原理上 RTSP 和常见的 HTTP 协议比较相似,也就是 一对一,下面这个图可以帮助你理解。

你在观看节目的时候,可以随意的后退暂停,也可以自己想看什么就看什么,不用加入别人的组,整个资源都被你一个人享用。就和你平时看爱奇艺,B站什么的没区别。

RTSP

正如上面的介绍一样,RTSP 的主要特点就是可以时移,也就是可以拖动进度条。而且大部分地区的 RTSP 地址都是公网 IP,甚至还可以在获取到地址后,不需要任何授权都可以直接正常播放。

所以网络上流传的 IPTV 直播源基本都是 RTSP 地址。不过四川电信这边 RTSP 有鉴权,必须要以电信的内网 IP 访问才行。

同时又因为有部分套餐的 IPTV 是没有回放权限的,所以电信应该还需要验证是谁在播放,这就让观看它成为了比较麻烦的事情(不同地区情况不同,这里只针对我所在的地区)。

目标

通过了我上面对 IGMP 和 RTSP 协议的介绍,相信你对他俩都有了一定的了解。接下来我将为你详细介绍本次教程的内容。

  • 适合本项目的硬件设备
  • 软件安装及环境配置
  • 抓包获取 IPTV 的 IGMP 和 RTSP 播放地址
  • 使用 igmpproxy 将所有 IGMP 数据转发到 IPTV 口
  • 使用 udpxy 将 IGMP 地址转换为 HTTP
  • 在电视盒子、手机和 PC 上正常播放
  • 在外欣赏自家 IPTV 直播源

你可以通过点击右侧边栏,来快速跳跃到你需要的章节或查阅你当前的浏览进度。

硬件

本章节会介绍你所需要的硬件设备,在抓包和使用融合网络时不可避免的会使用到,生活中平时少见的设备。

路由器

IPTV与互联网融合,的主要设备也就是路由器了。一款合适的路由器,可以和电脑一起直接走通整个教程。对于本教程而言,一个能够刷 OpenWrt 或 Lede 同时还能安装 igmpproxy 和 udpxy 最好还支持 交换机端口镜像 就完美了。当然也有一些教程是通过 Padavan 来实现的,但是我个人没有尝试过,这里就不做评价了。

igmpproxy和udpxy 截图
交换机端口镜像 截图

如果你目前没有具有此功能的路由器,我推荐你购买 新三 它还有其他的名字 新路由3、Newifi D2、Newifi 3、Newifi 3 D2。也都是同一款,得益于所谓的矿难,这款路由器目前淘宝、拼多多和转转之类的,100元以内都可以拿下,同时购买的时候推荐你加钱让卖家刷好 Breed 和我使用一样的硬件设备,这也能让你配置的时候少走一些弯路。

新三 照片

Breed 相当于 Android 里面的 Recovery,Windows 里面的 PE。可以让你在刷机的时候不会轻易翻车。

抓包工具

通过抓包获取 IPTV 的组播地址也是必不可少的一步。如果你的路由器没有 交换机端口镜像 的功能,你就需要淘宝单独购买一个 网络抓包工具,下图为 Amazon 搜索 Throwing Star LAN Tap 的外观图。

Throwing Star LAN Tap

动手能力比较强的朋友,也可以参考恩山无线论坛的这个帖子小白的IPTV折腾教程(1)—0元DIY抓包神器,利用两根网线和4个水晶头就可以做出一个具有同样功能的抓包工具。

不过我还是比较推荐刷一个具有 交换机端口镜像 功能的固件,毕竟直接就可以上手用。如果你是比较热门的机型,比如斐讯又或是我之前说到的 Newifi D2 或是其他搭载了 MT7621 芯片的路由器,应该都不难在恩山找到具有该功能的固件。

软件

下面列出了本次教程中所有需要的软件,我使用软件的版本,以及和下载链接。

设备软件名版本下载地址
PCWiresharkPortable 3.2.0Wireshark 官网
PCNotepad++7.8.2Notepad++ 官网
PCExcelMondo 2016 x86Office Tool Plus
PCXshell6.0.0032Netsarang 家庭/学校版
路由器OpenWRTR9.6.1橙子的个人博客/蓝奏云
路由器igmpproxy0.2.1-4固件自带
路由器udpxy2016-09-18-53e4672a75..4-1固件自带
路由器luci-app-udpxygit-19.146.62144-fd6fdb2-1固件自带

下面介绍了每个软件的用途。

软件名用途
Wireshark抓包获取 IPTV 播放地址
Notepad++抓包后数据整理
Excel抓包后数据整理
XshellSSH连接路由器
OpenWRT路由器固件
igmpproxy转发IGMP流量到指定端口
udpxyIGMP流量转HTTP

抓包

首先将来自光猫的互联网和往常一样连接到路由器的 WAN 口,将 ITV 口连接到路由器的 LAN 4 口,将 IPTV 盒子连接到路由器的 LAN 3 口,最后将 LAN 1 口连接至电脑。

抓包连线

随后配置路由器的流量镜像功能,将接有 IPTV 盒子的 LAN 3 口设置为 数据包镜像源端口,将接有电脑的 LAN 1 口设置为 数据包镜像监听端口。其他 VLAN 设置无需改动。

数据镜像设置

保存并应用设置后,即可在电脑上启动 Wireshark 并监听以太网接口,随后启动 IPTV 盒子。

启动 IPTV 盒子后,应不停的有数据显示在窗口中。然后使用 IPTV 盒子遥控器,进入直播随便播放一个节目,等节目可以正常播放的时候,即可在 Wireshark 中停止捕获。同时也可关闭 IPTV 盒子,接下来就是分析数据了。

如果你没有看到任何数据跳动,或者是特别少,应注意是否端口插错,或者是在设置流量镜像的地方有错。

分析抓包数据

因为不同地区的数据样式差异较大,我这里是四川电信,其他地区可供参考

获取地址

在过滤器栏输入

1http.request.uri contains “frameset_builder.jsp”

右键第一个请求,追踪流 – HTTP 流

Wireshark 1

再弹出的新窗口中查找

1igmp://

如果你找到了类似下图 igmp://239.93.22.133:9260 的连接,那么恭喜你,你的数据抓包已经完成了最重要的定位了!(不难发现旁边也获取到了 rtsp:// 开头的时移地址)

Wireshark 2

单击连接,主窗口就会自动定位到该请求。

Wireshark 3

单击展开该请求的完整内容,查看里面的内容是不是含有 igmp:// 之类的重要数据。

Wireshark 4

右键 Line-based text data 导出分组字节流,随便取个名字保存到你能找到的地方。

Wireshark 5

用 notepad++ 打开,查看是否显示正常(前几行都是回车,会一片空白往后滑一点)。

Wireshark 6

无法获取到地址

如果你在窗口中一个数据都未获取到,那么请检查数据镜像设置或网线位置是否有错。

如果你是四川省,请仔细检查是不是,在过滤的时候复制错了或漏了内容。

如果你非四川省,可以在过滤器中输入

1http

进行检索,一条一条的看,里面总会有 igmp:// 之类获取节目单的数据(我也是这样找出来的)。

格式化数据

开始格式化之前,建议保存好原始文件。

替换完毕后可以将名字带有 PIP 的删除,这是用于机顶盒画中画功能的,说白了就是降低了分辨率的,我们就留下正常的和高清的就行了。

M3U8

此格式文件可以在 PC 中直接使用 VLC media player 和 PotPlayer 打开并播放

查找目标

1.*ChannelName=”(.*)”,UserChannelID=”(.*)”,ChannelURL=”igmp://(.*)”,TimeShift=.*

替换为

1#EXTINF:-1, \1\r\nhttp://192.168.10.1:8888/udp/\3
M3U8 替换中

将文档中被格式化了的数据,复制到新文档,并在文档首行写入

1#EXTM3U

处理完毕后效果如图,最后将文件另存为 .m3u8 即可。

M3U8 替换完毕

超级直播

此文件可以在 Android 端的超级直播使用,电脑打开 在软件里面按返回时提示的网址,可以将自定义源上传至该软件。

查找目标

1.*ChannelName=”(.*)”,UserChannelID=”(.*)”,ChannelURL=”igmp://(.*)”,TimeShift=.*

替换为

1\1,http://192.168.10.1:8888/udp/\3

再次查找目标,删除空白行

1\n\s*\r

替换为空白

全选改文本所有内容后复制,在顶部 编码 – 编码字符集 – 中文 – GB2312,确认切换到该字符集。然后删除文本所有内容,并粘贴。最后将文件保存为 txt 即可。

超级直播中文本编码格式必须为 GB2312 否则中文会乱码

修改编码字符集

处理完毕后效果如图

超级直播效果图

获取 IPTV 内网地址

四川电信是 DHCP 获取,我在网上看很多地方都是 PPPOE 所以用户名和密码你们就需要自己翻翻 IPTV 的设置拉~

这边也会使用到抓包的数据,应该就是前几个了,找到 Dynamic Host Configuration Protocol (Request) 请求,展开 Option: (60) Vendor class identifier 和Option: (12) Host Name 以及 Client MAC address 。都需要右键 – 复制 – 值 。

DHCP

如果你没有找到 DHCP 的数据包,可以通过 IPTV 盒子底部的贴纸查看。我这款盒子,最后一个就是 Option: (12) Host Name 当然了 MAC 地址上面也有,而 Option: (60) Vendor class identifier 我已经在上图给你了,就是 SCITV 。

IPTV盒子

接下来就开始路由器的设置了。

首先进入路由器设置 – 网络 – 交换机,将之前用于抓包的 数据包镜像 功能关掉。随后将插有 ITV 口的 LAN 4 在 VLAN 1 中设置为 untagged 。添加一个 VLAN 3 ,将 CPU (eth0) 设置为 tagged ,然后将 VLAN 3 的 LAN 4 设置为 untagged 。设置完毕后,效果如下图。

VLAN

进入路由器设置 – 网络 – 接口 – 添加新接口。命名为 IPTV 注意全部大写,接口协议为 DHCP 客户端 包括接口 VLAN:eth0.3 。设置如下图。

添加新接口

然后设置端口的 请求 DHCP 时发送的主机名 对应的就是之前获取的 Option: (12) Host Name,以及高级设置里面的 请求 DHCP 时发送的 Vendor Class 选项 也就是之前获取的 Option: (60) Vendor class identifier 即 SCITV,最后是 重设 MAC 地址 填入 Client MAC address 也就是你 IPTV 盒子的 MAC 地址。

还有不要勾选 使用内置的 IPv6 管理,使用网关跃点为 20 。

IPTV 接口设置

保存并应用设置后,再进入你的 WAN 接口设置,将它的 网络跃点设置为 10,否则你会无法正常使用互联网

进行到这里,你的 IPTV 接口应该就可以正常的获取到 10 开头的内网 IP 了。如果你不是四川的朋友,那么你地区的运营商可能是 PPPOE 验证或验证逻辑与我这里不同,如果你是四川的朋友,那么请你检查 之前抓包或者是在机顶盒上面看到的 Option: (12) Host Name 以及 Option: (60) Vendor class identifier 和 MAC 地址是否填写正确。如果你是通过抓包获取的数据,那应该不会有错,如果你是抄的机顶盒上面的,那么可能是因为你所在的地区与我的验证逻辑不同。

所以我强烈建议,还是通过抓包来分析 IPTV 盒子获得内网 IP 的全过程,因为不管你是 PPPOE 还是 DHCP 它都可以分析出来。

配置 igmpproxy 和 udpxy

使用 SSH 连接到路由器

修改配置文件时需要使用 SSH 连接到路由器进行修改,进入路由器设置 – 系统 – 管理权,在接口 lan 下设置端口为 22,同时打开 密码验证和允许 root 用户凭密码登录。

路由器SSH设置

下载 Xshell https://www.netsarang.com/zh/free-for-home-school/ ,官网提供了免费的供家庭和学校使用的版本,足够本次教程所用。

新建连接,名称随意,主机填上路由器的 IP。点击左侧连接中的用户身份验证,将方法设置为 Password 用户名为 root 密码则为登录 Web 端后台时的密码,我提供的固件默认是 password

30

安装 igmpproxy 和 udpxy

如果你的路由器使用的我提供的固件则无需安装,因为固件是自带该软件包的。

我建议在安装之前,在 Web 端后台的系统 – 备份/升级 中备份当前配置文件。因为我尝试了多个固件,在安装了 udpxy 后 Web 端就会无法正常使用,有很多报错。只有恢复到出厂设置才恢复正常。最后找到了一个自带 udpxy 的固件才解决我的问题。

使用 Xshell 连接到路由器后执行以下命令。

1opkg update && opkg install igmpproxy udpxy luci-app-udpxy

opkg update 是用来更新软件列表的,因为大陆对 OpenWrt 软件源地址连通性不佳,所以可能需要等很久或者是多次尝试。

查看命令返回的结果或查看系统 – 软件包中的已安装软件包中是否存在 igmpproxy udpxy luci-app-udpxy 来判断是否安装成功。

配置 igmpproxy

关于 igmpproxy 它主要是将所有来自 lan 的 IGMP 数据都传到 IPTV 接口去,为了防止组播的 udp 数据在 lan 里面乱串,影响网络效率。但是我这里在 lan 里面是无法播放 igmp:// 地址的数据的,我也不清楚是什么情况。而且据恩山网友测试,OpenWrt 的 igmpproxy 是失效的,如果有人在 lan 里面观看组播地址视频或者是使用 IPTV 盒子,都会导致局域网内的组播风暴,会导致网络堵塞。所以主要是后面的 udpxy 在起作用。

执行以下命令,一定要复制全一起粘贴进去然后再回车执行。

1 2 3 4 5 6 7 8 9 10 11 12echo “config igmpproxy option quickleave 1 config phyint option network IPTV option direction upstream list altnet 0.0.0.0/0 config phyint option network lan option zone lan option direction downstream” > /etc/config/igmpproxy

配置 udpxy

在路由器 Web 端设置 – 服务 – udpxy 中,勾选启动、Respawn、状态。将端口设置为 8888,将 Source IP/Interface 设置为 IPTV 接口的 ifname,也就是在路由器 Web 端设置 – 网络 – 接口 中 IPTV 接口图标下方的小字。在我这里为 eth0.3

udpxy

保存并应用后,打开 http://路由器IP:8888/status 查看 udpxy 运行是否正常。当你在播放视频的时候,这个页面也会显示正在播放客户端的 IP 与它的实时流量。

udpxy status

然后你就可以在 PotPlayer 和 VLC media player 播放之前处理好的连接了,可以直接打开 M3U8 播放列表,也可以播放一个单独的地址。

例如你获取的地址为 igmp://239.93.22.6:6666

那么使用 udpxy 转换后的地址为 http://192.168.10.1:8888/udp/239.93.22.6:6666

如果你仍然无法播放,请将下面的防火墙规则添加进 /etc/config/firewall

如果你会使用 vim 那么直接在 Xshell 里面修改即可,如果你不会可以在 Xshell 窗口中点击 新建文本传输(Ctrl+Alt+F),将该文本下载到本地使用 notepad++ 进行修改,再上传上去。请注意你的防火墙配置可能已经存在,请你仔细的排查每一个设置项。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22config rule option name ‘Allow-IGMP’ option target ‘ACCEPT’ option family ‘ipv4’ option src ‘iptv’ option proto ‘IGMP’ config rule option name ‘Allow-UDP-udpxy’ option target ‘ACCEPT’ option src ‘iptv’ option proto ‘udp’ option dest_ip ‘224.0.0.0/4’ config rule option name ‘Allow-UDP-igmpproxy’ option target ‘ACCEPT’ option family ‘ipv4’ option src ‘iptv’ option proto ‘udp’ option dest ‘lan’ option dest_ip ‘224.0.0.0/4’

如何在外播放家中 IPTV 源

首先需要公网 IP,你可以在 在路由器 Web 端设置 – 网络 – 接口中,查看 WAN 获得的 IP 是否与你在 https://ip.sb/ 看到的 IP 一致。如果不一致的话,可以向电信人工客服反映「我需要公网 IP」即可。

在路由器 Web 端设置 – 网络 – 防火墙 – 端口转发 中,添加协议为 tcp,外部区域为 wan,外部端口为 8888,内部 IP 地址为 192.168.10.1,内部端口为 8888 的规则即可。

端口转发

那么你在外要播放的话,只需要把路由器的 IP 地址换为你的公网 IP 即可。

例如你的本地播放地址为 http://192.168.10.1:8888/udp/239.93.22.6:6666

那么当你的公网 IP 为 125.60.90.40 时

你的互联网播放地址则为 http://125.60.90.40:8888/udp/239.93.22.6:6666

因为公网 IP 都在变,你可以使用 DDNS 也就是 动态 DNS 使用域名来防火,你可以使用路由器内自带的服务商。如果你和我一样将域名放置于 DNSPod 管理,也可以使用我制作的 DdnsWithDnspod 使用一个子域名来专供 IPTV 的播放。

结语

首先非常感谢各位前辈,我也是通过阅读现有的教程总结出来的。本文用了接近 5000 字,详细的介绍了有关 IPTV 与互联网的融合,希望能够对需要的朋友有帮助。因为本人能力有限,文中难免有一些问题也希望有发现的朋友能够及时的指出,我将感激不尽。

参考

恩山无线论坛@鲲翔 – IPTV融合进普通网络一般步骤

恩山无线论坛@footlog – K2P/K2 padavan双线接入,宽带+IPTV,udpxy+xupnpd详细设置

恩山无线论坛@lcsuper – 小白的IPTV折腾教程(3)—双网融合、IPTV共享

恩山无线论坛@kangtao022 – 最新四川南充电信IPTV组播地址,及整理出地址列表的方法!

恩山无线论坛@橙子_MAX – 【附固件】全网首发,新三OpenWRT路由器IPTV内网融合视频教程

橙子的个人博客 – IPTV内网融合,实现任意设备观看IPTV

恩山无线论坛@angelkyo – 四川电信DHCP抓包能获取到IP,但是抓不到option60信息

恩山无线论坛@wengmingao – 简单的的IPTV 0成本抓包!

恩山无线论坛@莫问归期 – 在openwrt里安装udpxy后主题界面就会乱

群晖用Jellyfin搭建媒体服务器

一、安装Jellyfin

1. 首先,打开群晖的Docker套件,然后点击“注册表”,并且搜索“jellyfin”,然后双击下载该镜像。

接下来会提示版本,我们默认选择“latest”就可以啦

2. 待镜像下载的功夫,我们先回到群晖的 File Station 在docker文件夹下新建“jellyfin”目录。

此目录建立的目的是为了后续将此文件夹装载到我们的容器中,我们jellyfin后续的一些缓存呀、配置呀、封面呀等等东西都会储存在这个文件夹中。

另外,下图所示的video文件夹是我们用于存放电影、剧集、音乐等源文件的地方,下面的步骤中也会装载到我们的容器中的。(当然文件夹的名字看你喜好,这里只做演示)

3. 接下来回到Docker中,单击“映像”,并双击我们的jellyfin映像。然后点击高级设置。

4. 映像的 [端口设置] 选项卡设置如下图:

  • 本地端口8920|容器端口8920
  • 本地端口8096|容器端口8096

这里的8096端口和8920端口,分别是用于jellyfin的http和https访问使用。我们演示用默认的端口,当然你也可以自定义。

5. 映像的 [卷] 选项卡,我们点击“添加文件夹”,并入下图设置。

这个步骤就是我们之前说的,将NAS的文件夹装载到容器中,video文件夹是用作媒体的储存,docker/jellyfin 指定了两次,是因为配置文件和缓存我们放在一起就可以啦。

6. 映像的 [高级设置] 选项卡,勾选“启动自动重新启动”

7. 上面的所有步骤都搞定之后,我们勾选“向导完成后运行此容器”,并点击“应用”

恭喜你,至此我们的jellyfin安装过程中的群晖NAS配置部分就已经全部完成。如下图所示,我们已经可以看到容器已经在运行啦。

二、 Jellyfin的设置

接下来,我们通过通过浏览器打开:内网的IP+8096端口 没错你看到的就是Jellyfin的初始化页面。我们按照我下图提示的步骤一步一步设置,并且一步一步点击“Next”就可以啦。过程很简单照做即可。

选择语言
设置默认用户名和密码
这里暂不添加媒体库,直接点击Next
选择语言和国家
保持默认,直接Next
点击Finish完成初始化

经过上面一顿猛如虎的操作之后,初始化也就完成了。接下来继续

1. 点击右上角的图标,接着点击“媒体库”,点击“添加媒体库” 。

2. 选择类容类型,这里根据你的片源的类型。选择语言和国家。最后点击那个文件夹的+号 来绑定媒体文件夹。

3. 在弹出的页面中,选择/video 就可以啦。记得这个文件夹不?没错就是我们上面步骤中装载到映像里的哟~别搞错

4. 回到主页,就可以看到你刚刚添加的媒体库了。但是如果里面还没有看到影片?那么确定你把影片已经放到NAS的video文件夹中了。如果还是没看到?不要紧,我们点击“刷新元数据”就可以啦。

5. 电影是加载出来了,但是没有封面怎么办?点击影片的“识别”,并录入电影名字就可以选择封面咯。

最后~以下是播放页面。各种浏览器都可以愉快的播放。另外安卓有客户端。苹果嘛再等等。

用群晖WebStation搭建另一个youtube-dl的webui汉化版下载youtube视频

项目地址:https://github.com/oldiy/youtube-dl-webui-cn

下载地址:https://github.com/oldiy/youtube-dl-webui-cn/archive/master.zip

群晖安装WebStation

之后会多出一个web文件夹,下载后上面的项目,解压放到web文件夹里

打开 webstation,如图设置

新建虚拟主机,如图设置

修改配置文件,如图设置

打开网页 http://<群晖IP>:260 即可下载

本项目可以放到任何linux服务器上使用,如果遇到不能下载问题,直接更新目录下的youtube-dl文件即可。

用群晖玩游戏?没错!快使用Docker自建一个web版的dos游戏库!

DOS游戏网页版项目:https://github.com/rwv/chinese-dos-games

官方体验地址:https://dos.zczc.cz/

目前发现一个问题,载入游戏时候部分下载软件会监控下载,自动拦截载入游戏,所以遇到这种问题时,请关闭下载软件的监视功能,或者设置你的网站域名为不监视即可!如果遇到这种情况不能进入游戏,可以关闭下载软件监控后,按ctrl+F5 强制刷新网页即可!

该项目可以在web页面运行dos游戏,后来没事做放到docker里面来跑,也成功了,只是源文件包含1900个左右的游戏,大小36G左右,由于太大做成docker不现实,所以fork出来精简了一部分,只保留了40多个经典的DOS游戏,现在已经上传到docker hub,喜欢怀旧的小伙伴可以去玩耍一下了!支持存档!

好了,我也不会说话,下面开始群晖使用教程

群晖打开注册表,搜索oldiy

找到dosgame-web-docker双击下载

之后到镜像内双击安装,如图操作

映射端口——应用即可

如果群晖有防火墙,记得防火墙放行端口262

之后打开网页  http://<群晖IP or 域名>:262

开始玩耍吧!

到这里已经足够普通玩家体验了!

高级内容请继续


如果你觉得40多个游戏不够玩,或者有收集癖好,那么我提供一下完整的游戏下载列表,大家可以自己把游戏下载之后,放到docker里面

现在讲一下方法,游戏文件保存在docker容器的 /app/static/games 里面

首先我们需要把games目录拷贝到你的群晖里

那么讲一下用法吧,以下教程全部在群晖内实现

首先ssh登录群晖

1sudo -i

获取管理员权限

1docker ps

列出全部docker容器

记住dosgame-web-docker的ID 前4位

回到群晖,新建一个文件夹

右键属性

查看文件夹真实地址,并记住

回到SSH

1docker cp 2197:/app/static/games /volume1/docker/dosgame

输入以上命令,拷贝容器内文件到本机

回到群晖查看文件,具体文件作用看图

打开群晖docker,容器关闭,然后编辑,映射一个目录,如下图

应用后,重启容器就可以了

群晖NAS能做什么?

一、NAS是什么
NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上具备资料存储功能的装置,为网络中的Windows / Linux / Mac OS 等各种不同操作系统的设备提供文件共享和数据备份等功能。

二、关于群晖(Synology)
群晖公司(Synology)于2000年创立于台湾,一家提供网络附加存储设备 (NAS)、IP 监控解决方案以及网络设备的企业。(黑群)常见的型号有:DS3615xs、DS3617xs、DS916+、DS918+等型号。

三、群晖能做什么
1、下载类:
①http、BT和电驴下载:安装Download Station套件。
※移动端:手机可装DS Get应用远程推送下载。

②迅雷远程下载:套件中心安装“玩物下载”,安装后在浏览器打开http://群晖:8283/owdl/index.html这个地址,在网页里添加下载。

③百度云下载:通过docker安装相应的容器来实现,经测试:百度超级会员可以满速,非超级会员下载比用百度自家的客户端要快多了。

④BitTorrent Sync(Resilio Sync)下载:BitTorrent Sync已改名Resilio Sync,可以直接在套件中心安装,传说中的神Key在手,资源我有,最新的电影、电视剧都可以通过它下载。

⑤Aria2下载:Docker装Aria2 With WebUI实现,可以批量下载115网盘,BT种子等。
※浏览器衍生玩法:火狐可装115助手、网盘助手、Aria2、Send to Aria2等拓宽Aria2的玩法;
※移动端:安卓手机可装Aria2App远程推送下载。

⑥91下载:91是神马?哈哈,作为老司机的你肯定懂的!

⑦人人影视下载:通过Docker安装容器实现,可下载人人影视的最新影视资源。

⑧FlexGet的RSS订阅:想全自动通过RSS订阅进行PT下载一定要看的!

2、RSS抓取类
①Selfoss:通过Docker安装容器实现,可以添加RSS源以web方式阅读。

3、影音娱乐类
①Audio Station:套件装Audio Station实现,用于远程在线播放群晖里的歌曲。
※手机/电视衍生玩法:手机装DS Audio应用在线听。

②Video Station:套件装Video Station实现,用于远程在线播放群晖里的视频;
※PC衍生玩法:在Windows系统安装DS Video应用在线看;
※手机/电视衍生玩法:安装DS Video的APP(有安卓手机版、苹果手机版、苹果ipad版和安卓TV版)在线看。

③Photo Station/Moments:套件装Photo Station/Moments实现,用于远程在线浏览群晖里的图片;
※PC衍生玩法:Windows安装DS Photo应用或网页登录Moments在线看;
※手机/电视衍生玩法:手机装DS Photo/Moments应用在线看。 

④Kodi:电视装Kodi应用通过Samba等方式,可以用海报浏览的方式显示并播放群晖里的视频。

⑤Youtube-DL:Docker装Youtube-dl实现,下载Youtube视频网站的视频。

⑥emby:一个相当于汇集Audio Station+Video Station+Photo Station+IPTV于一身的视频伺服中心。

4、办公类
①Cloud / Driver:套件中心安装Cloud / Driver实现,可让群晖与电脑、云盘、手机互相备份和同步数据。
※PC衍生玩法:电脑装Cloud / Driver,从此不用再把公司里的笔记本搬回家;
※移动端:手机装DS Cloud/Driver,主要用于同步手机里的照片和数据备份等。

②Note Station:套件装Note Station实现,可以理解为本地搭建版的印象笔记,完全免费;
※浏览器衍生玩法:谷歌浏览器装Synology Web Clipper和Synology Web Station;
※移动端:手机装DS Note。
③Surveillance Station:套件装Surveillance Station实现,可通过家里的摄像头(需要群晖支持的摄像头)实时监控家里的情况。
※移动端:手机装DS Cam。
④Active Backup for Business:可以把你的电脑、服务器以及ESXI虚拟机进行备份和还原。备份的过程中备份机不需要关机,可以保留多个备份版本并且不占用过多的存储空间。
⑤MailPlus Server邮箱系统:利用群晖搭建一个属于自己的邮箱系统,配合自己的域名开设一个“企业邮箱”。

5、网站搭建类
①博客系统:可以利用群晖WebStation套件,架设Wordpress、Typecho、Zblog等博客系统源代码进行安装,建立个人网站或者博客;
②论坛系统:架设Discuz!、PHPWind、phpBB等论坛;
③CMS系统:架设帝国、织梦等内容管理系统;
④影视系统:架设米酷、海洋、苹果等影视系统;
⑤图书系统:架设Calibre等图书管理系统或者小说在线阅读系统;
⑥导航页:开设的网站多了,还有加上群晖自己的应用外网访问,记不住怎么办?可以搭建一个导航页!;
⑦网盘系统:利用群晖搭建一个属于自己的网盘系统,可以利用NAS的空间或者利用微软OneDrive网盘的空间,建立自己的下载站;
⑧小程序类:搭建微信小程序、QQ小程序、支付宝小程序、头条小程序、抖音小程序等等各种各类的小程序。

6、智能家居类
①HomeKit:苹果的智能家居系统;
②HomeAssistant:一款基于 Python 的智能家居开源系统。
③远程监控:添加USB摄像头或者网络摄像头,甚至添加一台安卓智能手机,都可以实现监控和录像的目的。

7、玩游戏类
①网络游戏:架设“传奇”、“御剑情缘”、“新蜀山”等等,拉上三五好友、几个同事、几个同学找回当年“江湖争霸”的雄风!
②休闲游戏:架设棋牌类等益智休闲游戏,无聊的时候打发时间。

在PVE下用 AdGuard Home搭建一个带广告过滤的私有DNS服务器及优化部署

很多人可能会问:AdGuard Home是干嘛用的?假如我们把整个互联网比喻成一个城市的供水,每个地区自来水厂提供的水质和你所在管网末端位置的不同,有些家庭会明智的选择使用前置净水器,可以解决管道中的二次污染、软化水质、阻止水垢、防止锈蚀、保护净水器,当然还有太阳能和燃气热水器等等,但最终享受干净水的是人。精致的家庭还会使用厨下式厨余垃圾处理器,而很多的家庭也许都不知道什么是前置净水器、什么是厨余处理器。互联网和供水一样,有大带宽和小带宽,有管网污染的问题,有被政府监控和被黑客偷窥的问题,还有烦人的广告问题,无论是视频前和视频中的广告,所以在入户光猫之后的主路由器上安装并使用私有DNS服务器(AdGuard Home),就可以有助于“清洗流量”。
       根据AdGuard Home 官网介绍,AdGuard Home 是一款全网广告拦截与反跟踪软件。在您将其安装完毕后,它将保护您所有家用设备,同时您不再需要安装任何客户端软件。随着物联网与连接设备的兴起,掌控您自己的整个网络环境变得越来越重要。
       简单的点讲就比如Google的8.8.8.8,阿里云的223.5.5.5,114的114.114.114.114,还有Cloudflare的1.1.1.1,这些都是提供DNS服务的公共DNS服务器。而AdGuard Home在给我们提供DNS服务的同时还提供去广告的功能,这就有点意思了吧~~

       博主是用PVE作为宿主机的环境,所以就在PVE系统里面安装了这个AdGuard Home,来看看怎么安装和使用吧。

一、安装教程

1、下载AdGuardHome_PVE-LXC.tar.gz镜像文件:打开下载地址https://dl.gxnas.com,进入“Proxmox-VE(PVE虚拟平台)”文件夹,找到“AdGuardHome_PVE-LXC.tar.gz”,右键复制下载链接到迅雷下载;

2、通过SSH工具(本教程采用WinSCP),把下载的“AdGuardHome_PVE-LXC.tar.gz”,上传到PVE系统下的“/var/lib/vz/template/cache”里面;

3、通过网页访问PVE后台,点击右上角“创建CT”;

4、创建:LXC容器,“一般”标签栏的输入以下信息:
主机名称:自己随便写
密码:自己设置
确认密码:同上
然后点下一步

5、点“模板”标签栏的“模版”下拉菜单,选择“AdGuardHome_PVE-LXC.tar.gz”,下一步;

6、“根磁盘“标签设置磁盘大小2G,下一步;

7、”CPU“标签设置1核,下一步;

8、”内存“标签设置内存1024M ,交换分区用默认的512,下一步;

9、”网络“标签的IPv4可以根据自己的内网设置静态IP(本教程内网是192.168.1.X的号段,所以设置192.168.1.2/24),IPv6设置DHCP,下一步;

10、“DNS”标签这里不需要设置,直接下一步;

11、“确认”标签,最后确认一下信息,如果正确无误就勾选左下角的“创建后启动”再点“完成”。

二、相关的设置
1、回到PVE系统的“数据中心”,找到刚刚建立的AdGuard容器,点它进入控制台,输入登录的用户名root,回车,再输入之前设置的密码,输入ip addr回车,检查一下显示的IP地址是否与刚才安装时设置的IP地址一致;

2、输入ping baidu.com,回车,检查容器能否连通外网;有外网IP地址返回的表示外网连接正常,按一下Ctrl+C结束测试。

3、在局域网电脑的浏览器地址栏输入刚才安装AdGuardHome设置的IP:3000(比如我的是192.168.1.2:3000);

4、开始配置;

5、网页管理界面,我们用默认的端口,不需要更改,下一步;

6、身份认证,需要自己设置用户名和密码,下一步;

7、下一步;

8、打开仪表盘;

9、主界面是这样的;

10、点最上面的菜单栏“设置”-“常规设置”,这四个选项根据自己要求设置(博主勾了1、2、4),然后拉到下面,点保存;

11、点最上面的菜单栏“设置”-“DNS设置”,上游DNS这栏输入(由于每个人使用的宽带不同,所以上游DNS使用哪个,请根据自己的情况填写,后面会讲):

tls://dns.google
tls://1.1.1.1
tls://1.0.0.1

然后拉到下面点应用,会看到系统提示“上游DNS已更新”;

12、点最上面的菜单栏“过滤器”,“添加过滤器”,名称随意设置,地址输入https://hosts.nfz.moe/127.0.0.1/full/hosts,点“添加过滤器”;

13、看到系统提示“网址添加成功”后,点打叉关掉提示;

14、点“检查更新”;

15、系统更新完成会提示“所有过滤器已更新到最新”;

三、更改网关/路由的DNS
由于每个人使用的网关/路由都各有不同,因此这里不做具体描述。请自行把内网的DNS主服务器IP地址设置成我们刚刚安装的AdGuardHome的内网IP地址,DNS副服务器设置为了其他公共的DNS服务器IP(拒绝使用运营商的DNS)。博主的网关是自己编译的软路由openwrt X64的版本,具体的设置如下,大家借鉴一下吧。

四、最后来看看效果如何

五、官方网站及项目地址
1、AdGuard官网:https://adguard.com/
2、AdGuardHome项目地址:https://github.com/AdguardTeam/AdGuardHome


AdGuard Home 优化部署

一、上游DNS设置

1、不使用ISP默认DNS的好处是可以避免ISP通过DNS分析和掌握你的上网行为。我们把上游DNS更换成DNS over TLS的:

tls://dns.adguard.com
tls://dns.quad9.net
tls://dns.google
tls://1.1.1.1
tls://1.0.0.1

2、当然,你也可以使用其他的公共DNS,不过国内公共的DNS暂不支持DNS over TLS(博主用的是223.5.5.5),比如:

223.5.5.5
223.6.6.6
114.114.114.114
114.114.115.115
119.29.29.29
119.28.28.28

3、如果你想启用ipv6的DNS,可以添加以下几个(但是启用ipv6后,不能过滤视频中的广告):

2409:8028:2000::1111
2409:8028:2000::2222
2620:0:ccc::2
2620:0:ccd::2

二、过滤器

虽然AdGuardHome内置了几条广告过滤规则,但在这些规则在中国感觉有点水土不服。如果要想完美的实现广告过滤,还需要自己添加规则。AdGuard Home 兼容 Adblock 过滤规则语法,你可以使用一些比较知名的 Adblock 过滤规则。目前好用的过滤规则还是有很多的,请酌情选择(1-4为系统自带的):

1、AdGuard Simplified Domain Names filter(系统自带)

https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt

2、AdAway(系统自带)

https://adaway.org/hosts.txt

3、hpHosts – Ad and Tracking servers only(系统自带)

https://hosts-file.net/ad_servers.txt

4、MalwareDomainList.com Hosts List(系统自带)

https://www.malwaredomainlist.com/hostslist/hosts.txt

5、hosts.nfz.moe

https://hosts.nfz.moe/127.0.0.1/full/hosts

6、EasyList China

https://easylist-downloads.adblockplus.org/easylistchina.txt

7、EasyPrivacy

https://easylist-downloads.adblockplus.org/easyprivacy.txt

8、CJX’s Annoyance List

https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjx-annoyance.txt

9、CJX’s EasyList Lite

https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjxlist.txt

10、Adblock-Plus-Rule

https://raw.githubusercontent.com/xinggsf/Adblock-Plus-Rule/master/ABP-FX.txt

11、ChinaList

http://tools.yiclear.com/ChinaList2.0.txt

如果你觉得过滤得还不够,也可以在“自定义过滤器规则”按照以下过滤规则自己编写:

||example.org^ – 拦截 example.org 域名及其所有子域名
@@||example.org^ – 放行 example.org 及其所有子域名
127.0.0.1 example.org – 将会把 example.org(但不包括它的子域名)解析到 127.0.0.1
! 注释符号,表示这是一行注释
# 这也是注释符号,同样表示这是一行注释
/REGEX/ – 正则表达式模式

具体请参考《官方说明

三、配置文件调整

AdGuard Home 所有的参数配置都保存在一个名为 AdGuardHome.yaml 的配置文件中。这个配置文件默认路径通常为 AdGuard Home 二进制文件 AdGuardHome 所在的目录,比如:/root/AdGuardHome/AdGuardHome.yaml。这里我们只需调整以下两个参数,就是可以明显提升 AdGuard Home 的 QPS 能力。

ratelimit : DDoS 保护,客户端每秒接收的数据包数。默认值是 20,建议禁用该参数(将值改为 0)。
blockedresponsettl : TTL 缓存时间,默认值是 10,建议设置为 60 。